在同一臺機器下安裝兩個Oracle Software 版本

gdutllf2006發表於2010-05-29

在同一臺機器下安裝兩個Oracle Software 版本

目標在10.230.17.29上安裝oracle10g
環境:
OS
:~> cat /etc/SuSE-release
SUSE LINUX Enterprise Server 9 (x86_64)
VERSION = 9
PATCHLEVEL = 3
:~> 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: 。此外,SuSE整合了 LVM2。LVM對維護上帶來了不少方便,從某種意義上說提高了系統可用性。2.6核心 + LVM2 + 10g--還真的蠻吸引人的。
   安裝之前,先去Suse的Oracle支援站點看看: http://www.suse.com/en/business/certifications/certified_software/oracle/documents.html 。雖然沒有直接針對Oracle 10g 的資料,不過一些文件也是非常有參考價值的哦。還有 上的支援文件,也應該是必讀之物。
   一 預備工作
   先檢查作業系統軟體包是不是已經安裝齊備。也就是屬於開發環境的那些東西,Gcc 、binutils 、make等等,假如沒有安裝的話,可以透過yast2工具來進行安裝,仔細選好軟體,按照提示依次插入各安裝盤即可。
   參考 這裡的資訊。(另外, 在該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 ,所以,預檢查的時候會報告錯誤。
  
   我們採取調整該檔案的辦法.具體參考:
   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 <   #!/bin/bash
   export DISABLE_HUGETLBFS=1
   exec $ORACLE_HOME/bin/oracle.bin $@
   EOF
   linux: # chmod +x oracle
   這是因為類似dbca這樣的Java應用不能把 DISABLE_HUGETLBFS=1傳遞給oracle執行程式。
   具體資訊可參考還有下面的參考URL.
   然後再次執行dbca 。假如碰到問題的話,最好是定製庫,最後選擇"生成指令碼" (當然,可以自己寫指令碼建庫,不過用圖形工具方便一些) 。執行指令碼建立例項。不出意外的話,這次應該沒有問題了

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10248702/viewspace-663983/,如需轉載,請註明出處,否則將追究法律責任。

相關文章