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/,如需转载,请注明出处,否则将追究法律责任。