Linux安装Oracle数据库的问题汇总

1、Oracle数据库由Oracle公司开发,所以它在安装时只支持Oracle旗下的OS及战略伙伴的OS。具体参考$ORACLE_HOME/cv/cvdata/cvu_prereq.xml,列举一段xml:

<OPERATING_SYSTEM RELEASE="SUSE12">
                        <VERSION VALUE="12"/>
                        <ARCHITECTURE VALUE="x86_64"/>
                        <NAME VALUE="Linux"/>
                        <VENDOR VALUE="SuSE"/>
                        <KERNEL_VER VALUE="3.12.28"/>

		        <KERNEL>
		            <PROPERTY NAME="semmsl" NAME2="semmsl2" VALUE="250" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="semmns" VALUE="32000" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="semopm" VALUE="100" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="semmni" VALUE="128" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="shmmax" SEVERITY="IGNORABLE">
		                 <STEPS>
                		   <STEP NAME="PHYSICAL_MEMORY" GREATER_THAN="1024" UNIT="MB" MULTIPLE="0.5"/>
		                 </STEPS>
		            </PROPERTY>
		            <PROPERTY NAME="shmmni" VALUE="4096" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="shmall" SEVERITY="IGNORABLE">
                		 <STEPS>
				   <!-- assigning minimum value for shmall. Fixing bug 27064319.  -->
				   <MIN VALUE="1024" UNIT="MB"/>     	
                   		   <!-- Checking shmall same as shmmax. Fixing bug 22711523. -->
		                   <STEP NAME="SHMMAX" GREATER_THAN="1024" UNIT="MB" MULTIPLE="1.0"/>
                		 </STEPS>
		            </PROPERTY>
		            <PROPERTY NAME="file-max" VALUE="6815744" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="ip_local_port_range" ATLEAST="9000" ATMOST="65535" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="rmem_default" VALUE="262144" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="rmem_max" VALUE="4194304" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="wmem_default" VALUE="262144" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="wmem_max" VALUE="1048576" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="aio-max-nr" VALUE="1048576" SEVERITY="IGNORABLE"/>
		            <PROPERTY NAME="panic_on_oops" VALUE="1" SEVERITY="IGNORABLE"/>
		         </KERNEL>

                       <PACKAGES>
		            <!-- Packages for ASM -->
		            <CONDITION VAR="ASM">
		               <PACKAGE NAME="oracleasm-support" VALUE="2.0" SEVERITY="IGNORABLE"/>
		               <PACKAGE NAME="oracleasmlib-%KERNEL_RELEASE%" VALUE="2.0" SEVERITY="IGNORABLE"/>
		               <PACKAGE NAME="oracleasmlib" VALUE="2.0" SEVERITY="IGNORABLE"/>
		            </CONDITION>
		            <CONDITION VAR="OCFS2">
		               <PACKAGE VAR="ocfs2" VALUE="1.2.9" SEVERITY="IGNORABLE"/>
		               <PACKAGE NAME="ocfs2-tools" VALUE="1.2.3" SEVERITY="IGNORABLE"/>
		            </CONDITION>
                                <PACKAGE NAME="make" VALUE="4.0" SEVERITY="IGNORABLE"/>
                                <PACKAGE NAME="binutils" VALUE="2.24" SEVERITY="IGNORABLE"/>
                                <PACKAGE NAME="gcc-c++" VALUE="4.8" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libaio1" VALUE="0.3.109" SEVERITY="IGNORABLE"/>
                                <PACKAGE NAME="libaio-devel" VALUE="0.3.109" SEVERITY="IGNORABLE"/>
                                <PACKAGE NAME="libstdc++6" VALUE="4.8.3"  SEVERITY="IGNORABLE"/>
                                <PACKAGE NAME="sysstat" VALUE="8.1.5" SEVERITY="IGNORABLE"/>
                                <PACKAGE NAME="glibc-devel" VALUE="2.19" SEVERITY="IGNORABLE"/>
                                <PACKAGE NAME="glibc" VALUE="2.19" SEVERITY="CRITICAL"/>
                                <PACKAGE NAME="libcap-ng-utils" VALUE="0.7.3-4.125" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libcap-ng0" VALUE="0.7.3-4.125" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libcap-ng0-32bit" VALUE="0.7.3-4.125" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libcap-progs" VALUE="2.22-11.709" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libcap1" VALUE="1.10-59.61" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libcap1-32bit" VALUE="1.10-59.61" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libcap2" VALUE="2.22-11.709" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libcap2-32bit" VALUE="2.22-11.709" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libgcc_s1" VALUE="4.8.3" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libgcc_s1-32bit" VALUE="4.8.3" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libXtst6" VALUE="1.2.2" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
                                <PACKAGE NAME="libXtst6-32bit" VALUE="1.2.1" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/>
				<PACKAGE NAME="nfs-kernel-server" VALUE="1.3.0-6.9" SEVERITY="IGNORABLE" ARCHITECTURE="x86_64"/> 
				<PACKAGE NAME="xorg-x11-libs" VALUE="7.6-45.14" SEVERITY="IGNORABLE"/>
            			<PACKAGE NAME="smartmontools" VALUE="6.2-4.33" SEVERITY="IGNORABLE"/>
			        <PACKAGE NAME="net-tools" VALUE="1.60-764" SEVERITY="IGNORABLE"/> 
                        </PACKAGES>
               </OPERATING_SYSTEM>

