協議適配器錯誤的問題


今天遭遇ORA-12560: TNS: 協議適配器錯誤的問題,經過一番努力問題已經解決,與大家共享。
造成ORA-12560: TNS: 協議適配器錯誤的問題的原因有三個:
1.監聽服務沒有起起來。windows平台個一如下操作:開始---程序---管理工具---服務,打開服務面板,

啟動oraclehome92TNSlistener服務。
2.database instance沒有起起來。windows平台如下操作:開始---程序---管理工具---服務,打開服務

面板,啟動oracleserviceXXXX,XXXX就是你的database SID.
3.注冊表問題。regedit,然后進入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0將該環境變量ORACLE_SI

D設置為XXXX,XXXX就是你的database SID.或者右幾我的電腦,屬性--高級--環境變量---系統變量--新建

,變量名=oracle_sid,變量值=XXXX,XXXX就是你的database SID.或者進入sqlplus前,在command line下

輸set oracle_sid=XXXX,XXXX就是你的database SID.
經過以上步驟,就可以解決問題。

22222222222222222222

我們知道oracle客戶端連接時涉及用到的幾個配置文件有:sqlnet.ora、tnsnames.ora、listener.ora。其中sqlnet.ora和tnsnames.ora是在客戶端的配置文件,listener.ora則是在服務器端的監聽配置文件。

想要順利的連接上服務器端,首先要確保兩者之間的網絡通暢。其二在服務器上配置好監聽程序。其三是客戶端配置好相應的tnsnames.ora。

  在配置服務器端監聽程序時要注意幾點:

  1、在服務器上的/etc/hosts文件中需要有127.0.0.1  localhost 這一條.默認情況下是有的。若沒有則在啟動監聽器是會報TNS-12537:TNS:connection closed的錯誤.同時最好添加上你的服務器IP  主機名。

  2、配置監聽器時可以使用netca或者直接寫配置文件listener.ora也行

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.120)(PORT = 1521))
)
)

其中的HOST最好使用IP,主機名可能會發生改變——影響較多。

  客戶端的配置主要的是tnsnames.ora這個文件

CENTOS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.120)(PORT = 1521))
)
(CONNECT_DATA =
(SID = centos)
(SERVER = DEDICATED)
)
)

其實也沒什么東西

  對於sqlnet.ora這個文件中的NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)這個參數,其中EZCONNECT是oracle10G新加的,好像是用來快速連接的。使用主機名Easy的連接掉服務器。不用TNSNAMES的方式連接。

  所有的設置都弄好了,如果你還是發現在客戶端(Windows)不能連接到服務器端(Linux),查看服務器上的防火牆對oracle的1521端口是否開放。不是很重要的練習用的機子可以直接將防火牆關閉。

  1) 永久性生效,重啟后不會復原 
開啟: chkconfig iptables on 
關閉: chkconfig iptables off 

2) 即時生效,重啟后復原 
開啟: service iptables start 
關閉: service iptables stop

  最后在說下在排錯時用到的一些命令:lsnrctl (start、stop、status)、tnsping (IP/主機名)、netstat -anp (查看端口)、telnet等。

333333333333333333333333333333333333333

本機連接時候:connect /as sysdba時出現:

ERROR:ORA-12560:TNS:協議適配器錯誤

解決方法:經過檢查,由於本機之前安裝過第二個數據庫test,今天刪掉其之后,沒有及時改變相應的SID導致此問題。

所以進入regedit修改HKEY_LOCAL_MACHINE/SOFTEWARE/ORACLE將環境變量oracle_sid設為XXX,XXX為數據庫SID,本機的為orcl,改為orcl就可以 了。

查閱資料后,發現還有其他兩種情況需要注意:

 

1.查看數據庫配置文件listener.ora和tnsnames.ora中的host值是否正確指向本機.
2.查看注冊表中的監聽HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/oracl******lister下的imagePath是否有值,如果沒有添加其值,指向你的oracle數據庫,比如我的本機值為E:\oracle\product\10.2.0\db_1\BIN\TNSLSNR
44444444444444444

Case:

Microsoft Windows [版本 5.2.3790]
(C) 版權所有 1985-2003 Microsoft Corp.

C:\Documents and Settings\user1>lsnrctl

LSNRCTL for 32-bit Windows: Version 9.2.0.7.0 - Production on 27-8月 -2008 09:33
:43

Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

歡迎來到LSNRCTL,請鍵入"help"以獲得信息。

LSNRCTL> status
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-12541: TNS:無監聽器
TNS-12560: TNS: 協議適配器錯誤
TNS-00511: 無監聽器
   32-bit Windows Error: 2: No such file or directory
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.55)(PORT=1521)))

TNS-12538: TNS:沒有此協議適配器
TNS-12560: TNS: 協議適配器錯誤
TNS-00508: 無此類協議適配器

