在現代 Linux(RHEL/OEL 5/6/7、CentOS 5/6/7)上安裝已停止支援的 Oracle 9i (9.2.0.4) 需解決 glibc、libstdc++、X11 圖形庫、LD_ASSUME_KERNEL 等相容性問題。本文記錄完整安裝流程、關鍵補丁、環境變數設定、常見錯誤代碼與解決方案,供維護舊系統參考。
# 記憶體 ≥ 512MB
grep MemTotal /proc/meminfo
# 交換空間 ≥ 1GB (建議 2x RAM)
/sbin/swapon -s
# 核心版本
uname -r # 2.6.18+ (RHEL5/OEL5)
# 32 位元相容性套件 (Oracle 9i 為 32-bit)
rpm -ivh compat-gcc-32-3.2.3-47.3.i386.rpm
rpm -ivh compat-gcc-32-c++-3.2.3-47.3.i386.rpm
rpm -ivh compat-libcwait-2.1-1.i386.rpm
rpm -ivh compat-libstdc++-33-3.2.3-47.3.i386.rpm
rpm -ivh glibc-devel-2.3.4-2.13.i386.rpm
rpm -ivh libaio-0.3.103-3.i386.rpm
rpm -ivh libaio-devel-0.3.103-3.i386.rpm
rpm -ivh sysstat-5.0.5-1.i386.rpm
# X11 圖形庫 (安裝程式需圖形介面)
rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm
rpm -ivh libXtst-1.0.1-3.1.i386.rpm
rpm -ivh libXft-2.1.10-1.1.i386.rpm
unzip p3006854_9204_Linux.zip
cd 3006854
./rhel3_pre_install.sh
# 輸出 "Patch has already been applied" 表示已套用或系統已相容
# Oracle 9i 專用:強制使用 LinuxThreads (非 NPTL)
# RHEL5/OEL5 核心 2.6.18 需設為 2.4.19
export LD_ASSUME_KERNEL=2.4.19
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export ORACLE_SID=udb
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin
# 圖形介面顯示設定
# 本機安裝:DISPLAY=:0.0
# 遠程安裝:DISPLAY=客戶端IP:0.0 (需 X Server 如 Xming/VcXsrv)
export DISPLAY=:0.0
關鍵:LD_ASSUME_KERNEL 必須與核心版本對應,錯誤值會導致 librt.so.1、libzip.so 載入失敗,引發 Unable to initialize threads、Could not create Java VM 等錯誤。
cpio -idmv < ship_9204_Linux_disk1.cpio
cpio -idmv < ship_9204_Linux_disk2.cpio
cpio -idmv < ship_9204_Linux_disk3.cpio
# 產生 Disk1/ Disk2/ Disk3/ 目錄
cd Disk1
./runInstaller
# 必須在本機圖形終端機或遠程 X Server 下執行
# SSH 純文字模式會報 "Can't connect to X11 window server"
| 錯誤訊息 | 原因 | 解決方案 |
|---|---|---|
| libstdc++-libc6.1-1.so.2: cannot open shared object file | 缺少舊版 C++ 執行庫 | ln -s /usr/lib/libstdc++-3-libc6.2-2-2.10.0.so /usr/lib/libstdc++-libc6.1-1.so.2 (視實際檔案調整) |
| libXp.so.6: cannot open shared object file | 缺少 X11 列印庫 | rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm |
| Can't connect to X11 window server using 'local_host:0.0' | DISPLAY 變數錯誤或無 X Server | 本機安裝設 DISPLAY=:0.0;遠程安裝啟動 Xming/VcXsrv 並設 DISPLAY=本機IP:0.0 |
| symbol errno, version GLIBC_2.0 not defined in file libc.so.6 | LD_ASSUME_KERNEL 未設定或錯誤 | 設定 export LD_ASSUME_KERNEL=2.4.19 (RHEL5/OEL5) |
| ORA-01031: insufficient privileges 建立 init.ora | 非 oracle 用戶建立檔案 | 必須 su - oracle 後建立 |
| Net Configuration Assistant / Database Configuration Assistant 失敗 | Java VM 無法啟動 (GLIBC/LD_ASSUME_KERNEL) | 修正 LD_ASSUME_KERNEL、確認 32-bit JRE 相容 |
若 NetCA、DBCA、EMCA 因 Java 相容性失敗:
$ORACLE_HOME/bin/netca /silent /responsefile $ORACLE_HOME/network/install/netca_typ.rspCREATE DATABASE 腳本或 dbca -silent -responseFile ...emctl start dbconsole (10g+),9i 通常用 oemapp 獨立主控台。sqlplus /nolog
CONN / AS SYSDBA
SELECT * FROM v$version;
-- 應顯示 Oracle9i Enterprise Edition Release 9.2.0.4.0
本筆記整理自實際在 OEL5 (2.6.18-164.el5) 上安裝 Oracle 9.2.0.4 的完整過程,涵蓋從依賴套件到 Java VM 相容性的所有坑點,可作為舊版本維護的參考手冊。