ORACLE用戶端連伺服器的注意事項:
1. 通過SQL*NET協議,ORACLE用戶端連伺服器時一般需要配置sqlnet.ora和tnsnames.ora。
它們預設的目錄在$ORACLE_HOME/network/admin 目錄下
也可以設定環境變數TNS_ADMIN指向你想用的sqlnet.ora和tnsnames.ora目錄
例如:
TNS_ADMIN=/home/oracle/config/9.0.1;export TNS_ADMIN
sqlnet.ora檔案決定找資料庫伺服器別名的方式
預設的參數有
NAMES.DEFAULT_DOMAIN = WORLD
NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
如果你的ORACLE用戶端和伺服器預設的網域名稱不一樣,需要用#號注釋第一行
#NAMES.DEFAULT_DOMAIN = WORLD
使它不起作用。
NAMES.DIRECTORY_PATH指定找伺服器別名的順序 (本地的tnsnames.ora檔案, 命名伺服器, 主機名稱方式)
伺服器的sqlnet.ora裡可以設定檢查用戶端是否alive的時間間隔
sqlnet.expire_time = 10
tnsnames.ora檔案裡寫資料庫伺服器別名的詳細內容,有以下幾種寫法:
# 一般的寫法
APPDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.35)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = appdb)
)
)
# 明確標明用dedicated方式串連資料庫
APPD=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.35)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=appdb)
(SERVER=DEDICATED)))
# 對多個listener連接埠做均衡負載方式串連資料庫
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)
)
)
# 注意:如果資料庫伺服器用MTS,用戶端程式需要用database link時最好明確指明用戶端用dedicated直連方式,
# 不然會遇到很多跟分布式環境有關的ORACLE BUG。
# 一般情況下資料庫伺服器用直接的串連會好一些,除非你的即時資料庫串連數接近1000。
2. /etc/hosts (UNIX)
或者windows/hosts(WIN98) winnt/system32/drivers/etc/hosts (WIN2000)
用戶端需要寫入資料庫伺服器IP地址和主機名稱的對應關係。
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
有些時候我們配置好第一步後,tnsping 資料庫伺服器別名顯示是成功的,
但是sqlplus username/password@servicename不通,jdbc thin link 也不通的時候,
一定不要忘了在用戶端做這一步,原因可能是DNS伺服器裡沒有設定這個伺服器IP地址和主機名稱的對應關係。
如果同時有私人IP和Internet上公有IP,私人IP寫在前面,公有IP寫在後面。
編輯前最好留一個備份,增加一行時也最好用複製粘貼,避免編輯hosts時空格或者tab字元錯誤。
3. UNIX下ORACLE多資料庫的環境,OS用戶端需要配置下面兩個環境變數
ORACLE_SID=appdb;export ORACLE_SID
TWO_TASK=appdb;export TWO_TASK
來指定預設的目標資料庫。