?ORACLE客戶(hù)端連服務(wù)器的注意事項(xiàng):
??????? 1. 通過(guò)SQL*NET協(xié)議,ORACLE客戶(hù)端連服務(wù)器時(shí)一般需要配置sqlnet.ora和tnsnames.ora。
?? 它們默認(rèn)的目錄在$ORACLE_HOME/network/admin 目錄下
??
?? 也可以設(shè)置環(huán)境變量TNS_ADMIN指向你想用的sqlnet.ora和tnsnames.ora目錄
?? 例如:
?? TNS_ADMIN=/home/oracle/config/9.0.1;export TNS_ADMIN
??
?? sqlnet.ora文件決定找數(shù)據(jù)庫(kù)服務(wù)器別名的方式
??
?? 默認(rèn)的參數(shù)有
?? NAMES.DEFAULT_DOMAIN = WORLD
?? NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
??
?? 如果你的ORACLE客戶(hù)端和服務(wù)器默認(rèn)的域名不一樣,需要用#號(hào)注釋第一行
?? #NAMES.DEFAULT_DOMAIN = WORLD
?? 使它不起作用。
?????????? NAMES.DIRECTORY_PATH指定找服務(wù)器別名的順序 (本地的tnsnames.ora文件, 命名服務(wù)器, 主機(jī)名方式)
??????????
?????????? 服務(wù)器的sqlnet.ora里可以設(shè)置檢查客戶(hù)端是否alive的時(shí)間間隔
?????????? sqlnet.expire_time = 10
??????????
?????????? tnsnames.ora文件里寫(xiě)數(shù)據(jù)庫(kù)服務(wù)器別名的詳細(xì)內(nèi)容,有以下幾種寫(xiě)法:
?????????? # 一般的寫(xiě)法??????????
?????????? APPDB =
???????????? (DESCRIPTION =
?????????????? (ADDRESS_LIST =
???????????????? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.35)(PORT = 1521))
?????????????? )
?????????????? (CONNECT_DATA =
???????????????? (SERVICE_NAME = appdb)
?????????????? )
???????????? )
?????????? # 明確標(biāo)明用dedicated方式連接數(shù)據(jù)庫(kù)
?????????? APPD=
?????????? (DESCRIPTION=
???????????? (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.35)(PORT=1521))
???????????? (CONNECT_DATA=
?????????????? (SERVICE_NAME=appdb)
?????????????? (SERVER=DEDICATED)))
???
?????????? # 對(duì)多個(gè)listener端口做均衡負(fù)載方式連接數(shù)據(jù)庫(kù)
?????????? APPS =
???????????? (DESCRIPTION =
???????????? (ADDRESS_LIST =
???????????????? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.35)(PORT = 1521))
???????????????? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.35)(PORT = 1856))
????????????? )
?????????????? (CONNECT_DATA =
???????????????? (SERVICE_NAME = appdb)
?????????????? )
???????????? )???
?????????
???? # 注意:如果數(shù)據(jù)庫(kù)服務(wù)器用MTS,客戶(hù)端程序需要用database link時(shí)最好明確指明客戶(hù)端用dedicated直連方式,
???? #?????? 不然會(huì)遇到很多跟分布式環(huán)境有關(guān)的ORACLE BUG。
???? # ??? 一般情況下數(shù)據(jù)庫(kù)服務(wù)器用直接的連接會(huì)好一些,除非你的實(shí)時(shí)數(shù)據(jù)庫(kù)連接數(shù)接近1000。
????????????
??????? 2. /etc/hosts (UNIX)
?????????? 或者windows\hosts(WIN98)? winnt\system32\drivers\etc\hosts (WIN2000)
?????????? 客戶(hù)端需要寫(xiě)入數(shù)據(jù)庫(kù)服務(wù)器IP地址和主機(jī)名的對(duì)應(yīng)關(guān)系。
??????????
?????????? 127.0.0.1?????? localhost
?????????? 192.168.0.35??? oracledb oracledb
?????????? 192.168.0.45??? tomcat tomcat
?????????? 202.84.10.193?? bj_db?? bj_db???
??????????
?????????? 有些時(shí)候我們配置好第一步后,tnsping 數(shù)據(jù)庫(kù)服務(wù)器別名顯示是成功的,
?????????? 但是sqlplus username/password@servicename不通,jdbc thin link 也不通的時(shí)候,????????
?????????? 一定不要忘了在客戶(hù)端做這一步,原因可能是DNS服務(wù)器里沒(méi)有設(shè)置這個(gè)服務(wù)器IP地址和主機(jī)名的對(duì)應(yīng)關(guān)系。
??????????
?????????? 如果同時(shí)有私有IP和Internet上公有IP,私有IP寫(xiě)在前面,公有IP寫(xiě)在后面。
??????????
?????????? 編輯前最好留一個(gè)備份,增加一行時(shí)也最好用復(fù)制粘貼,避免編輯hosts時(shí)空格或者tab字符錯(cuò)誤。
??????????
??????? 3. UNIX下ORACLE多數(shù)據(jù)庫(kù)的環(huán)境,OS客戶(hù)端需要配置下面兩個(gè)環(huán)境變量
???????
?????????? ORACLE_SID=appdb;export ORACLE_SID
?????????? TWO_TASK=appdb;export TWO_TASK?
??????????
?????????? 來(lái)指定默認(rèn)的目標(biāo)數(shù)據(jù)庫(kù)。