Oracle安装竟然这么多BUG? 这些规避方式,泰裤啦!
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理微信:jem_db
QQ交流群:587159446
公众号:IT邦德
@
1.Oracle版本Linux兼容性
2.10G 部署bug
3.11G部署bug
3.1 DB安装bug
3.2 RAC集群部署bug
4.12C 部署bug
5.19C 部署bug
6.总结
前言
本文盘点了从业10多年来,Oracle单机及RAC安装过程中的bug,将处理过程分享给大家
1.Oracle版本Linux兼容性
Oracle数据库在特定的兼容linux平台上运行,oracle才能发挥最大的性能,如果不兼容,Oracle部署及运行的过程中,bug触发的几率比较大。
2.10G 部署bug
bug场景:vipca 和 srvctl 无法执行Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
/home/oracle/crs/oracle/product/10/crs/jdk/jre//bin/java: error while loading
shared libraries: libpthread.so.0: cannot open shared object file:
No such file or directory
解决办法:
其实这是无法完成vipca工作导致的,你可以用以下方法解决:在第二个节点 rac2 上执行脚本前,完成以下工作
[root@rac2 ~]# cd /u01/crs/oracle/product/10.2.0/crs/bin
[root@rac2 bin]# vi vipca
if [ "$arch" = "i686" -o "$arch" = "ia64" ] then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
下面加入
unset LD_ASSUME_KERNEL
[root@rac2 bin]# vi srvctl
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
下面加入
unset LD_ASSUME_KERNEL
Rac2 上执行
/u01/crs/oracle/product/10.2.0/crs/root.sh
最后还会报错
Running vipca(silent) for configuring nodeapps
Error 0(Native: listNetInterfaces:[3]) [Error 0(Native: listNetInterfaces:[3])]
[root@rac2 bin]# ./oifcfg getif
[root@rac2 bin]# ./oifcfg iflist
eth0 192.168.1.0
eth1 192.168.6.0
[root@rac2 bin]# ./oifcfg setif -global eth0/192.168.1.0:public
[root@rac2 bin]# ./oifcfg setif -global eth1/192.168.6.0:cluster_interconnect
./vipca
3.11G部署bug
3.1 DB安装bug
bug场景:
11G R2的本在Linux7的操作系统,
在安装数据库软件的时候,触发以下Bug
解决办法:
[oracle@rhel79 ~]$ cd $ORACLE_HOME/sysman/lib
[oracle@rhel79 lib]$ vi ins_emagent.mk#==========================
# nmum/emagtmc
#=========================
$(SYSMANBIN)nmumc $(SYSMANBIN)emagtmc:
$(MK_EMAGENT_NMUMC)
#===========================
# emdctl
#===========================
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11
3.2 RAC集群部署bug
bug场景1:
安装11gRAC时,在grid infrastructure的root.sh执行时,报错
# /oracle/product/11g/grid/root.sh
...
Adding Clusterware entries to inittab
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2019-01-04 17:02:36.004:
[client(25743)]CRS-2101:The OLR was formatted using version 3.这是由于RHEL 7改变了init的管理方式,出现了兼容性上的问题
单独在linux 7中为ohasd设置一个服务
1. 创建服务文件并赋予权限
##root用户执行
touch /usr/lib/systemd/system/ohas.service
chmod 777 /usr/lib/systemd/system/ohas.service2. 服务文件添加启动相关信息
vi /usr/lib/systemd/system/ohas.service
##以下部分的内容添加到文件里面
[Unit]
Description=Oracle High Availability Services
After=syslog.target
[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always
[Install]
WantedBy=multi-user.target
3. 加载,启动服务
重新加载守护进程
systemctl daemon-reload
设置守护进程自动启动
systemctl enable ohas.service
手工启动ohas服务
systemctl start ohas.service
5、查看ohas服务状态
systemctl status ohas.service
可以看到ohasd已经处于running的状态
bug场景2:
在RHEL6上Oracle11gR2 grid安装后无法启动:
原因:
重启系统后,ohasd服务依然没有启动,更不用说启动CRS了。
这是因为从RHEL6开始,/etc/inittab文件内容变了,只有默认的启动等级。
而Oracle 11.2.0.1仍是按照以前的习惯把启动命令写在/etc/inittab文件中,
造成ohasd服务不能自动启动。
1.注释掉/etc/inittab文件的以下内容
#h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null2. 修改/etc/init/init-oracle.conf
##添加如下内容(此文件刚开始不存在)
#start oracle
start on runlevel [0123456]
stop on runlevel [016]
respawn
exec /etc/init.d/init.ohasd run >/dev/null 2>&1
4.12C 部署bug
bug场景1:
在Linux7安装GI集群的时候root.sh后报错
The command '/u01/app/12.2.0/grid/perl/bin/perl -I/u01/app/12.2.0/grid/perl/lib -I/u01/app/12.2.0/grid/crs/install /u01/app/12.2.0/grid/crs/install/rootcrs.pl ’ execution failed
处理方式:在安装集群的时候,应用补丁
[grid@prodb1 grid]$ ./gridSetup.sh -applyPSU /opt/33583921
root.sh报错后,做如下操作
[root@orcl]$ export ORACLE_HOME=/u01/app/12.2.0/grid
[root@orcl]$ cd /u01/app/12.2.0/grid/rdbms/lib
[root@orcl]$ /grid/12.2/rdbms/lib]#/usr/bin/make \
-f ins_rdbms.mk client_sharedlib libasmclntsh12.ohso libasmperl12.ohso ORACLE_HOME=$ORACLE_HOME
然后重新执行root.sh
bug场景2:
--bug场景
集群安装完成后,DB启动的报错:
WARNING: group 2 (DATA) has missing disks
ORA-15040: diskgroup is incomplete
WARNING: group 2 is being dismounted.
WARNING: ASMB force dismounting group 2 (DATA) due to missing disks
--处理办法
查看$ORACLE_HOME/bin/oracle 目录所有者和权限
---错误的文件权限(导致在往磁盘组写入文件时报错)
[oracle@prodb1 bin]$ ls -ld oracle
-rwsr-s--x 1 oracle oinstall 407944960 Jan 19 16:27 oracle--更改oracle 文件所有者和权限
chown oracle:asmadmin /u01/app/oracle/product/12.2.0/dbhome_1/bin/oracle
chmod 6751 /u01/app/oracle/product/12.2.0/dbhome_1/bin/oracle
5.19C 部署bug
bug场景1:
bug现象
在Linux8操作系统,grid安装过程中报错如下:
[FATAL] Error in invoking target ‘libasmclntsh19.ohso libasmperl19.ohso client_sharedlib’ of makefile ‘/oracle/app/19c/grid/rdbms/lib/ins_rdbms.mk’.
处理过程
真正的原因是lib下11个so文件的软链接不正常。
正确的结果如下:
[grid@rac1 lib]$ ls -alR | grep ^l
lrwxrwxrwx 1 grid oinstall 15 Mar 15 20:20 libagtsh.so -> libagtsh.so.1.0
lrwxrwxrwx 1 grid oinstall 21 Mar 15 20:45 libclntshcore.so -> libclntshcore.so.19.1
lrwxrwxrwx 1 grid oinstall 17 Mar 15 20:45 libclntsh.so -> libclntsh.so.19.1
lrwxrwxrwx 1 grid oinstall 12 Mar 15 20:45 libclntsh.so.10.1 -> libclntsh.so
lrwxrwxrwx 1 grid oinstall 12 Mar 15 20:45 libclntsh.so.11.1 -> libclntsh.so
lrwxrwxrwx 1 grid oinstall 12 Mar 15 20:45 libclntsh.so.12.1 -> libclntsh.so
lrwxrwxrwx 1 grid oinstall 12 Mar 15 20:45 libclntsh.so.18.1 -> libclntsh.so
lrwxrwxrwx 1 grid oinstall 36 Mar 15 20:42 libjavavm19.a -> ../javavm/jdk/jdk8/lib/libjavavm19.a
lrwxrwxrwx 1 grid oinstall 15 Mar 15 20:20 libocci.so -> libocci.so.19.1
lrwxrwxrwx 1 grid oinstall 10 Mar 15 20:46 libocci.so.18.1 -> libocci.so
lrwxrwxrwx 1 grid oinstall 12 Mar 15 20:47 libodm19.so -> libodmd19.so
[grid@rac1 lib]$ ls -alR | grep ^l|wc -l
11所以处理方法就是做好上述11个文件的软链接,
然后relink all,
参考命令ln -s libclntsh.so.19.1 libclntsh.so,
如果缺少就从解压包中拷贝,
注意属主权限grid:oinstall
[grid@rac1 lib]$ relink all
writing relink log to: /oracle/app/19c/grid/install/relinkActions2023-03-15_08-55-14PM.log
然后点retry继续即可,如果软链接不正常或者没有relink all则点击retry也不会继续。
bug场景2:
bug现象
在Linux8安装集群配置互信test时报错INS-44000
报错信息:passwordless ssh connectivity is not setup from the local node node1 to the following nodes node2
处理过程
1、无论是手工配置互信,还是在图形界面setup都是不行;手动执行ssh没有问题。
2、查看openssh版本ssh -V
是 OpenSSH_8.1.p1的版本。
3、查看mos发现文档 ID 2555697.1 比较匹配
INS-06006 GI RunInstaller Fails If OpenSSH Is Upgraded to 8.x
原因是OpenSSH升级到了8.x版本。
4、根据文档处理过程:
–Before installation, as root user: (please change the path if the location of your “scp” is not the same with below)
1)Rename the original scp.
mv /usr/bin/scp /usr/bin/scp.orig
2)Create a new file </usr/bin/scp>.
vi /usr/bin/scp
3)Add the below line to the new created file </usr/bin/scp>.
/usr/bin/scp.orig -T $*
4)Change the file permission.
chmod 555 /usr/bin/scp
After installation:
mv /usr/bin/scp.orig /usr/bin/scp
6.总结
数据库的安装部署是个基础功,文本详细的总结了Oracle单机和RAC集群部署中遇到的问题及解决方案,希望能带现场实施的DBA带来帮助。