[zt] Oracle RAC的Failover設定與測試
在Oracle RAC環境下,在配置TAF(Transparent Application Failover)之後,如果一個節點上的例項出現了故障,Oracle會自動將會話遷移到另一個例項上。
進行TAF配置,要在客戶端的tnsname.ora中新增如下的關鍵引數:
( failover_mode = ( type = select ) ( method = basic ) )
下面分別對是否在客戶端配置TAF的情況進行測試:
一、不配置TAF的情況
1、客戶端的tnsname.ora配置如下:
RACDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.171)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = racdb.chenxu.yo2.cn)
)
)
2、連線資料庫,檢查例項資訊
SQL> conn sys/chenxu@racdb as sysdba
已連線。
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string RACDB2
3、關閉例項RACDB2
[root@NODE01 bin]# ./srvctl status database -d racdb
Instance RACDB1 is running on node node01
Instance RACDB2 is running on node node02
[root@NODE01 bin]#
[root@NODE01 bin]# ./srvctl stop instance -d racdb -i racdb2
[root@NODE01 bin]#
[root@NODE01 bin]# ./srvctl status database -d racdb
Instance RACDB1 is running on node node01
Instance RACDB2 is not running on node node02
4、再次檢查剛才連線的會話
SQL> select instance_name from v$instance;
select instance_name from v$instance
*
第 1 行出現錯誤:
ORA-03113: 通訊通道的檔案結束
SQL> select instance_name from v$instance;
ERROR:
ORA-03114: 未連線到 ORALCE
可以看到執行操作後,Oracle會報上面的錯誤。
二、配置TAF的情況
1、下面在客戶端的tnsname.ora檔案中配置TAF,內容如下:
RACDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.171)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = racdb.chenxu.yo2.cn)
( failover_mode = ( type = select ) ( method = basic ) )
)
)
2、重新開啟例項
[root@NODE01 bin]# ./srvctl start instance -d racdb -i racdb2
[root@NODE01 bin]#
[root@NODE01 bin]# ./srvctl status database -d racdb
Instance RACDB1 is running on node node01
Instance RACDB2 is running on node node02
3、重新登陸,檢查例項資訊
SQL> conn sys/chenxu@racdb as sysdba
已連線。
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
RACDB2
4、再次關閉例項RACDB2
[root@NODE01 bin]# ./srvctl stop instance -d racdb -i racdb2
[root@NODE01 bin]# ./srvctl status database -d racdb
Instance RACDB1 is running on node node01
Instance RACDB2 is not running on node node02
5、檢查剛才的連線的會話
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
RACDB1 # 可以看到由原來的RACDB2變成RACDB1
可知,在沒有執行事務的操作下,可以無縫地切換到另一個節點上。
三、配置TAF後,當執行事務時候,能否進行切換?
在實際的使用環境中,有些正在進行的事務,如一個節點上正在執行的DML是無法採用以上的方法切換的。下面針對這種情況進行測試:
1、兩個例項都開啟後,客戶端連線,並執行DML語句
SQL> conn sys/chenxu@racdb as sysdba
已連線。
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
RACDB2
SQL> create table test as select * from dba_objects;
表已建立。
SQL> insert into test select * from dba_objects; # 進行DML操作
已建立50393行。
2、關閉當前連線的例項RACDB2
[root@NODE01 bin]# ./srvctl stop instance -d racdb -i racdb2
[root@NODE01 bin]# ./srvctl status database -d racdb
Instance RACDB1 is running on node node01
Instance RACDB2 is not running on node node02
3、檢查剛才的連線的會話
SQL> select instance_name from v$instance;
select instance_name from v$instance
*
第 1 行出現錯誤:
ORA-25402: 事務處理必須重新執行
SQL> select count(*) from test;
select count(*) from test
*
第 1 行出現錯誤:
ORA-25402: 事務處理必須重新執行
SQL> commit;
commit
*
第 1 行出現錯誤:
ORA-25402: 事務處理必須重新執行
SQL> rollback;
回退已完成。
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
RACDB1 # 在rollback之後,切換到例項RACDB1
SQL> select count(*) from test;
COUNT(*)
----------
50393 # 已經回滾到建表時候的那些資料
所以,該測試說明了Oracle不能切換正在執行DML語句的情況,因為未完成的事務可能需要回滾。也就是隻要沒有獲得的事務存在,就可以動態的切換過去。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-600658/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle rac failover的疑惑OracleAI
- Oracle RAC Failover 詳解OracleAI
- oracle rac failover 詳解OracleAI
- Oracle FailSafe與rac的聯絡與區別(zt)OracleAI
- Oracle RAC TAF [zt]Oracle
- [zt] ORACLE RAC原理Oracle
- jboss oracle rac (zt)Oracle
- Oracle RAC TAF 無縫failoverOracleAI
- 轉:Oracle RAC Failover 詳解OracleAI
- Oracle RAC序列效能測試Oracle
- Oracle RAC的TAF簡單測試Oracle
- RAC 11g下管理Service資源並測試FailoverAI
- Oracle RAC Failover 詳解[轉帖]OracleAI
- ORACLE RAC 設定歸檔Oracle
- [zt] Oracle RAC 後臺程式Oracle
- 【RAC】Oracle RAC上線測試場景介紹Oracle
- Oracle中db_16k_cache_size的設定測試Oracle
- Oracle RAC 的監控和調整 (zt)Oracle
- 如何配置Oracle RAC Load Balance 及FailOverOracleAI
- How to find Master Node in Oracle RAC(zt)ASTOracle
- 單機安裝Oracle RAC (zt)Oracle
- oracle 11g rac TAF 測試方案Oracle
- Oracle RAC Load Balance , Fail Over測試OracleAI
- Oracle 9i RAC enqueue等待測試OracleENQ
- ZT:spool常用的設定
- rsync的安全設定(zt)
- 關於 RAC VIP (Oracle10G RAC) 的探討(zt)Oracle
- ORACLE RAC的FLASHBACK後期安裝設定Oracle
- oracle rac中設定時間同步Oracle
- Oracle RAC 客戶端FAILOVER LOADBALANCE特性的配置方法Oracle客戶端AI
- Oracle RAC 客戶端故障轉移(failover) TAFOracle客戶端AI
- [ZT] Oracle 10g RAC的相關概念Oracle 10g
- SQL Server Availability Group Failover 測試SQLServerAI
- [zt] Oracle RAC Load Balance [final]Oracle
- 截圖曝光顯示位置正在測試字型設定與Windows系統設定的整合Windows
- oracle 10g rac +asm 進行加物理磁碟與減物理磁碟的測試Oracle 10gASM
- Oracle 10g RAC 網路設定Oracle 10g
- Oracle10g RAC設定記錄Oracle