该节点取自XPATH路径/HOST/CERTIFIED_SYSTEMS/OPERATING_SYSTEM,该节点下的PACKAGES/PACKAGE节点组为必须安装的软件包及最低版本号。

Oracle For Linux支持的OS有SUSE12、OEL6、OL7、RHEL6、RHEL7。其中OL与RHEL都是RedHat分支,因此只要是RedHat的下属分支都被Oracle支持,比如CentOS与Fedora。SUSE的情况也是如此,SUSE源自Slackware,于是Slackware同样容易安装Oracle。

然而Oracle的OS检测并非基于/etc/xxxx-release文件,而是rpm命令,比如首先检测OL

/bin/sh -c '/bin/rpm -q --whatprovides --qf %{V} oraclelinux-release'

检测成功则返回一个数字。因此非OL、非RHEL、非SUSE的Linux,可以自写一个rpm脚本欺骗Oracle安装程序

如果是RedHat或SUSE的子系,可以先重命名rpm,然后截获OS检测

# mv /bin/rpm /bin/rpm2

# vi /bin/rpm

#!/bin/sh

for x in $*; do
  pkg=$x
done

if ([ $pkg = "oraclelinux-release" ])
then
  echo "7.6"
  exit 0
else
  /bin/rpm2 $*
fi

如果是其他Linux

# vi /bin/rpm

#!/bin/sh

for x in $*; do
  pkg=$x
done

if ([ $pkg = "oraclelinux-release" ])
then
  echo "7.6"
  exit 0
elif ([ $(echo $pkg | awk '{s=substr($0,0,1);print s;}') = "-" ])
then
  exit 0
else
  echo "no package provides ${pkg}"
  exit 1
fi

只要OS检测通过,软件包检测抛出的警告可以忽略。软件包检测的命令如下:

/bin/sh -c '/bin/rpm -q -queryformat "<PACKAGE><NAME,%{NAME}><ARCH,%{ARCH}><VERSION,${VERSION}-%{RELEASE}></PACKAGE>" binutils'

当然不想这么麻烦的话,可以用./runInstaller -skipPrereqs跳过所有检测。

只要软件安装没有问题,监控与实例安装应该没有问题。

2、Oracle不支持127.0.0.1,因此必须单独设置host及其对应的IP地址

3、Debian系的Oracle安装最繁琐,不仅需要创建软连接,还需要更改好几个mk文件,而Ubuntu在runInstaller之后更是需要重新创建链接库,其他的Linux没有发现这种情况,甚至比较偏门的AltLinux安装Oracle也很方便,只要采用静默方式安装,Oracle依赖软件包大概十个左右,比如核心的libcap、libaio、libstdc++5。

4、滚动更新快速的Linux安装有点麻烦,主要是glibc,比如archlinux和gentoo的glibc版本都是2.28,这个版本不再提供oracle需要的libpthread_nonshared.a,估计后续版本也是如此,因此需要单独安装glibc-2.27版本,然后软链接到/usr/lib64目录下。另外gentoo的sysctl不在/sbin目录下,而在/usr/sbin目录下,也需要建立软链接。

gentoo的配置选用

[25] default/linux/amd64/17.0/systemd (stable) *

系统安装之后,需要安装如下几个包:

# emerge -av dev-libs/icu sys-apps/gawk sys-devel/gdb app-admin/sysstat sys-libs/libstdc++-v3 dev-db/unixODBC dev-libs/libaio sys-libs/libcap sys-apps/smartmontools

rpm仍然采用sh脚本欺骗Oracle

5、runInstaller安装过程如果有-lclntshcore错误,需要检查$ORACLE_HOME/lib目录下的libclntshcore.so.19.1文件是否存在,libclntshcore.so即libclntshcore.so.19.1的软链接,runInstaller安装如果产生不可忽视的错误,那么有可能丢失libclntshcore.so.19.1文件,很郁闷,搞不懂它为何丢失,如果丢失,只有从zip文件之中提取出来,放入$ORACLE_HOME/lib目录下。

5、sqlplus命令行的Backspace键产生^H字符或者其他功能键产生无厘头字符串,使用Ctrl+Backspace删除。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值