Oracle客戶端連服務器應注意的事項
2024-08-29 13:36:37
供稿:網友
 
             
  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
  
  來指定默認的目標數據庫。