TNSNAMES.ORA 配置

上面的sqlnet.ora文件說明:
SQLNET.AUTHENTICATION_SERVICES= (NTS)——這個表示採用os認證,在數據庫服務器上,能夠利用sqlplus 「/ as sysdba」。通常這個配置在windows上是ok的,在unix環境下可能會有問題,通常在unix下能夠去掉這個配置。node

NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)——表示將首先利用tnsnames進行解析;若是tnsnames解析不到,將使用hostname解析;若是hostname解析不 到,將採用onames進行解析。sql

被註釋掉的NAMES.DEFAULT_DOMAIN = us.oracle.com——表示採用默認的domain name爲us.oracle.com,在tnsnames.ora中若是配置對應的解析,若是原來的別名oralocal,那麼,當啓用這個參數後,在 tnsnames中的配置要改爲oralocal.us.oracle.com。在使用tnsping時或者sqlplus登陸時,只需寫前面的別名,系 統會自動加上後面的domain name來進行解析。數據庫

檢查完畢sqlnet.ora,通常都會發現是使用tnsname來解析別名的,那麼,tnsnames.ora中能夠有哪些配置種類呢?windows

# TNSNAMES.ORA Network Configuration File: $ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora
# Generated by Oracle configuration tools.


###### 通常的配置 ##################################
ORALOCAL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oralocal)
    )
  )


###### 這樣也行,用SID=oralocal ###########################
ORALOCAL_2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = oralocal)
    )

###### RAC的配置(3節點rac) ###############################
ORALOCAL =
  (DESCRIPTION =
  (load_balance = yes)
  (failover = on)
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.3)(PORT = 1521))   
    )
    (CONNECT_DATA =
        (SERVICE_NAME = oralocal)
        (SERVER = DEDICATED)
        (failover_mode=(type=select)(method=basic)(retries=20)(delay=20))
    )
  )
  
ORALOCAL_NODE1 =
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
       )
       (CONNECT_DATA =
         (SERVICE_NAME = oralocal)
         (INSTANCE_NAME = oralocal_node1)
       )
   )


ORALOCAL_NODE2=
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
       )
       (CONNECT_DATA =
         (SERVICE_NAME = oralocal)
         (INSTANCE_NAME = oralocal_node2)
       )
   )
   

ORALOCAL_NODE3 =
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.3)(PORT = 1521))
       )
       (CONNECT_DATA =
         (SERVICE_NAME = oralocal)
         (INSTANCE_NAME = oralocal_node3)
       )
   )


  )


###### DATA GUARD配置(primary庫和standby庫都須要配置)##############
standby =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.2)(PORT = 1521))
        )
    (CONNECT_DATA =
          (SERVER=DEDICATED) 
          (SERVICE_NAME = oralocal)
      )
  )

primary =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.1)(PORT = 1521))
        )
    (CONNECT_DATA =
          (SERVER=DEDICATED) 
          (SERVICE_NAME = oralocal)
      )
  )

另外須要注意的2點狀況:
(1)若是tnsnames中的service_name配置錯誤,配置成了instance_name了,這個時候會發生tnsping能通,可是 sqlplus鏈接不上的奇怪狀況。報錯ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect descriptor。這個時候查錯的時候,須要檢查對應的service_name。
(2)若是遠程數據庫是rac,並且本地客戶端端遠程數據庫處於不一樣的網段,經過公網連接,rac對外的ip映射只有一個,即只映射到一個節點。請注意在 客戶端配置tnsnames的時候按照單機的狀況來配置。服務器

相關文章
相關標籤/搜索