ORACLE FOR WINDOWS ORA-12560:TNS:協議介面卡錯誤&ORA-12557:TNS:協議介面卡不可載入

清風艾艾發表於2016-11-10
    對於DBA維護oracle資料庫時,登入資料庫檢視執行狀態是必須的事。然而,當oracle架設在windows上時,尤其單個win伺服器上安裝多個例項或
同時安裝有客戶端,加之oracle相關環境變數設定混亂時,一切變的不再是那麼容易。今天,處理武漢oracle資料庫問題時就遇到了這種鬧心的情況:
Microsoft Windows [版本 6.1.7601]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
C:\Users\Administrator>sqlplus sys/oracle as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:01:44 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
請輸入使用者名稱:
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
請輸入使用者名稱:
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
SP2-0157: 在 3 次嘗試之後無法連線到 ORACLE, 退出 SQL*Plus
C:\Users\Administrator>
C:\Users\Administrator>sqlplus sys/sys as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:02:19 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
請輸入使用者名稱:
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
請輸入使用者名稱:
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
SP2-0157: 在 3 次嘗試之後無法連線到 ORACLE, 退出 SQL*Plus
C:\Users\Administrator>sqlplus sys/sys@orcl as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:02:34 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
ERROR:
ORA-12154: TNS: 無法解析指定的連線識別符號
請輸入使用者名稱:
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
請輸入使用者名稱:
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
SP2-0157: 在 3 次嘗試之後無法連線到 ORACLE, 退出 SQL*Plus
C:\Users\Administrator>
C:\Users\Administrator>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:04:08 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> conn sys/sys as sysdba
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
SQL> conn sys/sys
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
SQL> conn system/system
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
SQL> conn scott/tiger as sysdba
ERROR:
ORA-12560: TNS: 協議介面卡錯誤
SQL> exit
C:\Users\Administrator>
   當遭遇到WINDOWS ORA-12560: TNS: 協議介面卡錯誤時,我首先想到的是資料庫例項是否啟動,監聽程式是否啟動,檢查結果如下:

因為是生產環境,想也知道資料庫及監聽肯定是開著的,檢查結果與猜測的結果一樣。
   然後,檢查資料庫監聽設定是否是作業系統認證,發現監聽設定是NTS本地認證:

   到此為止,排除了例項及監聽沒開啟及監聽安全限制,接下來再看就是資料庫的環境變數設定:
   開啟我的電腦

   在我的電腦右鍵屬性

   點選系統屬性上的環境變數

可以看到,系統環境變數設定裡的ORACLE_HOME變數沒有值,終於知道原因在哪了。
   接下來就是看當前資料庫的資料庫安裝目錄,依次右鍵我的電腦-》服務-》配置-》服務-》找到ORACLE相關服務

   在oracleserviceorcl服務上右鍵屬性,可執行檔案的路徑得上一層就是ORACLE_HOME環境變數對應的值

   在含有linstener關鍵字的服務上右鍵屬性,可以檢視監聽程式安裝目錄與資料庫軟體安裝目錄是否在同一級目錄下,排除多版本資料庫同機的情況。

    進入到11.2.0資料夾下,發現有2個資料夾,一個是db軟體的,一個是客戶端軟體的,這就找到根源了,客戶端與db軟體都有oracle_home環境變數,
估計是為了避免環境變數衝突,取消系統中ORACLE_HOME的環境變數值。

   由於是生產環境,不能隨便更改作業系統中ORACLE_HOME的環境變數值,可能導致客戶端程式不能正常使用;還有一個方法就是在CMD中設定臨時環境環境變數,
這就跟unix/linux環境下類似,前提是知道ORACLE的ORACLE_SID、ORACLE_HOME環境變數值,需要設定path環境變數,另外windows不區分環境變數名的大小寫。
   設定臨時環境變數後正常登陸資料庫
C:\Users\Administrator>set oracle_sid=orcl

C:\Users\Administrator>set oracle_home=D:\app\Administrator\product\11.2.0\dbhome_1

C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:08:36 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
ERROR:
ORA-12557: TNS: 協議介面卡不可載入
請輸入使用者名稱:
ERROR:
ORA-12557: TNS: 協議介面卡不可載入
請輸入使用者名稱:
ERROR:
ORA-12557: TNS: 協議介面卡不可載入
SP2-0157: 在 3 次嘗試之後無法連線到 ORACLE, 退出 SQL*Plus
C:\Users\Administrator>
C:\Users\Administrator>set path=D:\app\Administrator\product\11.2.0\dbhome_1\bin\
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 11月 10 10:09:04 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>


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

相關文章