首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Linux Oracle 11g 監聽啟動失敗:lsnrctl 為空文件導致 ORA-12547 根因與修復

     編輯:程式設計疑難解答

故障現象

  • RedHat 安裝 Oracle 11g 後,dbca、netca 配置正常
  • listener.ora、tnsnames.ora 文件正確
  • $ORACLE_HOME/bin/lsnrctl 文件大小為 0 字節(空文件)
  • 連接本地庫報錯:ORA-12547: TNS:lost contact

根因定位

Oracle 11g 在 Linux 下依賴的系統庫(rpm 包)缺失,導致 lsnrctl 等關鍵二進制文件安裝時未正確鏈接/生成,產生空文件。

缺失常見依賴包(RHEL/OEL 6/7)

# 必裝包清單
yum install -y \
  binutils compat-libcap1 compat-libstdc++-33 \
  gcc gcc-c++ glibc glibc-devel ksh \
  libaio libaio-devel libgcc libstdc++ libstdc++-devel \
  libXi libXtst make sysstat \
  unixODBC unixODBC-devel

修復步驟

  1. 補裝依賴:執行上述 yum 命令。
  2. 重新鏈接 Oracle 二進制:
    cd $ORACLE_HOME/bin
    relink all
    # 或單獨重鏈接監聽
    relink tns
    
  3. 驗證 lsnrctl:
    ls -lh $ORACLE_HOME/bin/lsnrctl
    # 應顯示正常大小(約 20-30MB)
    file $ORACLE_HOME/bin/lsnrctl
    # 輸出:ELF 64-bit LSB executable...
    
  4. 啟動監聽測試:
    lsnrctl start
    lsnrctl status
    

預防指南

  1. 安裝前運行 Oracle 官方預檢腳本:./runInstaller -executeSysPrereqs
  2. 使用 oracle-database-preinstall-11g RPM 一鍵配置內核參數與依賴包。
  3. 安裝日誌留存:$ORACLE_HOME/install/make.log 記錄鏈接過程,異常時首查此日誌。

知識點延伸:ORA-12547 多重含義

場景典型原因
lsnrctl 為空/損壞依賴包缺失導致二進制生成失敗(本文案例)
監聽進程啟動即死端口衝突、listener.ora 語法錯誤、SELinux 阻擋
客戶端連接超時防火牆攔截、tnsnames.ora IP 錯誤、網絡不通

遇到 lsnrctl 空文件,**補依賴 + relink** 是標準修復動作,切勿嘗試手動複製他機二進制(庫版本不匹配會引發更多崩潰)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved