一、概述
Ubuntu版本: Ubuntu 16.04.7
Oracle版本:linux.x64_11gR2_database
二、创建oracle账号
# 创建一个用户组oinstall:
groupadd oinstall
# 创建一个用户组dba:
groupadd dba
# 创建一个用户主目录:
mkdir -p /home/sawl
#创建用户sawl 到主组oinstall,副组dba,主目录/home/sawl:
useradd -g oinstall -G dba -d /home/sawl sawl
#参 数:
#-c 加上备注文字。备注文字会保存在passwd的备注栏位中。
#-d 指定用户登入时的启始目录。
#-D 变更预设值.
#-e 指定帐号的有效期限。
#-f 指定在密码过期后多少天即关闭该帐号。
#-g 指定用户所属的群组。
#-G 指定用户所属的附加群组。
#-m 自动建立用户的登入目录。
#-M 不要自动建立用户的登入目录。
#-n 取消建立以用户名称为名的群组.
#-r 建立系统帐号。
#-s 指定用户登入后所使用的shell。
#-u 指定用户ID。
#设置密码:
passwd sawl
#123456
#查看用户sawl的添加情况
id sawl
# uid=1000(sawl) gid=1000(oinstall) groups=1000(oinstall),1001(dba)
#查看sawl所属的组:
groups sawl
#把/home/sawl的所有者改为sawl
chown -R sawl:oinstall /home/sawl
#为sawl用户配置shell权限,追加到文件后面即可
vi /etc/profile
if [ $USER = "sawl" ] ; then
if [ $SHELL = "/bin/ksh" ] ; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
# 更新profile生效
source /etc/profile
#赋予sawl用户执行sudo的权限
vi /etc/sudoers
#找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)
#加入一行
sawl ALL=(ALL) ALL
#可以sudoers添加下面四行中任意一条
#xxx ALL=(ALL) ALL
#%xxx ALL=(ALL) ALL
#xxx ALL=(ALL) NOPASSWD: ALL
#%xxx ALL=(ALL) NOPASSWD: ALL
#第一行:允许用户youuser执行sudo命令(需要输入密码).
#第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
#第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
#第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码
#添加用户内核限制(XXX为你当前用户名,我这里是sawl)
cd /etc/security/
sudo vim limits.conf
#将以下内容加到文件后面
sawl soft nproc 2047
sawl hard nproc 16384
sawl soft nofile 1024
sawl hard nofile 65536
sawl soft stack 10240
#检查/etc/pam.d/login (如果没有就自己加一行)
cat /etc/pam.d/login | grep pam_limits.so
#session required pam_limits.so
#检查/etc/pam.d/su (如果没有就自己加一行)
cat /etc/pam.d/su | grep pam_limits.so
#session required pam_limits.so
三、登录阿里云服务器安装系统图形界面
#登录阿里云,远程链接 (VNC),输入账号密码
#第一步:更新一下源
$ apt-get update
#第二步
#下载Gnome图形化界面
$ apt-get install gnome-shell ubuntu-gnome-desktop
# 按Y即可
#第三步
#下载完成
$ apt-get install unity-tweak-tool gnome-tweak-tool
# 按Y即可
#对桌面进行一定的配置,会出现一个紫色的框框,点回车即可
#最后,重启
reboot
#切换用户
su - sawl
四、安装JDK
#安装JDK
sudo apt-get update
sudo apt-get install openjdk-8-jdk
#编辑profile
cd /etc
sudo vim profile
#在文件中加入
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#更新文件生效
source /etc/profile
#测试jdk是否安装成功
java -version
#输出
#openjdk version "1.8.0_292"
#OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10)
#OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
五、安装依赖
#sudo apt-get -y install lesstif2
#sudo apt-get -y install lesstif2-dev
#这两个包是32位包,需要换源安装:
# 切换root账号
su
#执行
cd /etc/apt/
cd /etc/apt/sources.list.d/
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" > ia32-libs-raring.list
apt update
apt-get -y install lesstif2 lesstif2-dev
#把源换回来
rm -rf ia32-libs-raring.list
apt update
#退出root账户
exit
# 安装其他依赖
sudo apt-get -y install automake autotools-dev binutils bzip2 elfutils expat gawk gcc gcc-multilib g++-multilib lib32ncurses5 lib32z1 ksh less lib32z1 libaio1 libaio-dev libc6-dev libc6-dev-i386 libc6-i386 libelf-dev libltdl-dev libxm4 libodbcinstq4-1 libodbcinstq4-1:i386 libpth-dev libpthread-stubs0-dev libstdc++5 make openssh-server rlwrap rpm sysstat unixodbc unixodbc-dev unzip x11-utils zlibc
#或者一个一个安装
#sudo apt-get install automake
#sudo apt-get install autotools-dev
#sudo apt-get install binutils
#sudo apt-get install bzip2
#sudo apt-get install elfutils
#sudo apt-get install expat
#sudo apt-get install gawk
#sudo apt-get install gcc
#sudo apt-get install gcc-multilib
#sudo apt-get install g++-multilib
#sudo apt-get install ia32-libs
#sudo apt-get install ksh
#sudo apt-get install less
#sudo apt-get install lesstif2
#sudo apt-get install lesstif2-dev
#sudo apt-get install lib32z1
#sudo apt-get install libaio1
#sudo apt-get install libaio-dev
#sudo apt-get install libc6-dev
#sudo apt-get install libc6-dev-i386
#sudo apt-get install libc6-i386
#sudo apt-get install libelf-dev
#sudo apt-get install libltdl-dev
#sudo apt-get install libmotif4
#sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
#sudo apt-get install libpth-dev
#sudo apt-get install libpthread-stubs0
#sudo apt-get install libpthread-stubs0-dev
#sudo apt-get install libstdc++5
#sudo apt-get install lsb-cxx
#sudo apt-get install make
#sudo apt-get install openssh-server
#sudo apt-get install pdksh
#sudo apt-get install rlwrap
#sudo apt-get install rpm
#sudo apt-get install sysstat
#sudo apt-get install unixodbc
#sudo apt-get install unixodbc-dev
#sudo apt-get install unzip
#sudo apt-get install x11-utils
#sudo apt-get install zlibc
六、配置环境
#用下面的命令查询系统的参数(将查询结果复制出来备用)
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep aio-max
/sbin/sysctl -a | grep ip_local_port_range
/sbin/sysctl -a | grep rmem_default
/sbin/sysctl -a | grep rmem_max
/sbin/sysctl -a | grep wmem_default
/sbin/sysctl -a | grep wmem_max
/sbin/sysctl -a | grep shmall
/sbin/sysctl -a | grep shmmax
/sbin/sysctl -a | grep shmmni
sudo vi /etc/sysctl.conf
#将查询出来的参数填入下面对应的地方
kernel.sem = 32000 1024000000 500 32000
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
kernel.shmmni = 4096
fs.file-max = 1607300
fs.aio-max-nr = 65536
net.ipv4.ip_local_port_range = 32768 60999
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.core.wmem_default = 212992
net.core.wmem_max = 212992
#更新内核参数
cd /etc/
sudo sysctl -p
#创建文件夹
mkdir /home/sawl/tools
mkdir /home/sawl/tools/oracle11g
#非必须
mkdir /home/sawl/tools/oraInventory
chmod -R 775 /home/sawl/tools/oraInventory
mkdir -p /home/sawl/tools/oracle11g/product/11.2.0/dbhome_1
chmod -R 775 /home/sawl/tools/oracle11g/product/11.2.0/dbhome_1
#配置oracle的环境变量
sudo vim /etc/profile
#将下面的内容加到文件后面
export ORACLE_BASE=/home/sawl/tools/oracle11g
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export NLS_LANG=.AL32UTF8
export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64
#更新文件生效
source /etc/profile
#欺骗oracle的安装设置
sudo mkdir /usr/lib64
sudo ln -s /etc /etc/rc.d
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
#切换root账户
su
#执行
echo 'Red Hat Linux release 5' > /etc/RedHat-release
exit
七、正式安装
# 百度盘链接: https://pan.baidu.com/s/194FRD323dDZ9tH5ZGotk_w 密码: 5iw5
# 包括两个安装包、一个客户端软件、一个PL/SQL
# 如果运行./runInstaller检查分区有错误,可参考这段,否则略过
# 增加了swap分区,通过。
su
dd if=/dev/zero of=/home/swapfile bs=1M count=512
mkswap /home/swapfile
swapon /home/swapfile
#然后修改 /etc/fstab,加上:
vim /etc/fstab
/home/swapfile swap swap defaults 0 0
#前期条件准备好了,接下来正式开始安装oracle,将oracle的安装包下载到oracle11g文件夹下
# 进入到阿里云远程控制VNC连接服务器
cd /home/sawl/tools/oracle11g
#我这里不去下载了,本地拷贝两个安装包到服务器
# 注意 压缩包所属用户是sawl而不是root
# scp -r linux.x64_11gR2_database_* sawl@*.*.*.28:/home/sawl/tools/oracle11g
解压压缩包
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
# 执行安装
# 登录阿里云,远程链接 (VNC),打开一个新的Teaminal,执行
cd /home/sawl/tools/oracle11g/database
./runInstaller -jreLoc /usr/lib/jvm/java-8-openjdk-amd64/jre
# ./runInstaller
image.png
image.png
image.png
image.png
image.png
image.png
#注意:
#这里的密码最好还是要大小写都有,有数字和字母,符合oracle命名规则;
#网上很多人说这个地方简单也无所谓,我刚开始也确实成功过一次;
#如果简单密码有可能什么提示都没有,一直卡在这(我是卡住了,后来才发现就是因为密码简单没给过,很伤),也有可能继续执行;
# Sawl123456
image.png
image.png
image.png
#这里需要新开一个terminal 执行一个命令
cd /tmp/CVU_11.2.0.1.0_sawl/
sudo ./runfixup.sh
image.png
image.png
image.png
image.png
image.png
image.png
image.png
#新开一个terminal窗口(需要在阿里云远程能打开视图的)
su
cd /home/sawl/tools/oracle11g/product/11.2.0/dbhome_1/sysman/lib/
gedit ins_emagent.mk
#会弹出一个窗口如下图:
image.png
#修改为:-lnnz11
image.png
image.png
#新开terminal,输入下面4个命令
sudo sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' /home/sawl/tools/oracle11g/product/11.2.0/dbhome_1/network/lib/env_network.mk
sudo sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' /home/sawl/tools/oracle11g/product/11.2.0/dbhome_1/rdbms/lib/env_rdbms.mk
sudo sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' /home/sawl/tools/oracle11g/product/11.2.0/dbhome_1/bin/genorasdksh
sudo sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' /home/sawl/tools/oracle11g/product/11.2.0/dbhome_1/srvm/lib/ins_srvm.mk
image.png
时间稍长,需要大概几分钟
image.png
image.png
image.png
image.png
八、测试
#切换用户
su - sawl
# 如果下面的为空,可以进入root,执行下
# source /etc/profile,因为最开始已经配过环境变量了,可能重启失效了
#检查参数
echo $ORACLE_BASE
#/home/sawl/tools/oracle11g
echo $ORACLE_HOME
#/home/sawl/tools/oracle11g/product/11.2.0/dbhome_1
echo $PATH
#/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/sawl/tools/oracle11g/product/11.2.0/dbhome_1/bin/:/home/sawl/tools/oracle11g/product/11.2.0/dbhome_1/lib64
#启动监听
lsnrctl start
#或者
cd $ORACLE_HOME/bin
./lsnrctl
start
image.png
#启动服务
sqlplus /nolog
conn / as sysdba
#Connected to an idle instance.
startup
#测试
select 1 from dual;
# 1
#----------
# 1
#到这里说明oracle可以用了
#关闭oracle
shutdown immediate
#不带参数的shutdown很长时间都没反应,可以用shutdown immediate
#quit退出
quit
#关闭监听
lsnrctl stop
#LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 08-APR-2022 17:49:16
#Copyright (c) 1991, 2009, Oracle. All rights reserved.
#Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
#The command completed successfully
九、外部连接数据库
ifconfig 得到ip --> inet addr: 172.17.229.222
#到ORACLE_HOME 下去修改listener.ora和tnsnames.ora
cd /home/sawl/tools/oracle11g/product/11.2.0/dbhome_1/network/admin
#备份这两个文件
cp listener.ora listener.ora_copy
cp tnsnames.ora tnsnames.ora_copy
vi listener.ora
#localhost 换成服务器的ip地址
#LISTENER =
# (DESCRIPTION_LIST =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
# (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.229.222)(PORT = 1521))
# )
# )
#ADR_BASE_LISTENER = /home/sawl/tools/oracle11g
vi tnsnames.ora
#localhost 换成服务器的ip地址
#LISTENER_ORCL =
# (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.229.222)(PORT = 1521))
#ORCL =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.229.222)(PORT = 1521))
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME = orcl)
# )
# )
#重新启动监听
lsnrctl start
image.png
#重新启动服务
sqlplus /nolog
conn / as sysdba;
startup;
#给scott解锁
alter user scott account unlock;
#密码默认是tiger,不建议改
#给system解锁
alter user system account unlock;
alter user system identified by manager;
image.png
连接成功;
到这里oracle安装完成;
#遇到问题1:
checking swap space: 0MB available,150MB required
#解决方法:
#增加了swap分区,通过。
su
dd if=/dev/zero of=/home/swapfile bs=1M count=512
mkswap /home/swapfile
swapon /home/swapfile
#然后修改 /etc/fstab,加上:
vim /etc/fstab
/home/swapfile swap swap defaults 0 0
#遇到问题2:
# 报错ORA-01012: not logged on
#解决办法:
kill oracle 进程 或者关掉oracle
ps -ef|grep ora_dbw0_$ORACLE_SID
kill -9 pid
#重新启动oracle
sqlplus sys as sysdba
startup;
参考:
https://www.cnblogs.com/zzw1024/p/13056762.html
https://www.cnblogs.com/sunshine5683/archive/2018/11/13/9953672.html
https://blog.csdn.net/sinat_16643223/article/details/116377096
https://www.jianshu.com/p/85aa661563f8
https://blog.csdn.net/qq_25067905/article/details/70054672
https://blog.csdn.net/Xiaolei233/article/details/116105170
https://blog.csdn.net/weixin_36482670/article/details/116486193
网友评论