LSNRCTL> start
啟動tnslsnr:請稍候...

TNSLSNR for 32-bit Windows: Version 9.2.0.7.0 - Production
系統參數文件為D:\oracle\ora92\network\admin\listener.ora
寫入D:\oracle\ora92\network\log\listener.log的日志信息
監聽:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
監聽該對象時出錯: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.55)(PORT=
1521)))
TNS-12538: TNS:沒有此協議適配器
TNS-12560: TNS: 協議適配器錯誤
TNS-00508: 無此類協議適配器


監聽程序未能啟動。請參閱上面的錯誤消息...


---------------------------
服務
---------------------------
在 本地計算機 無法啟動 OracleOraHome92TNSListener 服務。

錯誤 1067: 進程意外終止。

---------------------------
確定   
---------------------------

==============================================================

ORA-12560: TNS: 協議適配器錯誤的解決方法

造成ORA-12560: TNS: 協議適配器錯誤的問題的原因有個:

1.監聽服務沒有起起來。windows平台個一如下操作:開始---程序---管理工具---服務,打開服務面板,啟動oraclehome92TNSlistener服務。

2.database instance沒有起起來。windows平台如下操作:開始---程序---管理工具---服務,打開服務面板,啟動oracleserviceXXXX,XXXX就是你的database SID.

3.注冊表問題。regedit,然后進入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0將該環境變量ORACLE_SID設置為XXXX,XXXX就是你的database SID.或者右幾我的電腦,屬性--高級--環境變量---系統變量--新建,變量名=oracle_sid,變量值=XXXX,XXXX就是你的database SID.或者進入sqlplus前,在command line下輸set oracle_sid=XXXX,XXXX就是你的database SID.

經過以上步驟,就可以解決問題。

=======================================
TNS: 協議適配器錯誤的問題的原因有三個:
1.監聽服務沒有起起來。windows平台個一如下操作:開始---程序---管理工具---服務,打開服務面板,啟動oraclehome92TNSlistener服務。
2.database instance沒有起起來。windows平台如下操作:開始---程序---管理工具---服務,打開服務面板,啟動oracleserviceXXXX,XXXX就是你的database SID.
3.注冊表問題。regedit,然后進入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0將該環境變量ORACLE_SID設置為XXXX,XXXX就是你的database SID.或者右幾我的電腦,屬性--高級--環境變量---系統變量--新建,變量名=oracle_sid,變量值=XXXX,XXXX就是你的database SID.或者進入sqlplus前,在command line下輸set oracle_sid=XXXX,XXXX就是你的database SID.
經過以上步驟,就可以解決問題

1、ORA-12541:TNS:沒有監聽器
  原因:沒有啟動監聽器或者監聽器損壞。如果是前者,使用命令net start OracleOraHome81TNSListener(名字可能有出入)即可;如果是后者,則使用“Net8 Configuration

Assistant”工具向導之“監聽程序配置”增加一個監聽器即可(基本不用寫任何信息,一路OK。在添加之前可能需要把所有的監聽器先刪除!)
2、ORA-12500:TNS:監聽程序無法啟動專用服務器進程或ORA-12560:TNS:協議適配器錯誤
  原因:ORACLE的數據庫服務沒有啟動。使用命令net start ORACLESERVICEORADB(ORADB為數據庫名字)即可。如果仍沒有解決,請繼續向下看。

3、如果數據庫服務啟動失敗,則很有可能是其注冊表項值損壞,最好的做法是以下兩步:
  1)ORADIM -DELETE -SID oradb 刪除數據庫服務項
  2)ORADIM -NEW -SID oradb 新增數據庫服務項
  注:這個過程中如果出錯,就重啟計算機!
4、ORA-12154:TNS:能解析服務名
  原因:ORACLE的網絡服務名沒有正確配置。請使用“Net8 Configuration Assistant”工具向導之“本地網絡服務名配置”配置TNS即可。如果仍沒有解決,請繼續向下看。
5、ORA-1034 :TNS:ORACLE不可用
  原因:ORACLE的數據庫服務正確啟動,但是數據庫沒有打開!
  使用命令:
  1)svrmgrl 啟動服務管理器
  2)connect internal 以internal身份登陸
  3)startup 打開數據庫
6、ORA-12560:TNS:協議適配器錯誤(頑固性的)
  原因:未知。
  解決:必殺技--打開“Windows任務管理器”,殺死ORACLE.exe及ORADIM.exe進程,書寫自己的

