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

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