資料庫的網路連線

risingsunczl發表於2007-01-25
資料庫的網路連線[@more@]

資料庫的網路連線

1、客戶端機器
正確配置sqlnet.ora檔案(對應的操作:命名方法的配置可改變此檔案)
正確配置tnsnames.ora檔案(對應的操作:網路服務名的配置可改變此檔案)
2、伺服器機器
資料庫已經啟動
監聽服務Listenner已經啟動,對應listener.ora檔案
3、原理分析
以TNSNAMES命名方法為例:
以sqlplus為例,當我們輸入使用者名稱、密碼和網路服務名後,sqlplus首先在客戶端尋找sqlnet.ora檔案的NAMES.DEFAULT_DOMAIN引數,然後與將此引數與輸入的網路服務名拼接在一起形成新的名字
然後又在客戶端尋找tnsnames.ora檔案,將在第一步形成的名字與此檔案中的service_name匹配,如果一致,則繼續下一步驟。
伺服器端listener程式必須提供上面的服務和埠,如果沒有問題的話,則建立與listener程式的連線,然後根據不同的伺服器模式如專用伺服器模式或者共享伺服器模式,listener採取接下去的動作。預設是專用伺服器模式,沒有問題的話客戶端就連線上了資料庫的server process。(更具體的細節參考下面第4小節)

最後,網路連線已經建立,listener程式的歷史使命也就完成了。
Ps:只有sqlnet.ora檔案中存在TNSNAMES時,才會用到tnsnames.ora檔案
4、listenner程式
a、如果不是使用的遠端的連線,listener程式就不是必需的,同樣的如果關閉listener程式並不會影響已經存在的資料庫連線。
作業系統認證或本地登入都不需要此程式
b、強制服務和自動服務
強制服務---來自於listener.ora檔案,對應的操作;用status命令顯示時,服務名來自於listener.ora檔案中的GLOBAL_DBNAME,例項名來自listener.ora檔案中的SID_NAME,並且例項的狀態顯示為UNKOWN
自動服務---listener.ora檔案中沒有對應內容,由執行的例項自動註冊到監聽器中;用status命令顯示時,服務名來自於引數檔案的db_name.db_domian,例項名來自於引數檔案的instance_name,並且例項的狀態顯示為READY
因此,用status命令檢視時,有可能看到一個服務下有兩個或多個例項名
c、無法啟動 OracleOraHome81TNSListener 服務,系統提示找不到指定的路徑
在執行處執行REGEDIT進入登錄檔到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesOracleOraHome81TNSListener
發現ImagePath關鍵值沒有了,增加他,選擇可擴充字串值,編輯字串的數值資料為:f:OracleOra81BINTNSLSNR
退出登錄檔。(我的環境是oracle8.1.7
5、常用的診斷命令
伺服器端:lsnrctl status,檢視listenner程式的狀態
客戶端:tnsping 網路服務名,檢視客戶端sqlnet.ora和tnsname.ora檔案的配置正確與否
6、附錄
命名方法---解析網路服務名的一種方式

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

相關文章