在FC5上安裝oracle 9204

space6212發表於2019-07-21

一、概述
用FC5作為工作環境已經很長時間了,但一直沒有安裝oracle資料庫,嫌麻煩,但是很多測試操作還是不敢在測試庫弄,畢竟測試庫也有不少開發人員在用,沒辦法只好在本機裝一個資料庫了。
在FC5上安裝9204很麻煩,需要修改很多東西才能順利安裝。本人在安裝的時候話了差不多三天才完全安裝好,算是用時最多的一次安裝了。
很多文件都說需要對GCC進行降級,但我發現安裝過程不需要對GCC進行降級。


二、需要的檔案
1、JRE
在FC5安裝需要用到兩個版本的JRE:一個版本是oracle自帶的,在安裝資料庫軟體時用到。還有一個是在用dcba建立資料庫時用到,需要1.3.1_15以上版本。
本文用的是:j2re1.4.2_13。大家可以上sun的站點上下載,下載得到檔案是:j2re-1_4_2_13-linux-i586.bin。依次執行
chmod +x j2re-1_4_2_13-linux-i586.bin
./j2re-1_4_2_13-linux-i586.bin
mv j2re1.4.2_13 /opt/

2、p3006854_9204_LINUX.zip
這個必須打,否則會出現類似下面的錯誤:
Initializing Java Virtual Machine from /tmp/OraInstall2007-03-02_06-01-55PM/jre/bin/java. Please wait...
Error occurred during initialization of VM
Unable to load native library: /tmp/OraInstall2007-03-02_06-01-55PM/jre/lib/i386/libjava.so: symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
安裝這個很簡單,依次執行:
gunzip p3006854_9204_LINUX.zip
cd 3006854
sh ./rhel3_pre_install.sh

三、安裝資料庫軟體
1、安裝必須的包
rpm -q gcc glibc-headers glibc-kernheaders glibc-devel compat-libstdc++ cpp compat-gcc
檢查需要的包是否已經安裝,不存在的話就安裝上
另外,還要安裝如下幾個包:
#rpm -ivh compat-libgcc-296-2.96-___.rpm
compat-libstdc++-33-3.2.3-___.rpm
compat-libstdc++-296-2.96-___.rpm

2、建立使用者
以root登入
su -
# groupadd dba
# useradd -g dba ora9i

3、建立目錄及授權
以root登入
mkdir -p /opt/ora9i/product/9204
chown -R ora9i:dba /opt/ora9i

4、設定引數
在/etc/sysctl.conf最後新增如下幾行
kernel.sem = 250 32000 100 128
kernel.shmmax = 2147483648
kernel.shmmni = 128
kernel.shmall = 2097152
kernel.msgmnb = 65536
kernel.msgmni = 2878
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

然後執行sysctl -p 使設定生效。
5、設定環境變數
以ora9i使用者登入,在.bash_profile中新增如下幾行:
ORACLE_BASE=/opt/ora9i
ORACLE_HOME=/opt/ora9i/product/9204
ORACLE_SID=ora9i
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$LD_LIBRARY_PATH
NLS_LANG=american_america.ZHS16GBK
PATH=$ORACLE_HOME/bin:/usr/bin:/usr/ucb:/etc:/usr:$PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORA_NLS33 LD_LIBRARY_PATH NLS_LANG PATH

注意:不要設定LD_ASSUME_KERNEL=2.4.1(在FC4中需要設定),否則執行任何命令都會出現下面的錯誤:
/bin/sh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory

6、打補丁
gunzip p3006854_9204_LINUX.zip
cd 3006854
sh ./rhel3_pre_install.sh

7、解壓
gunzip ship_9204_linux_disk1.cpio.gz
gunzip ship_9204_linux_disk2.cpio.gz
gunzip ship_9204_linux_disk3.cpio.gz

cpio -idmv < ship_9204_linux_disk1.cpio
cpio -idmv < ship_9204_linux_disk2.cpio
cpio -idmv < ship_9204_linux_disk3.cpio
8、正式安裝
在root下執行:
xhost +
su - ora9i
為了避免亂碼,設定:
unset LANG
unset LC_CTYPE
unset LC_ALL
然後進入解壓出來的Disk1,執行:
./runInstaller
一步一步進入,注意不要選擇建立資料庫。

注意:在安裝資料庫軟體時要用原來的JRE,不要用新下載的,否則開始安裝時會掛在copying jre上不動。

在安裝時,第一步會產生$ORACLE_HOME/bin/gennttab這個檔案,在安裝中不斷查詢該檔案是否已經生成,如果已經生成,則將檔案做以下修改:
# Change this...
LIB=`$ECHO ${TtoLIB} | $SED 's/ /
/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
INI=`$ECHO ${TtoLIB} | $SED 's/ /
/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
BAS=`$ECHO ${TtoLIB} | $SED 's/ /
/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`

# To this...
LIB=`$ECHO ${TtoLIB} | $SED 's/ /n/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
INI=`$ECHO ${TtoLIB} | $SED 's/ /n/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
BAS=`$ECHO ${TtoLIB} | $SED 's/ /n/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`

注意:實際的檔案內容可能與上面的不一致,但需要修改的內容是一樣的:就是把行的修改為n,並把上下兩行合併成一樣。
注意:這一步必須在link到18%前完成,否則linking階段時進度條死在18%不動。

在安裝到網路和監聽時會失敗,不用管就行了。

四、建立資料庫

建立資料庫要用下載的新版本的JRE,否則會報錯:
/opt/ora9i/jre/1.1.8/bin/../lib/i686/native_threads/libzip.so: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference (libzip.so)
Unable to initialize threads: cannot find class java/lang/Thread
Could not create Java VM

具體步驟是:
以ora9i使用者執行
cd $ORACLE_HOME
mv JRE JRE_BAK
ln -s /opt/j2re1.4.2_13 JRE

登入root使用者
su -
# cd /opt/ora9i/product/9204/JRE/bin/
# ln -s java jre
# cd /opt/ora9i/product/9204/JRE/lib/i386/native_threads
# ln -s java jre
然後su - ora9i,執行dbca,就可以順利完成建立資料庫了。

五、設定監聽

我們在安裝時設定網路和監聽的時候出了問題,當時是跳過的。現在可以用netmgr來設定網路和監聽:
在ora9i使用者下執行:
[ora9i@suk 9204]$ netmgr
Exception in thread "main" java.lang.VerifyError: (class: oracle/net/mgr/servicename/DBPanel$1, method: actionPerformed signature: (Ljava/awt/event/ActionEvent;)V) Illegal use of nonvirtual function call
遇到類似這樣的錯誤的話,不要慌,解決方法是修改netmgr指令碼:

[ora9i@suk 9204]$ vi /opt/ora9i/product/9204/bin/netmgr
修改
# Run Net Manager
$JRE -classpath $CLASSPATH oracle.net.mgr.container.NetApplication oracle.net.mgr.container.NetApplication
為:
# Run Net Manager
$JRE -noverify -classpath $CLASSPATH oracle.net.mgr.container.NetApplication oracle.net.mgr.container.NetApplication

之後就可以順利執行了,但用netca還是有問題,會報錯:
/opt/ora9i/product/9204/bin/netca: line 138: 3802 Aborted $JRE -classpath $CLASSPATH oracle.net.ca.NetCA $*

也沒有找出解決方法,不過沒關係了,大部分netca的操作我們都可以在netmgr來完成。

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

相關文章