Logical Standby的維護操作_SKIP
logstdby上以下兩種情況需要用到SKIP維護操作:
1>定製規則,standby對primary特定物件的更新不做apply
2>日常維護,standby上出現GAP後skip掉無法apply的object,transcation或是特定使用者的DML\DDL操作等
執行skip需要停止logical standby上的apply操作後進行。
1.定製規則過濾primary的操作
logstby並不要求與Primary的物理一致,可以使用DBMS_LOGSTDBY.SKIP的儲存過程過濾掉一些並不希望apply在standby上的sql操作。目前logcial standby上支援的sql skip如下:
*DML or DDL changes for tables
*CREATE, ALTER, or DROP INDEX DDL statements
*CREATE, ALTER, DROP, or TRUNCATE TABLE statements
*CREATE, ALTER, or DROP TABLESPACE statements
*CREATE or DROP VIEW statements
eg:
1>Skipping a Table in a Logical Standby Database
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
SQL> EXECUTE DBMS_LOGSTDBY.SKIP('SCHEMA_DDL', 'TABLE_OWNER', 'TABLE_NAME');
SQL> EXECUTE DBMS_LOGSTDBY.SKIP('DML', 'TABLE_OWNER', 'TABLE_NAME');
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
2>Skipping ALTER or CREATE TABLESPACE Statements
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
SQL> EXEC DBMS_LOGSTDBY.SKIP('CREATE TABLESPACE', NULL, NULL, NULL);
SQL> EXEC DBMS_LOGSTDBY.SKIP('ALTER TABLESPACE', NULL, NULL, NULL);
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
dba_logstdby_skip檢視可以檢視logstdby上定製的skip規則。如果需要取消一些skip規則,則使用DBMS_LOGSTDBY.UNSKIP,方法同skip類似。
2.skip transaction
透過dba_logstdby_events查詢未能apply的問題事件,然後使用dbms_logstdby.skip_transaction包skip掉堵塞的transaction。
eg:
1>查詢堵塞的transaction
skip時需要transactions的一些特定值(xidusn, xidslt, xidsqn),透過dba_logstdby_events檢視獲取當前logstdby上apply事件的相關資訊。
SQL> set line 200
SQL> col STATUS for a80
SQL> col STATUS_CODE for 9999999999
SQL> select xidusn, xidslt, xidsqn, status, status_code from dba_logstdby_events
where event_time = (select max(event_time) from dba_logstdby_events);
XIDUSN XIDSLT XIDSQN STATUS STATUS_CODE
-------- -------- -------- ---------------------------------------------------- ----------
4 47 10833 ORA-00959: tablespace 'TS_KXYK_DETAIL_V3_2008_N1' 959
does not exist
SQL>
2>執行skip操作
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
Database altered.
SQL> execute dbms_logstdby.skip_transaction(xidusn_p => '4',xidslt_p =>'47',xidsqn_p => '10833');
PL/SQL procedure successfully completed.
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
Database altered.
檢視standby上的alert.log,可以看到skip transaction的日誌,類似如下:
… …
LOGSTDBY: Skip Transaction xid 0x0004.02b.00002959, chunk[0],
scn: 0x0000.01a375c
… …
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/751371/viewspace-707990/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [zt] Logical standby維護命令手冊
- Oracle Logical Standby 維護常用命令Oracle
- 物理standby database的日常維護Database
- standby維護命令手冊(轉)
- 建立 Logical Standby DatabaseDatabase
- manage logical standby databaseDatabase
- DataGuard:Logical Standby Switchover
- Oracle Standby系統管理與維護Oracle
- DataGuard:Logical Standby FailoverAI
- 監控Logical standby databaseDatabase
- Logical Standby Database的配置步驟.Database
- Logical Standby中Job的處理
- Oracle DG建立Logical Standby DatabaseOracleDatabase
- redo logfile的維護操作
- AIX常用維護操作AI
- 物理Standby資料庫及邏輯Standby資料庫(Physical Standby & Logical Standby)資料庫
- RAC環境LOGICAL STANDBY的SWITCHOVER切換
- 建立Oracle 11g logical standbyOracle
- Oracle10g logical standby 建立Oracle
- Create Logical Standby For Oracle 10GOracle 10g
- Standby (Data guard) 常用維護命令及相關概念
- [zt]Logical standby同步故障的處理過程
- RAC環境LOGICAL STANDBY的FAILOVER切換AI
- Oracle10gR2 Logical Standby (zt)Oracle
- 建立Data guard logical standby database須知Database
- [江楓]In Memory Undo與logical standby databaseDatabase
- oracle9204(9i)_linux_logical standby_switchover操作指南OracleLinux
- oracle9i(9204)data guard(dg)_logical standby_failover操作指南OracleAI
- 雙棧維護頭尾操作
- Logical Standby常見問題解決方式
- oracle 10g logical standby db creationOracle 10g
- Mysql optimize、Analyze、check、repair維護操作MySqlAI
- Oracle 9i Logical Standby與Physical standby歸檔恢復區別Oracle
- Oracle10g Logical Standby的開啟與關閉Oracle
- 10g Logical Standby的建立,優化及管理 - 更新優化
- logical standby DG同步錯誤問題總結
- 配置 Oracle 10g RAC primary + RAC logical standbyOracle 10g
- oracle LOGICAL standby ORA-04030: out of process memoryOracle