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