lsnrctl 与 tnsnames.ora 的联系
平臺:Windoxs XP+Oracle 11G
?
當使用oralce的?Net Manager創建了一個名為“L3”的Listener后,要想使用lsnrctl啟動和關閉 L3?還必須在tnsnames.ora 中配置一個名為L3的條目.
listener.ora
L3 =
? (DESCRIPTION =
??? (ADDRESS = (PROTOCOL = TCP)(HOST = princessd)(PORT = 1523))
? )
SID_LIST_L3 =
? (SID_LIST =
??? (SID_DESC =
????? (GLOBAL_DBNAME = m_oracle)
????? (ORACLE_HOME = F:\app\Administrator\product\11.2.0\home)
????? (SID_NAME = oracle)
??? )
? )
ADR_BASE_L3 = f:\app\Administrator
*****************************************************************
tnsnames.ora
L3 =
? (DESCRIPTION =
??? (ADDRESS_LIST =
????? (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1523))
??? )
??? (CONNECT_DATA =
????? (SERVICE_NAME = m_oracle)
??? )
? )
tnanames.ora 中,services_name 必須與你想連接的數據庫所暴露出的GLOBAL_DBNAME 相同.
一個監聽上是可以注冊多個數據庫的,而一個CONNECT_DATA只能指定一個services_name.
?
如果缺少 tnanames.ora 中對應的條目,L3 服務也能夠起來。
因為啟動監聽的時候,會先啟動對所定義的地址的監聽程序,然后驗證在TNAnames.ora中又沒有對應的條目。
?
LSNRCTL> start L3
啟動tnslsnr: 請稍候...
?
TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production
系統參數文件為F:\app\Administrator\product\11.2.0\home\NETWORK\ADMIN\listener.ora
寫入f:\app\administrator\diag\tnslsnr\princessd\l3\alert\log.xml的日志信息
監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=princessd)(PORT=1523)))
?
TNS-01101: 無法找到服務名稱
雖然驗證失敗,但是后臺的監聽仍然是正確啟動的,第一啟動的時候還會創建一個 Windows服務,然后你就可以用那個Windows服務來啟動和停止監聽了。
但是如果想要用命令 stop L3來停止監聽或者 status L3來查詢狀態,結果如下。因為lsnrctl在查詢和關閉監聽的時候,是先從tnsnames中找到對應的條目,
然后根據地址連接到監聽程序,然后查詢狀態或者要求監聽停止的。因為缺少名為L3的條目,所以不知道到那里查詢或者停止監聽.
LSNRCTL> stop L3
TNS-01101: 無法找到服務名稱L3
?
LSNRCTL> status L3
TNS-01101: 無法找到服務名稱L3
?
?
?這個時候要么從Windows服務總去停止監聽,或者添加對應的條目在tnsnames.ora中.
總結
以上是生活随笔為你收集整理的lsnrctl 与 tnsnames.ora 的联系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器的基本设置
- 下一篇: jQuery 入门教程(1): 概述