[zt] Redhat AS4上安裝64位Oracle9204

tolywang發表於2009-03-18

出處: http://yangtingkun.itpub.net/post/468/211768

第一次嘗試在REDHAT AS4上安裝64Oracle,由於缺少資料且作業系統知識相對匱乏,導致安裝過程中錯誤頻繁出現,不過幸好透過兩天的不斷折騰,終於將Oracle安裝成功。這裡將安裝步驟簡單總結一下,儘量使後來人少走彎路。

這篇文件參考了Oracle9i for Linux x86-64的官方安裝文件,不過這篇文件中遺留的東西很多。另外還參考了metalink上的幾篇文件,這幾篇文章主要是介紹如何解決isqlplus連結失敗的。


下面就開始介紹安裝步驟,對於簡單的部分就不多做說明了:

首先檢查系統是否滿足安裝Oracle的要求,其實這個對於目前大部分的伺服器都是滿足的,不過為了完整起見,還是把Oracle的最低要求和檢查指令碼列出來:

512M以上記憶體;

1G以上交換空間;

/tmp目錄下400M以上空間。

# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo
# df -k /tmp
# grep "model name" /proc/cpuinfo

另外,需要保證Oracle的安裝目錄至少有超過2.5G的空間,才能保證企業版的正常安裝。

透過下面的指令碼檢查作業系統資訊

# more /etc/issue
# uname -a

下面透過rpm –qa來檢查作業系統是否已經包含了安裝Oracle所需要的包。由於沒有官方版的AS4所需的包的列表,我根據官方AS3所需列表將我的環境中對應的包列出,並將個人認為比較重要的放在前面。

kernel-2.6.9-42.EL

glibc-devel-2.3.4-2.25

glibc-2.3.4-2.25

gcc-3.4.6-3

gcc-c++-3.4.6-3

compat-libgcc-296-2.96-132.7.2

compat-gcc-32-3.2.3-47.3

compat-gcc-32-c++-3.2.3-47.3

libstdc++-devel-3.4.6-3

libstdc++-3.4.6-3

make-3.80-6.EL4

gtk+-1.2.10-33

gnome-libs-1.4.1.2.90-44.1

tcp_wrappers-7.6-37.2

ORBit-0.5.17-14

libpng10-1.0.16-1

libungif-4.1.3-1.el4.2

imlib-1.9.13-23

setarch-1.6-1

libaio-0.3.105-2

audiofile-0.2.6-1.el4.1

esound-0.2.35-2

上面列出的包並不見得都是必須的,最後幾個包沒有的話,應該也可以安裝成功。不過根據Oracle官方文件的建議都加上肯定不會有問題。這裡要額外注意compat-libgcc-296-2.96-132.7.2這個包,這個包必須要加上,否則後面的安裝無法繼續進行。

下面需要修改一下系統的核心引數,具體的含義就不多解釋了,Oracle的推薦預設引數為:

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

我只修改了kernel.shmmax引數,設定其大小超過我預計SGA的值。

將上面的核心引數新增到/etc/sysctl.conf檔案中。

完成設定後,重啟作業系統。透過/sbin/sysctl –p可以修改當前核心引數,不過如果系統可以重啟,還是透過這種方式比較保險。

下面為Oracle使用者設定程式數和開啟檔案數的限制:修改/etc/security/limits.conf檔案,將下面內容填入:

* soft nproc 2047

* hard nproc 16384

* soft nofile 1024

* hard nofile 65536

修改/etc/pam.d/login檔案,新增如下的內容:

session required /lib/security/pam_limits.so

這些操作完成之後,開始安裝的前期工作了,首先是建立Oracle帳戶:

# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
# mkdir -p /opt/oracle/product/9.2
# chown -R oracle.oinstall /opt/oracle

至此,root使用者的設定基本結束,可以切換到oracle使用者了。

# su - oracle
$ vi .bashrc

oracle使用者的初始化指令碼中新增如下內容:

if [ $USER = "oracle" ]; then

ulimit -u 16384 -n 65536

fi

export ORACLE_BASE=/opt/oracle

export ORACLE_HOME=/opt/oracle/product/9.2

export ORACLE_SID=testdb

export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

export PATH=$ORACLE_HOME/bin:$PATH

export DISPLAY=172.25.6.201:0

export LD_ASSUME_KERNEL=2.4.1

其中上面設定程式和檔案的限制是Oracle推薦的。ORACLE_BASEORACLE_HOMEORACLE_SID以及NLS_LANG的設定都需要根據個人的具體進行調整。DISPLAY變數設定的是我自己機器在區域網中的IP地址,這是方便我使用X-MANAGER進行圖形化操作的。

最需要注意的是LD_ASSUME_KERNEL的設定。首先Oracle的官方文件中並沒有包含這個變數的設定,但是如果不進行設定的話,那麼一會在安裝Oracle的時候,安裝到17%,提示複製檔案naeet.o的時候,整個安裝就停住了,這個時候即使點cancel按鈕都沒有用,只能將整個安裝視窗關閉。

Metalink上的文章倒是提到了對這個引數的設定,但是Metalink給出的建議設定是2.4.21。這個設定似乎對SuSE 8環境是有效的,但是對REDHAT AS4環境仍然沒有作用。從Metalink上的回覆看,也沒有看到對這個問題的進一步說明。

Oracle9204REDHAT AS3上的安裝時,建議將這個變數設定為2.4.1,因此,我選擇了將這個變數也設定為2.4.1,在隨後的安裝過程中,上面提到的問題沒有再次出現。我估計將這個值設定的稍微大一些的話,也是可以的,我沒有進行具體的測試,如果有興趣,可以嘗試一下,看看這個值最大可以設定到多大。