ora_startup.bat,執行之!
PS:
1、我的ora_startup.bat:
net start OracleOraHome81TNSListener
net start ORACLESERVICEORADB
svrmgrl 一般情況下不用,不過有時少不了它的,具體步驟見第5步。
2、我的ora_shutdown.bat:
net stop OracleOraHome81TNSListener
net stop ORACLESERVICEORADB

  ORACLE_HOME=/u01/app/oracle/product/8.1.6 
  export ORACLE_HOME/ 包括Oracle軟件的目錄 / 
  LD_LIBRARY_PATH=/u01/app/oracle/product/8.1.6/lib; 
  export LD_LIBRARY_PATH 
  ORACLE_BASE=/u01/app/oracle 
  export ORACLE_BASE/ 包括Oracle軟件的目錄和管理軟件的目錄 / 
  ORACLE_SID=ORCL 
  export ORACLE_SID/ 缺省數據庫的標識 / 
  ORACLE_TERM=vt100 
   export ORACLE_TERM 
  ORA_NLS33=/u01/app/oracle/product/8.1.6/ 
  ocommon/nls/admin/data 
  export ORA_NLS33 / 語言支持 / 
  PATH=$PATH: /u01/app/oracle/product/8.1.6/bin 
  export PATH

 


=============================================
ORA-12560 STARTING LISTENER ON NT - TROUBLESHOOTING
---------------------------------------------------

ORA-12560: TNS Protocol adapter error
Cause: A generic protocol adapter error occurred.
Action: Check addresses used for proper protocol specification. Before reporting this error, look at the error stack and check for lower level transport errors.For further details, turn on tracing and reexecute the operation. Turn off tracing when the operation is complete.

This is a high level error just reporting an error occurred in the actual transport layer. Look at the next error down the stack and process that.


1.- Starting Listener with TCP/IP Protocol 
    
    Problem:
    You start the TNS Listener from command line and the TCP/IP address fails with a TNS-12560.

    Solution:
    Check if Microsoft Winsock Proxy(WSP) Client is enabled on the Windows NT Server, if that is the case then go to windows Control Panel, click WSP icon and select the disable Proxy Client option.

    Explanation:
    The Winsock application may fail to bind to a specific port on a Proxy Server computer when the Winsock is running Proxy Client.

2.- TNS-12560 TNS-512 Starting the listener.

    Problem:
    You try to start up the listener and receive the following error stack:
    TNS-12542: TNS:address already in use
     TNS-12560: TNS Protocol adapter error
      TNS-00512: Address already in use
       32-bit Windows Error: 48: Unknown error

    Error: TNS 512
    Text:   Address already in use
    --------------------------------------------
    Cause: Specified listener address is already being used.
    Action: Start your listener with an unused address.

    Generally this problem may ocurr for a incorrect setting in the listener.ora. Some causes of this problems may be:
    
    a.- Some defined address in the listeners.ora is been used. Make sure other listeners are not running. Either listener.log and screen output appear the address with problem.
        
    b.- Just for 8i: in windows NT the algorithm to acquire 
        the address has change, please check the Note 69026.1: Oracle 8i and socket LISTEN operations.

   Explanation:
   The listener will try to acquire the address in exclusive mode, if this is been used then the process to get it will fail. 
    
3.- Starting the listener the errors ORA-12203,ORA-12560, NL-462 or NL-427 may be raised.

    Problem:
    You try to start up the listener and receive the following errors 
    ORA-12203,ORA-12560, NL-462 or NL-427.

    Solution:
    Recreate the listener.ora file.

    Explanation:
    Some corruption in the listener.ora may get unable to the tnslsnr to work adequatly.


4.- Failed to start service, TNS-12560, TNS-00530 when create new listener services

    Problem: 
    To recreate Oracle TNS listener service on Windows NT, you delete the service entry in registry. When using lsnrctl to start the listener, you get the following errors:

    LSNRCTL> start
    Starting tnslsnr: please wait...

    Failed to start service, error 3.

    TNS-00530: Protocol adapter error

    The Listener service is not recreated and the Listener would not start.
    You are using a valid listener.ora file and protocol adapters.


    Solution:
    After you delete the Listener service from registry, you have to reboot NT for it to take effect. Then you can use lsnrctl to start the Listener, which would re-create the listener service.


    Explanation:
    The Listener service is marked 'disabled', but it still exists after you delete the service from registry.

555555555555555555555555555555555

Oracle協議適配器錯誤解決辦法

 

