oracle11g安裝出現TNS:協議適配器錯誤問題相關整理總結


天安裝Oracle11g的Windows版時,發生“TNS協議適配器錯誤”,我進入Windows系統的服務管理器啟動“OracleOraDb11g_home1TNSListener”時,又發生了“錯誤3 系統找不到指定路徑”。在網上查找了些資料,很多都是Oracle9i或是Oracle10g的解決辦法,但是在11g中也是有幫助的,只是不同的版本之間,TNSLSNR.EXE的存放目錄不同。在11g中,該文件存放在“oracle11.1.0\product\db\BIN”(部分目錄名我修改過)
    如果是在安裝時發生這個錯誤,以下是我的解決辦法,需要修改注冊表。
一、在“開始”->“運行”中輸入“regedit”,打開注冊表
二、進入注冊表,“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDb11g_home1TNSListener”查看“OracleOraDb11g_home1TNSListener”值中有沒有“ImagePath”鍵,如果沒有的話,需要添加,然后給這個鍵賦值,這值是“J:\oracle11.1.0\product\db\BIN\TNSLSNR.EXE”(不同機器路徑不同,需要注意)。保存推出注冊表。
三、進入服務管理,右鍵點擊“我的電腦”,選擇“管理”進入“計算機管理”,然后點擊“服務和應用程序”打開樹形列表,點擊“服務”。這樣我們就能開到整個計算的服務,找到Oracle11g的監聽服務“OracleOraDb11g_home1TNSListener”,點擊啟動就可以安裝“Oracle Database Configuration Assistant”了。
以下是安裝“Oracle Database Configuration Assistant”時Oracle11g打出的日志:
已通過 Configuration Assistant "Oracle Net Configuration Assistant" 生成輸出:
Command = C:\WINDOWS\system32\cmd /c call J:\oracle11.1.0\product\db/bin/netca.bat /orahome J:\oracle11.1.0\product\db /orahnam OraDb11g_home1 /instype typical /inscomp client,oraclenet,javavm,server,ano /insprtcl tcp,nmp /cfg local /authadp NO_VALUE /nodeinfo NO_VALUE /responseFile J:\oracle11.1.0\product\db\network\install\netca_typ.rsp
正在對命令行參數進行語法分析:
參數"orahome" = J:\oracle11.1.0\product\db
參數"orahnam" = OraDb11g_home1
參數"instype" = typical
參數"inscomp" = client,oraclenet,javavm,server,ano
參數"insprtcl" = tcp,nmp
參數"cfg" = local
參數"authadp" = NO_VALUE
參數"nodeinfo" = NO_VALUE
參數"responsefile" = J:\oracle11.1.0\product\db\network\install\netca_typ.rsp
完成對命令行參數進行語法分析。
Oracle Net Services 配置:
完成概要文件配置。
監聽程序的啟動端口:1521
Oracle Net 監聽程序啟動:
正在運行監聽程序控制:
      J:\oracle11.1.0\product\db\bin\lsnrctl start LISTENER
   監聽程序控制完成。
啟動監聽程序失敗。監聽程序可能已經在運行。
監聽程序配置完成。
成功完成 Oracle Net Services 配置。退出代碼是0
Configuration Assistant "Oracle Net Configuration Assistant" 成功
-----------------------------------------------------------------------------
已通過 Configuration Assistant "Oracle Database Configuration Assistant" 生成輸出:
Command = oracle.assistants.server.DbcaCfgPlugIn C:\WINDOWS\system32\cmd /c call J:\oracle11.1.0\product\db/bin/dbca.bat  -progress_only -createDatabase -templateName General_Purpose.dbc -sid orcl -gdbName orcl  -emConfiguration LOCAL      -datafileJarLocation J:\oracle11.1.0\product\db\assistants\dbca\templates  -datafileDestination J:\oracle11.1.0\oradata -responseFile NO_VALUE   -characterset ZHS16GBK   -obfuscatedPasswords false  -sampleSchema true   -recoveryAreaDestination NO_VALUE     -totalMemory 614   -automaticMemoryManagement true  -maskPasswords false   -sysPassword  ${S_SYSPASS}  -systemPassword  ${S_SYSTEMPASS}  -dbsnmpPassword  ${S_DBSNMPPASS}  -sysmanPassword  ${S_SYSMANPASS}  ${S_SYSASMPASS}  ${S_HOSTUSERPASS}
Configuration Assistant "Oracle Database Configuration Assistant" 失敗
-----------------------------------------------------------------------------
"J:\oracle11.1.0\product\db\cfgtoollogs\configToolFailedCommands" 腳本包含所有失敗的, 跳過的或取消的命令。可使用此文件在 OUI 外運行這些 Configuration Assistant。請注意, 執行此腳本前, 您可能需要用口令 (如果有) 來更新此腳本。-----------------------------------------------------------------------------

 

 

 

第二種解決方案:

我們知道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等。


免責聲明!

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



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