RAC環境中的TNSNAMES檔案

yangtingkun發表於2007-06-07

RAC環境中多個節點的tnsnames.ora一般情況下應該保證一致,否則可能造成資料庫鏈出現問題。


一個簡單的例子,在節點1上新增新的服務名TEST2

TEST2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.88.89)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test2)
)
)

如果不把上面的配置新增到節點2上,那麼如果使用了這個服務名建立了資料庫鏈,則可能會導致節點2上訪問遠端資料庫出錯:

SQL> CREATE DATABASE LINK TEST2 CONNECT TO TEST IDENTIFIED BY TEST USING 'TEST2';

資料庫連結已建立。

SQL> CONN TEST/TEST@TESTRAC1已連線。
SQL> SELECT COUNT(*) FROM TAB@TEST2;

COUNT(*)
----------
55

SQL> CONN TEST/TEST@TESTRAC2 已連線。
SQL> SELECT COUNT(*) FROM TAB@TEST2;
SELECT COUNT(*) FROM TAB@TEST2
*
1 行出現錯誤:
ORA-12154: TNS:
無法解析指定的連線識別符號


當然,透過在建立資料庫鏈時候直接指定TNS連線資訊也可以避免資料庫鏈出現這個錯誤。但是兩個節點上的COPY命令等和tnsnames.ora檔案有關的操作和命令仍然會受到影響。

因此為了避免上面的問題出現,在RAC的一個節點上修改了tnsnames.ora檔案後,應該在另一個節點上進行同樣的修改。或者將節點1上修改過的檔案直接複製到節點2上。保證RAC所有節點上的tnsnames.ora檔案一致就不會出現這個問題了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69302/,如需轉載,請註明出處,否則將追究法律責任。

相關文章