1、VMware
安装Ubuntu20
2、配置安装前环境
前面教程已有ubuntu镜像和JDK下载地址,这里就只给出本次教程会用到的
csdn资源
https://download.csdn.net/download/m0_59139771/87670418
百度网盘
链接:https://pan.baidu.com/s/1ol0BGJ6sBHYlLQ4RUrskBw?pwd=yyds 提取码:yyds
链接:https://pan.baidu.com/s/1T0aLC-ibbbhro3uof4x2iA?pwd=yyds 提取码:yyds
链接:https://pan.baidu.com/s/1KN0zBr1JNbM41-dt8MPidw?pwd=yyds 提取码:yyds
1、建议当前源地址是前面跟着步骤换成国内源后进行,例如阿里源
第一组依赖包(有的包版本原因,可能不会安装成功,忽略继续下一步)
多行粘贴运行可能会不全,最好一行一行运行安装,或者粘贴到撰写窗口中选择逐行发送
sudo apt-get install automake -y sudo apt-get install autotools-dev -y sudo apt-get install binutils -y sudo apt-get install bzip2 -y sudo apt-get install elfutils -y sudo apt-get install expat -y sudo apt-get install gawk -y sudo apt-get install gcc -y sudo apt-get install gcc-multilib -y sudo apt-get install g++-multilib -y sudo apt-get install ia32-libs -y sudo apt-get install ksh -y sudo apt-get install less -y sudo apt-get install lesstif2 -y sudo apt-get install lesstif2-dev -y sudo apt-get install lib32z1 -y sudo apt-get install libaio1 -y sudo apt-get install libaio-dev -y sudo apt-get install libc6-dev -y sudo apt-get install libc6-dev-i386 -y sudo apt-get install libc6-i386 -y sudo apt-get install libelf-dev -y sudo apt-get install libltdl-dev -y sudo apt-get install libmotif4 -y sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386 -y sudo apt-get install libpth-dev -y sudo apt-get install libpthread-stubs0 -y sudo apt-get install libpthread-stubs0-dev -y sudo apt-get install libstdc++5 -y sudo apt-get install lsb-cxx -y sudo apt-get install make -y sudo apt-get install openssh-server -y sudo apt-get install pdksh -y sudo apt-get install rlwrap -y sudo apt-get install rpm -y sudo apt-get install sysstat -y sudo apt-get install unixodbc -y sudo apt-get install unixodbc-dev -y sudo apt-get install unzip -y sudo apt-get install x11-utils -y sudo apt-get install zlibc -y
2、都安装完成后,使用以下命令检查一下主要的依赖是否安装成功
gcc -v g++ -v
如果都是gcc version 9.4.0
(20.04版本的),说明这一步成功,在后面另外一篇文章会专门附上在这一步成功和失败的所有依赖包,以供参考
1、源地址文件记得备份备份备份!!!
把/etc/apt/sources.list
源文件的内容替换成以下源,用xftp
打开文件直接改方便点
vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted deb http://mirrors.aliyun.com/ubuntu/ bionic universe deb http://mirrors.aliyun.com/ubuntu/ bionic-updates universe deb http://mirrors.aliyun.com/ubuntu/ bionic multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted deb http://mirrors.aliyun.com/ubuntu/ bionic-security universe deb http://mirrors.aliyun.com/ubuntu/ bionic-security multiverse
2、替换完后执行一下命令进行更新:
sudo apt-get update
3、等待更新完成
1、然后继续安装以下依赖包
这里下面的依赖,需要先将上面的依赖安装完成后,再进行换源,再继续进行安装(主要是g++
的安装在上面有它需要的依赖包)
sudo apt-get -y install autoconf sudo apt-get -y install ssh sudo apt-get -y install wget sudo apt-get -y install man sudo apt-get -y install curl sudo apt-get -y install ftp sudo apt-get -y install telnet sudo apt-get -y install net-tools sudo apt-get -y install strace sudo apt-get -y install psmisc sudo apt-get -y install tree sudo apt-get -y install make sudo apt-get -y install cmake sudo apt-get -y install *x11* sudo apt-get -y install *vnc* sudo apt-get -y install tigervnc-standalone-server sudo apt-get -y install tigervnc-common sudo apt-get -y install libaio1 sudo apt-get -y install libaio-dev sudo apt-get -y install gcc-4.8 sudo apt-get -y install g++-4.8 sudo apt-get -y install cpp-4.8 sudo apt-get -y install libstdc++5 sudo apt-get -y install ibc6-dev sudo apt-get -y install sysstat sudo apt-get -y install xauth sudo apt-get -y install binutils sudo apt-get -y install readline* sudo apt-get -y install rlwrap
2、安装低版本libaio
,必须
dpkg -l | grep libaio sudo dpkg -P libaio-dev sudo dpkg -P libaio1
3、下面3个包(multiarch-support_2.28-10+deb10u1_amd64.deb
、libaio1_0.3.110-3_amd64.deb
、libaio-dev_0.3.110-3_amd64.deb
),通过xftp
上传,然后进入所在目录运行安装命令
sudo dpkg -i multiarch-support_2.28-10+deb10u1_amd64.deb sudo dpkg -i libaio1_0.3.110-3_amd64.deb sudo dpkg -i libaio-dev_0.3.110-3_amd64.deb
4、gcc
、g++
降级
先用gcc -v
和g++ -v
查出当前版本,然后修改对应版本运行以下命令,
sudo mv /usr/bin/gcc /usr/bin/gcc-9.4.0 sudo mv /usr/bin/g++ /usr/bin/g++-9.4.0 sudo mv /usr/bin/cpp /usr/bin/cpp-9.4.0 sudo ln -sf /usr/bin/g++-4.8 /usr/bin/g++ sudo ln -sf /usr/bin/gcc-4.8 /usr/bin/gcc sudo ln -sf /usr/bin/cpp-4.8 /usr/bin/cpp sudo chmod 755 /usr/bin/g++ sudo chmod 755 /usr/bin/gcc sudo chmod 755 /usr/bin/cpp gcc -v g++ -v dpkg -l | grep libstdc
当再次运行查看gcc
版本命令时发现,版本为4.8.5
时成功
5、添加路径
sudo mkdir /usr/lib64
6、添加软链接
sudo ln -sf /bin/bash /bin/sh sudo ln -s /etc /etc/rc.d sudo ln -sf /usr/lib/x86_64-linux-gnu /usr/lib64 sudo ln -sf /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/ sudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/ sudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/ sudo ln -sf /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/ sudo ln -sf /usr/lib/x86_64-linux-gnu/*.o /usr/lib64/
7、进入xfpt
上传到的目录,拷贝libpthread_nonshared.a
到/usr/lib64/
sudo cp libpthread_nonshared.a /usr/lib64/ sudo chmod 775 /usr/lib64/libpthread_nonshared.a
8、设置英文环境
sudo sh -c 'echo "export LANG=en_US.UTF-8" >> /root/.profile' sudo cat /root/.profile
9、配置用户和组
sudo /usr/sbin/groupadd -g 60001 oinstall sudo /usr/sbin/groupadd -g 60002 dba sudo /usr/sbin/groupadd -g 60003 oper sudo useradd -d /home/oracle -m -s /bin/bash -g oinstall -G dba,oper oracle sudo passwd oracle
10、为oracle
用户添加sudo
免密权限
sudo sh -c 'echo "oracle ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers'
1、将oracle11g
的两个包通过xftp
上传到想要安装到的文件夹
2、然后解压
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
解压完成后,会生成一个database的目录
3、检查系统变量(可不检查,直接用下面的)
sudo /sbin/sysctl -a | grep sem sudo /sbin/sysctl -a | grep shm sudo /sbin/sysctl -a | grep file-max sudo /sbin/sysctl -a | grep aio-max sudo /sbin/sysctl -a | grep ip_local_port_range sudo /sbin/sysctl -a | grep rmem_default sudo /sbin/sysctl -a | grep rmem_max sudo /sbin/sysctl -a | grep wmem_default sudo /sbin/sysctl -a | grep wmem_max
4、然后根据上面命令中得到的参数值在/etc/sysctl.conf
中增加对应数据,可以打开两个终端,这样方便填写
sudo vim /etc/sysctl.conf
5、把sysctl.conf
中的以下内容用查得的值填上(可不检查,直接用下面那一块的)
fs.aio-max-nr = fs.file-max = kernel.shmall = kernel.shmmax = kernel.shmmni = kernel.sem = net.ipv4.ip_local_port_range = net.core.rmem_default = net.core.rmem_max = net.core.wmem_default = net.core.wmem_max = 下面这一块直接用 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 kernel.panic_on_oops = 1 kernel.shmmax = 5033164800 kernel.shmall = 2097152 kernel.shmmni = 4096 vm.nr_hugepages = 2000
6、运行一下命令更新内核参数
sudo sysctl -p
7、添加对当前用户的内核限制在 /etc/security/limits.conf
文件中增加以下数据(XXX
为你当前用户名)
vim /etc/security/limits.conf
XXX soft nproc 2047 XXX hard nproc 16384 XXX soft nofile 1024 XXX hard nofile 65536 XXX soft stack 10240 下面这块直接用 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft nofile 16384 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 #oracle hard memlock 6000000 #oracle soft memlock 6000000
8、运行命令检查vim /etc/pam.d/login
,增加以下行(一般在78行,有了就不用增加了)
session required pam_limits.so
9、运行命令检查vim /etc/pam.d/su
,没有以下行就自己加上(一般在52行)
session required pam_limits.so
10、关闭透明大页和NUMA
功能
sudo sed -ie 's/quiet/quiet transparent_hugepage=never numa=off/g' /etc/default/grub cat /etc/default/grub sudo grub-mkconfig -o /etc/grub2.cfg
11、关闭防火墙
sudo ufw disable
12、配置.bashrc
sudo sh -c 'echo "export LC_ALL=C" >> /home/oracle/.bashrc' cat /home/oracle/.bashrc
1、打开.profile
文件,为文件中添加以下行
cd ~ vim .profile
export ORACLE_BASE=/home/oracle/app/oracle export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/dbhome_1 export ORACLE_SID=orcl export ORACLE_UNQNAME=orcl export NLS_LANG="Simplified Chinese ZHS16GBK" export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib64; export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ORACLE_HOME}/lib
2、首先检查一下oracle
的环境变量是否是你设定的
echo $ORACLE_BASE echo $ORACLE_HOME echo $PATH
3、如果不是,重新开启一个终端,应该就可以了。或者执行以下命令
source ~/.profile
这个命令的作用是使你设的环境变量生效
1、回到虚拟机的系统中,打开终端
su root xhost + export LANG=en_US.UTF-8 env|grep ORACLE export CV_ASSUME_DISTID=RHEL7.6 su oracle
2、进入你刚刚解压缩database
的那个路径位置
cd /usr/local/oracle/database
3、设置英语
export LANG=US
4、启动安装程序
./runInstaller -jreLoc /usr/local/java/jdk1.8.0_351
然后等待程序启动,出现界面
1、取消勾选,下一步
2、为了方便,选择第一个,安装并配置
3、选择Server Class,继续下一步
4、选择单实例安装,下一步
5、选择高级安装,然后下一步
6、没有中文可选,就选英文,下一步
7、选择第一个企业版,下一步
8、检查目录是否正确,和你配置的环境变量有关,一般默认
9、一般默认,下一步
10、下一步
11、指定数据库标识,全局数据库名和oracle
数据标识尽量一样
12、四个选项,建议配置如下
点击Character sets
选择Simplified Chinese ZHS16GBK
13、默认
14、默认选择,下一步
15、是否启用自动备份,测试环境就不启用了
16、设置密码,根据自己习惯,第二个选择为所有用户均采用一个口令
17、选择组,默认
18、先决条件检查,这一步会检查出很多问题,可以跳过,也可以找这些rpm
包来安装
其实我们看的时候会发现,这些rpm
包都是安装了的,但是版本不对,是因为64位和32位的问题
19、开始安装
20、等待安装
21、68%,大部分情况都会报错,甚至好几个错误
接下来解决68%报错
修改后,都点retry
,只有rdbms/lib/ins_rdbms.mk
这个文件报错点contiue
(retry
不行就contiue
)
下面的报错,最好都vim
进入文件去改
命令模式下,搜索 :/要搜索的字符串
Error in invoking target 'install' of makefile'/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'. See '/home/oracle/app/oraInventory/logs/installActions2020-01-02_11-43-42AM.log' for details.
有可能是glibc
的版本过高所致(高于2.14
),解决办法:下载安装glibc-static-2.17-292.el7.x86_64.rpm
若安装需要依赖时可强制安装 --force --nodeps
,先进入使用xftp
放到的文件夹
rpm -ivh glibc-static-2.17-292.el7.x86_64.rpm --force --nodeps
另起一个终端,修改文件
vim /home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk
ctxhx: $(CTXHXOBJ) $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) 改为: ctxhx: $(CTXHXOBJ) -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
#'agent nmhs'
,修改ins_emagent.mk
190行,在$(MK_EMAGENT_NMECTL)
后添加 -lnnz11
vim /home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
下面的错误可vim
进入对应文件修改,也可直接运行下面的命令进行修改
第三个-------- # 'all_no_orcl'的kfod问题,修改env_rdbms.mk的KFOD_LINKLINE变量(2913行),添加 -Wl,--no-as-needed sudo sed -i "s/KFOD_LINKLINE=\$(LINK) \$(S0MAIN)/& -Wl,--no-as-needed/g" /home/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/env_rdbms.mk 第四个----------- # 'all_no_orcl'的amdu问题,修改env_rdbms.mk的AMDU_LINKLINE变量(2922行),添加 -Wl,--no-as-needed sudo sed -i "s/AMDU_LINKLINE=\$(LINK) \$(S0MAIN)/& -Wl,--no-as-needed/g" /home/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/env_rdbms.mk 第五个------------ # 'all_no_orcl'的genorasdksh问题,修改genorasdksh (289行),添加 -Wl,--no-as-needed sudo sed -i "s/\$LD \$LD_RUNTIME \$LD_OPT/& -Wl,--no-as-needed/g" /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/genorasdksh 第六个------------ # 'all_no_orcl'的renamedg问题,修改env_rdbms.mk的KFNDG_LINKLINE变量(2918行),添加 -Wl,--no-as-needed sudo sed -i "s/KFNDG_LINKLINE=\$(LINK) \$(S0MAIN)/& -Wl,--no-as-needed/g" /home/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/env_rdbms.mk 第七个------------ 这个文件中没有找到GETCRSHOME_LINKLINE # 'install'的ins_srvm.mk问题,修改env_srvm.mk(ins_srvm.mk)的GETCRSHOME_LINKLINE变量(1899行),添加 -Wl,--no-as-needed sudo sed -i "s/GETCRSHOME_LINKLINE=\$(LINK)/& -Wl,--no-as-needed/g" /home/oracle/app/oracle/product/11.2.0/dbhome_1/srvm/lib/env_srvm.mk 第八个------------ # 'install'的ins_net_server.mk问题,修改env_network.mk的TNSLSNR_LINKLINE变量(2232行),添加 -Wl,--no-as-needed sudo sed -i "s/TNSLSNR_LINKLINE=\$(LINK)/& -Wl,--no-as-needed/g" /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/lib/env_network.mk 第九个------------- # 'irman ioracle'的ins_rdbms.mk问题,修改env_rdbms.mk的ORACLE_LINKLINE变量(2759行),添加 -Wl,--no-as-needed sudo sed -i "s/ORACLE_LINKLINE=\$(ORACLE_LINKER) \$(PL_FLAGS)/& -Wl,--no-as-needed/g" /home/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/env_rdbms.mk
成功闯过68%错误这关,继续等待安装
如下,说明已经安装成功
还要在终端中运行如下的命令
/home/oracle/app/oraInventory/orainstRoot.sh
/home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
完成关闭
最后源地址文件记得还原回来(备份备份备份)