一、客戶端設置
1.sqlnet.ora
通過這個文件來決定怎樣找一個連接中出現的連接字符串
示例文件:
# sqlnet.ora Network Configuration File: F:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME, ONAMES, EZCONNECT)
#NAMES.DEFAULT_DOMAIN = oracle.com
內容說明:
????? SQLNET.AUTHENTICATION_SERVICES= (NTS)----這個表示采用OS認證,在數據庫服務器上,可以利用sqlplus / as sysdba。一般這個配置在windows上是ok的,在unix環境下可能會有問題,一般在unix下可以去掉這個配置。
????? NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)----表示將首先利用tnsnames進行解析;如果tnsnames解析不到,將使用hostname解析;如果hostname解析不到,將采用onames進行解析;最后使用EZCONNECT解析。例如我們客戶端輸入:sqlplus zidi/zidi@changbai,那么,客戶端就會首先在tnsnames.ora文件中找orcl的記錄.如果沒有相應的記錄則嘗試把orcl當作一個主機名,通過網絡的途徑去解析它的IP地址然后去連接這個IP上global_name=changbai這個實例,當然我這里orcl并不是一個主機名。
????? 被注釋掉的NAMES.DEFAULT_DOMAIN = changbai.com----表示采用默認的域名為changbai.com,在tnsnames.ora中如果配置對應的解析,如果原來的數據庫別名是oralocal(即網絡服務名),那么,當啟用這個參數后,在tnsnames中的配置要改成oralocal.changbai.com。在使用tnsping時或者sqlplus登錄時,只需寫前面的別名,系統會自動加上后面的域名來進行解析。?????
2.tnsnames.ora
這個文件放在客戶端機器上,記錄客戶端訪問數據庫的本地配置,其實就是定義網絡服務,只有當sqlnet.ora中有"NAMES.DIRECTORY_PATH= (TNSNAMES)"這樣的字樣時,也就是客戶端解析連接字符串的順序中有TNSNAMES時,才會嘗試使用這個文件。
示例文件:
# tnsnames.ora Network Configuration File: F:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
HUINAMN =網路服務名
CHANGBAI =
ORCL =
二、服務器端設置listener.ora
????? 它是listener監聽器進程的配置文件。關于listener進程就不多說了,接受遠程對數據庫的接入申請并轉交給oracle的服務器進程。所以如果不是使用的遠程的連接,listener進程就不是必需的,同樣的如果關閉listener進程并不會影響已經存在的數據庫連接。
示例文件:
# listener.ora Network Configuration File: F:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =這里定義LISTENER進程為哪個實例提供服務
LISTENER =監聽器的名字,一臺數據庫可以有不止一個監聽器
????? 上面的例子是一個最簡單的例子,但也是最普遍的。一個listener進程為一個數據庫實例(SID)提供服務。
三、總結
????? 上面說到的三個文件都可以通過圖形的配置工具來完成配置:Database Configuration Assistant,Net Configuration Assistant
????? 具體的配置可以嘗試一下,然后來看一下配置文件,這樣一來總體結構就有了,是當你輸入sqlplus zidi/zidi@changbai的時候
????? 1. 查詢sqlnet.ora看看名稱的解析方式,發現是TNSNAME
????? 2. 則查詢tnsnames.ora文件,從里邊找orcl的記錄,并且找到主機名,端口和service_name
????? 3. 如果listener進程沒有問題的話,建立與listener進程的連接。
????? 4. 根據不同的服務器模式如專用服務器模式或者共享服務器模式,listener采取接下去的動作。默認是專用服務器模式,沒有問題的話客戶端就連接上了數據庫的server process。
????? 5. 這時候網絡連接已經建立,listener進程的歷史使命也就完成了。
換個角度理解:
????? changbai是我們連接遠端數據庫用到的服務命名,但是最終必須轉化為host:port:servide_name這樣的連接字串,而這個轉化可以理解為是翻譯的過程,而要想翻譯成功,則必須選擇好翻譯方法,那么sqlnet.ora就是我們用來選擇翻譯方法的,其中的NAMES.DIRECTORY_PATH= (TNSNAMES) 就是我們選擇的命名解析方法; tnsnames.ora是翻譯方法中的一種----本地命名解析方法的配置文件,就好像我們選擇了查字典方法,這個文件就是我們的字典一樣里面存放著所有服務命名對應的連接字串;至于listener.ora則是負責接受我們請求的負責任人----連接地址配置文件,里面包括了連接負責人的連接地址,也放著經過他允許可以連接的數據庫信息。這樣就構成了Oracle的網絡架構。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