設定好環境變數後,重新應用一下初始指令碼,保證設定的環境應用到當前使用者:

$ . .bashrc

如果是使用光碟介質,可以跳過下面的步驟,如果是下載的壓縮包,需要將壓縮包ftporacle使用者可以訪問的目錄下。解壓並展開:

$ gunzip amd64_db_9204_Disk1.cpio.gz
$ gunzip amd64_db_9204_Disk2.cpio.gz
$ gunzip amd64_db_9204_Disk3.cpio.gz
$ cpio -idcmv < amd64_db_9204_Disk1.cpio
$ cpio -idcmv < amd64_db_9204_Disk2.cpio
$ cpio -idcmv < amd64_db_9204_Disk3.cpio

展開檔案後,終於可以開始安裝了:

$ cd Disk1
$ . runInstaller

安裝開始沒有什麼值得說的,無非是點選幾個NEXT的,輸入使用者組oinstall,並根據提示在後臺使用root使用者執行/tmp/orainstRoot.sh指令碼。

隨後選擇安裝Oracle Database 9204,同時新增簡體中文語言,選擇企業版,並選擇定製資料庫配置。這些配置都可以根據個人的需求進行調整。

所有準備工作完成,點選install

在安裝到88%的時候,會報錯,錯誤資訊如下:Error in invoking target install_isqlplus of makefile /opt/oracle/product/9.2/sqlplus/lib/ins_sqlplus.mk

這是使用了64位的gcc編譯32位程式時出現的錯誤,這裡先點選ignore忽略錯誤,隨後我們在解決這個問題。

在安裝到98%的時候,會報和剛才類似的錯誤:Error in invoking target install of makefile /opt/oracle/product/9.2/rdbms/lib/ins_rdbms.mk,這裡也點選ignore忽略錯誤。

忽略了兩個錯誤後,安裝完成,這時候Oracle會但出一個對話方塊,要求使用者以root身份執行$ORACLE_HOME目錄下的一個root.sh指令碼。

我們先修正上面兩個錯誤,然後在執行這個指令碼。

修正這兩個錯誤是整個安裝過程中最麻煩的地方,參照metalink上的文章,我又反反覆覆摸索了四、五次才嘗試成功。

首先以root身份來到/usr/bin目錄下,檢視gcc*

# cd /usr/bin
# ls -l gcc*
-rwxr-xr-x 2 root root 105392 May 24 07:46 gcc
-rwxr-xr-x 2 root root 94360 Dec 2 2004 gcc32

這時候我們需要編寫一個gcc296的指令碼,內容如下:

#!/bin/sh
exec /usr/bin/gcc32 -static-libgcc -B/usr/lib/gcc-lib/i386-redhat-linux/2.96/ "$@"

注意,上述指令碼是metalink給出的,不過metalink給出的指令碼至少有3個問題,首先metalink上給出的gcc32錯誤拼寫成了gcc33,第二點metalink指令碼中包含了-m32,而這個編譯標誌在編譯上述兩個錯誤時是不需要的,當然metalink上有進一步的說明,不過還是容易使人誤導。第三點其實不是metalink指令碼的問題,而是這個指令碼太長了,導致指令碼最後的”$@”跑到了第三行,而實際上整個指令碼只有兩行。像我這樣對作業系統、shell指令碼語言以及gcc編譯不是很熟悉的人很容易在這裡出錯。

將上面給出的內容新增到gcc296中,然後修改gcc296的檔案屬性為755

然後進行類似的操作編寫g++296的指令碼:

#!/bin/sh
exec /usr/bin/g++32 -static-libgcc -B/usr/lib/gcc-lib/i386-redhat-linux/2.96/ "$@"

同樣,將g++296的指令碼的檔案屬性修改為755

# chmod 755 gcc296
# chmod 755 g++296

下面根據gccg++的版本資訊,將gccg++重新命名。然後將gccg++分別指向gcc296g++296

# mv gcc gcc346
# mv g++ g++346
# ln -s -f gcc296 gcc
# ln -s -f g++296 g++

下面回到oracle使用者環境,重新編譯剛才出現錯誤的兩個物件:

透過/opt/oracle/product/9.2/install/make.log檔案,找到剛才出現錯誤的兩個物件,重新make

# su - oracle
$ cd /opt/oracle/product/9.2/sqlplus/lib
$ /usr/bin/make -f ins_sqlplus.mk install_isqlplus ORACLE_HOME=/opt/oracle/product/9.2
$ cd /opt/oracle/product/9.2/rdbms/lib
$ make -f /opt/oracle/product/9.2/rdbms/lib/ins_rdbms.mk /opt/oracle/product/9.2/rdbms/lib/extproc32 EXTPROC=/opt/oracle/product/9.2/rdbms/lib/extproc32 LIBDIR=lib32 LDFLAGS='-m32 -o $@ $(LDPATHFLAG)$(PRODLIBHOME) $(LDPATHFLAG)$(LIBHOME) $(LDPATHFLAG)$(LIBHOME)stubs/'

重新編譯後,回到root使用者,恢復剛才進行的操作:

$ exit
# rm -f gcc
# rm -f g++
# mv gcc346 gcc
# mv g++346 g++
# . /opt/oracle/product/9.2/root.sh

至此,Oracle9204的軟體部分安裝完畢。

建庫、配置listener等操作就沒有什麼可說的了,值得一提的是,建庫過程中安裝data mining的時候碰到了一個ORA-1031的錯誤,比較奇怪。

 

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

相關文章