Oracle中新建了一個數據庫,今天把它刪了之后再登錄SQL*PLUS就登不上去了,出現ORA-12560:TNS:協議適配器錯誤。

  ORA-12560: TNS: 協議適配器錯誤的解決方法

  造成ORA-12560: TNS: 協議適配器錯誤的問題的原因有三個:

  1.監聽服務沒有起起來。windows平台個一如下操作:開始---程序---管理工具---服務,打開服務面板,啟動oraclehome92TNSlistener服務。

  2.database instance沒有起起來。windows平台如下操作:開始---程序---管理工具---服務,打開服務面板,啟動oracleserviceXXXX,XXXX就是你的database SID.

  3.注冊表問題。regedit,然后進入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0將該環境變量ORACLE_SID設置為XXXX,XXXX就是你的database SID.或者右幾我的電腦,屬性--高級--環境變量---系統變量--新建,變量名=oracle_sid,變量值=XXXX,XXXX就是你的database SID.或者進入sqlplus前,在command line下輸set oracle_sid=XXXX,XXXX就是你的database SID.

  經過以上步驟,就可以解決問題。

  =======================================

  1、ORA-12541:TNS:沒有監聽器

  原因:沒有啟動監聽器或者監聽器損壞。如果是前者,使用命令net start OracleOraHome81TNSListener(名字可能有出入)即可;如果是后者,則使用“Net8 Configuration

  Assistant”工具向導之“監聽程序配置”增加一個監聽器即可(基本不用寫任何信息,一路OK。在添加之前可能需要把所有的監聽器先刪除!)

  2、ORA-12500:TNS:監聽程序無法啟動專用服務器進程或ORA-12560:TNS:協議適配器錯誤

  原因:ORACLE的數據庫服務沒有啟動。使用命令net start ORACLESERVICEORADB(ORADB為數據庫名字)即可。如果仍沒有解決,請繼續向下看。

  3、如果數據庫服務啟動失敗,則很有可能是其注冊表項值損壞,最好的做法是以下兩步:

  1)ORADIM -DELETE -SID oradb 刪除數據庫服務項

  2)ORADIM -NEW -SID oradb 新增數據庫服務項

  注:這個過程中如果出錯,就重啟計算機!

  4、ORA-12154:TNS:能解析服務名

  原因:ORACLE的網絡服務名沒有正確配置。請使用“Net8 Configuration Assistant”工具向導之“本地網絡服務名配置”配置TNS即可。如果仍沒有解決,請繼續向下看。

  5、ORA-1034 :TNS:ORACLE不可用

  原因:ORACLE的數據庫服務正確啟動,但是數據庫沒有打開!

  使用命令:

  1)svrmgrl 啟動服務管理器

  2)connect internal 以internal身份登陸

  3)startup 打開數據庫

  6、ORA-12560:TNS:協議適配器錯誤(頑固性的)

  原因:未知。

  解決:必殺技--打開“Windows任務管理器”,殺死ORACLE.exe及ORADIM.exe進程,書寫自己的

  ora_startup.bat,執行之!

  PS:

  1、我的ora_startup.bat:

  net start OracleOraHome81TNSListener

  net start ORACLESERVICEORADB

  svrmgrl 一般情況下不用,不過有時少不了它的,具體步驟見第5步。

  2、我的ora_shutdown.bat:

  net stop OracleOraHome81TNSListener

  net stop ORACLESERVICEORADB

  ORACLE_HOME=/u01/app/oracle/product/8.1.6

  export ORACLE_HOME/ 包括Oracle軟件的目錄 /

  LD_LIBRARY_PATH=/u01/app/oracle/product/8.1.6/lib;

  export LD_LIBRARY_PATH

  ORACLE_BASE=/u01/app/oracle

  export ORACLE_BASE/ 包括Oracle軟件的目錄和管理軟件的目錄 /

  ORACLE_SID=ORCL

  export ORACLE_SID/ 缺省數據庫的標識 /

  ORACLE_TERM=vt100

  export ORACLE_TERM

  ORA_NLS33=/u01/app/oracle/product/8.1.6/

  ocommon/nls/admin/data

  export ORA_NLS33 / 語言支持 /

  PATH=$PATH: /u01/app/oracle/product/8.1.6/bin

  export PATH

666666666666666666666666

應該是ORACLE_SID導致的,你可以加上SID訪問一下sqlplus "sys@lcam as sysdba",如果可以,你可以在環境變量加一個ORACLE_SID試試。添加方法,右鍵點我的電腦/屬性/系統配置/環境變量/新建
 
追問
我使用了閣下的sqlplus "sys@lcam as sysdba" 的方法,確實連接正常了,但是我不明白,這是為什么呢?難道我之前使用set ORACLE_SID=lcam 沒有起到作用么,但為什么沒有起到作用呢?之前也是這么做的啊,請閣下不吝賜教
這樣雖然能夠聯通,但是當我使用數據泵向外備份數據的時候,仍然會報協議適配器錯誤,在環境變量中設ORACLE_SID也沒有起作用啊
 
追答
windows參數調用是%VAR%
你可以試試 set ORACLE_SID=“lcam”或者set ORACLE_SID=“LCAM”。
另外有個參數TNS_ADMIN=存放tnsnames.ora的路徑。

得根據實際情況測試一下,你可以研究一下instantclient,幾個參數設置好了,怎么訪問都可以。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM