在同一台机器下安装两个Oracle Software 版本

在同一台机器下安装两个Oracle Software 版本

目标在10.230.17.29上安装oracle10g
环境:
OS
oracle@Z810:~> cat /etc/SuSE-release
SUSE LINUX Enterprise Server 9 (x86_64)
VERSION = 9
PATCHLEVEL = 3
oracle@Z810:~> uname -a
Linux Z810 2.6.5-7.244-smp #1 SMP Mon Dec 12 18:32:25 UTC 2005 x86_64 x86_64 x86_64 GNU/Linux

DB: Oracle10g
已安装9i
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9ir2

现在要在同个Oracle用户中安装Oracle10g。


有哪些问题呢?

用两个ORACLE_HOME和ORACLE_SID即可

1) 不同的版本必须在不同的目录下.

export ORACLE_SID=mouse
export ORACLE_HOME=$ORACLE_BASE/product/10gr2

这样同一个用户就有两个ORACLE_HOME.如何解决?
在.profile中定义两个环境变量文件。提供选择运行哪个版本的Oracle
echo "9i or 10g? "
read CHOICE
if [ "$CHOICE" = "9i" ]; then
                echo "You enter 9i database!"
                . ./set9ienv
        else if [ "$CHOICE" = "10g" ];
        then
                echo "you enter 10g database!"
                . ./set10genv
        fi
fi

文件set9ienv的内容如下:

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9ir2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_SID=mydb
#export ORACLE_SID=dupdb
export LD_ASSUME_KERNEL=2.4.1
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$PATH:/usr/bin:/usr/sbin/:/bin:$ORACLE_HOME/bin
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/JDBC/lib/classes12.zip:$ORACLE_HOME/jdbc/lib/nls_charset12.zip
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export NLS_LANG
export LANG=en_US
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LC_ALL=C

文件set10genv的内容如下:
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10gr2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_SID=mouse
export LD_ASSUME_KERNEL=2.4.1
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$PATH:/usr/bin:/usr/sbin/:/bin:$ORACLE_HOME/bin
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$ORACLE_HOME/JDBC/lib/classes12.zip:$ORACLE_HOME/jdbc/lib/nls_charset12.zip
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export NLS_LANG
export LANG=en_US
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LC_ALL=C


如果用另一用户来安装也可以, 如Oracle10g 这是一种解决方案,比较简单.


2) 安装之前把现运行的所有oracle进程,监听先停掉


3)  在成功安装Oracle10g后,尝试用DBCA建立数据库报如下错

ORA-27125: unable to create shared memory segment

上网查得知,这是Suse在支持Oracle10g上的一个Bug。主要是参数DISABLE_HUGETLBFS的问题。
具体这个DISABLE_HUGETLBFS参数的含义要上网再找些相关资料了解下。

solution:
用DBCA生成建库的脚本

Oracle> cd $ORACLE_BASE/admin/mouse/scripts
Oracle> EXPORT DISABLE_HUGETLBFS=1
Oracle> ./mouse.sh

建库成功.


之前一直在Oracle9i上工作,测试。 刚开始接触10g,还有一堆特性要去熟悉。

 

 

关于Suse中安装Oracle10g可能出现的问题可以参考下面的文档:


附件:<>

