在客户端的tnsnames.ora配置文件中添加以下行: rac=(DESCRIPTION= (ADDRESS_LIST= (LOAD_BALANCE=ON) (FAILOVER=ON) (ADDRESS=(PROTOCOL=tcp)(HOST=your_ip_or_name)(PORT=1522))
(ADDRESS=(PROTOCOL=tcp)(HOST=your_ip_or_name)(PORT=1523)) (ADDRESS=(PROTOCOL=tcp)(HOST=your_ip_or_name)(PORT=1521))) (CONNECT_DATA= (FAILOVER_MODE= (TYPE=select)(METHOD=basic)) (SERVICE_NAME=rac.test.com))) 然后就可以在客户端使用rac连接串来连接数据库了. 连接时,因为设置了load_balance=on,因此会随机选择一个来连接.查看连接到哪个实例: SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- rac3 假如在服务器端将rac3停掉,可以用shutdown immediate;或者shutdown abort; 再运行此语句,则: SQL> / INSTANCE_NAME ---------------- rac1 客户端在监测到instance down了以后,重新连接,这次连到了rac1. 注重: 在非RAC环境下,假如用户设置了failover=on,则instance down时,用户未commit的数据自动回滚了.在RAC下,需要用户执行rollback. 假如不rollback 而执行SQL语句,则Oracle会报错: ERROR at line 1: ORA-25402: transaction must roll back 到现在,单节点上多instance的RAC就配置好了. 希望能对大家有所帮助.
|