特定業務場景下(如客戶強制要求),需在 64 位作業系統上安裝 32 位 Oracle 軟體。雖理論可行,但實際過程常因套件相容性問題導致錯誤頻出。本文記錄在 RedHat 4 (x86_64) 上安裝 Oracle 10g 的完整嘗試過程、遭遇的關鍵錯誤與解決嘗試,結論不建議在生產環境採用此架構。
配置本地光碟為 YUM 來源,並啟用多庫同時安裝 32/64 位套件:
# /etc/yum.conf 關鍵設定 multilib_policy=all
實測 YUM 效果有限,仍需手動處理大量套件相依。
依官方文件安裝對應 32 位套件(實際僅部分成功,標 n 者未裝上):
nnnnnnnnn補充:官方未列明但 RedHat 4 必裝 libaio、libaio-devel,否則檢測不通過。GUI 缺 libXp 可裝 xorg-x11-deprecated-libs 解決。
安裝過程中報錯:
信息: 開始從衍生進程輸出: ... /u01/product/10.2.0/db_1/bin/genclntsh /usr/bin/ld: skipping incompatible /u01/product/10.2.0/db_1/lib/libxml10.a when searching for -lxml10 /usr/bin/ld: cannot find -lxml10 collect2: ld returned 1 exit status genclntsh: Failed to link libclntsh.so.10.1 make: *** [client_sharedlib] 錯誤 1 異常錯誤: MakefileException 調用 makefile '/u01/product/10.2.0/db_1/network/lib/ins_net_client.mk' 目標 'client_sharedlib' 時出錯
錯誤分析: 連結器嘗試連結 32 位庫 libxml10.a 但發現不相容(可能為 64 位版本),導致找不到 -lxml10,進而無法生成 libclntsh.so.10.1。
後續衍生大量錯誤,安裝被迫終止。
強烈不建議在 64 位 Linux 系統上安裝 32 位 Oracle。 主要原因:
libxml10、libclntsh)正確做法:64 位 OS 搭配 64 位 Oracle,或使用虛擬化/容器隔離 32 位環境。