在Oracle網(wǎng)絡(luò)結(jié)構(gòu)中解決連接問題
在Oracle網(wǎng)絡(luò)結(jié)構(gòu)中的連接問題是讓很多人都頭疼的問題,正是在Oracle網(wǎng)絡(luò)結(jié)構(gòu)中的連接問題的出現(xiàn)給大家的工作帶來帶來了很多的不便,下文中就教給大家解決在Oracle網(wǎng)絡(luò)結(jié)構(gòu)中的連接問題的方法。
首先來說Oracle的網(wǎng)絡(luò)結(jié)構(gòu),往復(fù)雜處說能加上加密、LDAP等等。。這里不做討論,重點放在基本的網(wǎng)絡(luò)結(jié)構(gòu)也就是我們最常用的這種情況
三個配置文件
listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME etworkadmin目錄下。
重點:三個文件的作用和使用
#-----------------------
sqlnet.ora-----作用類似于linux或者其他unix的nsswitch.conf文件,通過這個文件來決定怎么樣找一個連接中出現(xiàn)的連接字符串,
例如我們客戶端輸入
sqlplus sys/oracle@orcl
假如我的sqlnet.ora是下面這個樣子
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那么,客戶端就會首先在tnsnames.ora文件中找orcl的記錄.如果沒有相應(yīng)的記錄則嘗試把orcl當(dāng)作一個主機(jī)名,通過網(wǎng)絡(luò)的途徑去解析它的ip地址然后去連接這個ip上GLOBAL_DBNAME=orcl這個實例,當(dāng)然我這里orcl并不是一個主機(jī)名
如果我是這個樣子
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客戶端就只會從tnsnames.ora查找orcl的記錄
括號中還有其他選項,如LDAP等并不常用。
#------------------------
Tnsnames.ora------這個文件類似于unix 的hosts文件,提供的tnsname到主機(jī)名或者ip的對應(yīng),只有當(dāng)sqlnet.ora中類似
NAMES.DIRECTORY_PATH= (TNSNAMES) 這樣,也就是客戶端解析連接字符串的順序中有TNSNAMES是,才會嘗試使用這個文件。
例子中有兩個,ORCL 對應(yīng)的本機(jī),SALES對應(yīng)的另外一個IP地址,里邊還定義了使用主用服務(wù)器還是共享服務(wù)器模式進(jìn)行連接,一句一句說
#你所要連接的時候輸入得TNSNAME
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
#下面是這個TNSNAME對應(yīng)的主機(jī),端口,協(xié)議
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
#使用專用服務(wù)器模式去連接需要跟服務(wù)器的模式匹配,如果沒有就根據(jù)服務(wù)器的模式
#自動調(diào)節(jié)
(SERVER = DEDICATED)
#對應(yīng)service_name,SQLPLUS>show parameter service_name;
#進(jìn)行查看
(SERVICE_NAME = orcl)
)
)
大家按照上文中講解的內(nèi)容,就能夠完成在Oracle網(wǎng)絡(luò)結(jié)構(gòu)中的連接問題的解決,希望大家通過本文的學(xué)習(xí)都能夠從中有所收獲,在以后的工作中遇到類似問題就能夠輕松解決。