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