在SuSE以前的几个版本中,都针对Oracle有过专门的改进,安装起来也比较的方便,一般用户只需要安装一个RPM包即可搞定。不过目前的9.1版本是否支持Oracle 10g还没有官方声明。经过笔者测试,发现Oracle 10g在SuSE上可以运行的很好。
   SuSE Linux 9.1 采用的是2.6( 2.6.4-52)的核心。这是笔者要对其测试的一个重要原因。这个版本KDE是3.2版本的,GUI足够华丽, 不过这个和我们今天的这个主题关系不大。对SuSE新特性感爱好的读者可以先去看一下这个Links: http://www.suse.com/us/private/prodUCts/suse_linux/prof/new_features.Html 。此外,SuSE集成了 LVM2。LVM对维护上带来了不少方便,从某种意义上说提高了系统可用性。2.6核心 + LVM2 + 10g--还真的蛮吸引人的。
   安装之前,先去Suse的Oracle支持站点看看: http://www.suse.com/en/business/certifications/certified_software/oracle/documents.html 。虽然没有直接针对Oracle 10g 的资料,不过一些文档也是非常有参考价值的哦。还有http://otn.oracle.com 上的支持文档,也应该是必读之物。
   一 预备工作
   先检查操作系统软件包是不是已经安装齐备。也就是属于开发环境的那些东西,Gcc 、binutils 、make等等,假如没有安装的话,可以通过yast2工具来进行安装,仔细选好软件,按照提示依次插入各安装盘即可。
   参考http://www.dbanotes.nethttp://oracle.**.com/Install-Oracle10g-RHEL3.htm 这里的信息。(另外, 在该Link还可以找到其它的一些有用的Link)。
   接下来我们创建用户和相关的组,调整用户的环境变量:
   eXPort ORACLE_BASE=/u/app/oracle
   export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
   export ORACLE_SID=TEST
   export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
   export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
   创建目录,检查核心参数。SuSE上我没有发现 sysctl.conf 文件。自己创建之。内容如下:
   kernel.shmall = 2097152
   kernel.shmmax = 2147483648
   kernel.shmmni = 4096
   kernel.sem = 250 32000 100 128
   fs.file-max = 65536
   net.ipv4.ip_local_port_range = 1024 65000
   然后sysctl -p 确定一下。在这里要注重的一点是在系统重新启动之后不能自动读取我们创建的文件。 可以考虑
   #chkconfig boot.sysctl on
   或者是利用SuSE 的Yast 工具来设置。
   二 安装软件
   安装之前要进行一下处理。因为runInstaller所需要的配置文件oraparame.ini 中没有提到SuSE ,所以,预检查的时候会报告错误。
  
   我们采取调整该文件的办法.具体参考: http://www.dbanotes.nethttp://oracle.**.com/10G-Beta-Install-Bug.htm
   vi oraparam.ini
   找到
   [Certified Versions]
   Linux=redhat-2.1,UnitedLinux-1.0,redhat-3
   修改成
   [Certified Versions]
   Linux=redhat-2.1,UnitedLinux-1.0,redhat-3,SuSE-9.1
   然后运行./runInstaller
   假如不能出现X安装界面,注重DISPLAY环境变量的设置。以后一路是图形文件。不多说了。注重,在安装的时候不要创建数据库。
   三 创建实例
   运行dbca ,创建实例。不过,在这里一个比较令人头疼的问题。图形化创建实例总是报告: ORA-27125:unable to create shared memory segment. 检查核心参数,没有发现问题。后来经过网络上的交流得知:Linux 2.6内核有个特性:Huge TLB支持。该特性默认条件下是激活的。
   相关解释:
   By default only root has permission to allocate shared memory with this option (SHM_HUGETLB) and Oracle 10g defaults using it, so Oracle fails to allocate the SGA.This capability is supposed to be able to controlled with the setcaps program (CAP_IPC_LOCK), but I couldn't get it to work properly. The solution is either to set DISABLE_HUGETLBFS=1 before you start Oracle or to recompile the kernel without CONFIG_HUGETLB_PAGE and CONFIG_HUGETLBFS configuration parameters.
   要解决该问题,在Oracle用户下执行 $export DISABLE_HUGETLBFS=1(初稿这里有误) 注(2004年9月19日):本文最初描述的有问题,一般来说执行如下的操作比较稳妥:
   linux: # cd $ORACLE_HOME/bin
   linux: # mv oracle oracle.bin
   cat >oracle <<"EOF"
   #!/bin/bash
   export DISABLE_HUGETLBFS=1
   exec $ORACLE_HOME/bin/oracle.bin $@
   EOF
   linux: # chmod +x oracle
   这是因为类似dbca这样的Java应用不能把 DISABLE_HUGETLBFS=1传递给oracle执行程序。
   具体信息可参考URL:http://www.gesinet.it/oracle/hugetlb.html还有下面的参考URL.
   然后再次运行dbca 。假如碰到问题的话,最好是定制库,最后选择"生成脚本" (当然,可以自己写脚本建库,不过用图形工具方便一些) 。运行脚本创建实例。不出意外的话,这次应该没有问题了

 

请使用浏览器的分享功能分享到微信等