物理DG與邏輯DG的區別與邏輯DG同步異常處理方法
一、物理DG與邏輯DG的區別
官方文件是這樣說明的
The main difference between physical and logical standby databases is the manner
in which log apply services apply the archived redo logs:
For physical standby databases, Data Guard uses redo apply technology, which
applies redo data on the standby database using standard recovery techniques
of the Oracle database server.
For logical standby databases, Data Guard uses SQL apply technology, which
first transforms the received redo data into SQL statements and then executes
the generated SQL statements on the logical standby database.
實現機制不同,一個是基於block的,一個是基於SQL statement.
物理dg是通過傳日誌的形式block對block的完全把主庫複製,複製出來的從庫和主庫完全一樣
10g的物理dg只能只讀開啟,但11g可以讀寫開啟
從庫名必須和主庫名相同
邏輯dg是通過傳日誌,再應用logmin的技術將日誌中的sql挖出,處理,並重新執行
主庫和從庫可以不完全相同
邏輯dg從庫可以讀寫開啟
邏輯dg有些表和資料是不能同步的,從庫名可以和主庫名不同
另外邏輯dg出現問題的時候比較多,bug比較多
物理備資料庫通過重做應用與主資料庫保持同步.
邏輯備資料庫通過SQL應用與主資料庫保持同步.
物理備資料庫與主資料庫SCN保持一致.邏輯備資料庫只需要資料保持一致.
二、關於邏輯DG表不同步同步異常可以利用 dbms_logstdby 包跳過表
1> 檢查邏輯DG事件,確認是否存在異常
select * from dba_logstdby_events order by event_time desc;
說明:如果status報錯,event列有詳細的觸發操作語句,常見的多數是主庫有新的DDL語句
2> 同步程式是否存在,一般異常終止,同步程式是不存在的
SELECT * FROM v$logstdby_process;
3> 檢視日誌是否都已經同步完成
select sequence#,applied from dba_logstdby_log order by sequence# desc ;
1> 同步程式不存在,主庫資料沒有同步到備庫
select * from dba_logstdby_events order by event_time desc;
說明:檢視報錯資訊和導致報錯的事件,進行跳過處理
--停止資料庫日誌應用
alter database stop logical standby apply;
--跳過DML操作
begin
DBMS_LOGSTDBY.SKIP('DML','CXF','TMP_SAME_FILE'); --注意,表名要大寫哦,否則還會報錯的
end;
--跳過DDL
begin
DBMS_LOGSTDBY.SKIP('SCHEMA_DDL','CUECM','TMP_1024');--注意,表名要大寫哦,否則還會報錯的
end;
--在主庫端對索引做ANALYZE,如果索引在備庫不存在,也會導致DG同步異常中斷,這個時候就不能用DDL和
DML兩種跳過了,必須用下面這種方法跳過
--跳過ANALYZE TABLE操作
begin
DBMS_LOGSTDBY.SKIP('ANALYZE TABLE','%','%',NULL);
end;
--跳過ANALYZE INDEX操作
begin
DBMS_LOGSTDBY.SKIP('ANALYZE INDEX','%','%', NULL);
end;
--啟動應用日誌
alter database start logical standby apply immediate;
2> 同步程式存在,其它表都能同步,個別表無法同步
這種情況,很可能是設定了表級別的對像跳過,可以通過以查查詢確認是否手動設定跳過同步
select * from DBA_LOGSTDBY_SKIP;
然後通過DBMS_LOGSTDBY.UNSKIP()重新同步
alter session disable guard;
--操作過後
alter session enable guard;
官方文件是這樣說明的
The main difference between physical and logical standby databases is the manner
in which log apply services apply the archived redo logs:
For physical standby databases, Data Guard uses redo apply technology, which
applies redo data on the standby database using standard recovery techniques
of the Oracle database server.
For logical standby databases, Data Guard uses SQL apply technology, which
first transforms the received redo data into SQL statements and then executes
the generated SQL statements on the logical standby database.
實現機制不同,一個是基於block的,一個是基於SQL statement.
物理dg是通過傳日誌的形式block對block的完全把主庫複製,複製出來的從庫和主庫完全一樣
10g的物理dg只能只讀開啟,但11g可以讀寫開啟
從庫名必須和主庫名相同
邏輯dg是通過傳日誌,再應用logmin的技術將日誌中的sql挖出,處理,並重新執行
主庫和從庫可以不完全相同
邏輯dg從庫可以讀寫開啟
邏輯dg有些表和資料是不能同步的,從庫名可以和主庫名不同
另外邏輯dg出現問題的時候比較多,bug比較多
物理備資料庫通過重做應用與主資料庫保持同步.
邏輯備資料庫通過SQL應用與主資料庫保持同步.
物理備資料庫與主資料庫SCN保持一致.邏輯備資料庫只需要資料保持一致.
二、關於邏輯DG表不同步同步異常可以利用 dbms_logstdby 包跳過表
1> 檢查邏輯DG事件,確認是否存在異常
select * from dba_logstdby_events order by event_time desc;
說明:如果status報錯,event列有詳細的觸發操作語句,常見的多數是主庫有新的DDL語句
2> 同步程式是否存在,一般異常終止,同步程式是不存在的
SELECT * FROM v$logstdby_process;
3> 檢視日誌是否都已經同步完成
select sequence#,applied from dba_logstdby_log order by sequence# desc ;
1> 同步程式不存在,主庫資料沒有同步到備庫
select * from dba_logstdby_events order by event_time desc;
說明:檢視報錯資訊和導致報錯的事件,進行跳過處理
--停止資料庫日誌應用
alter database stop logical standby apply;
--跳過DML操作
begin
DBMS_LOGSTDBY.SKIP('DML','CXF','TMP_SAME_FILE'); --注意,表名要大寫哦,否則還會報錯的
end;
--跳過DDL
begin
DBMS_LOGSTDBY.SKIP('SCHEMA_DDL','CUECM','TMP_1024');--注意,表名要大寫哦,否則還會報錯的
end;
--在主庫端對索引做ANALYZE,如果索引在備庫不存在,也會導致DG同步異常中斷,這個時候就不能用DDL和
DML兩種跳過了,必須用下面這種方法跳過
--跳過ANALYZE TABLE操作
begin
DBMS_LOGSTDBY.SKIP('ANALYZE TABLE','%','%',NULL);
end;
--跳過ANALYZE INDEX操作
begin
DBMS_LOGSTDBY.SKIP('ANALYZE INDEX','%','%', NULL);
end;
--啟動應用日誌
alter database start logical standby apply immediate;
2> 同步程式存在,其它表都能同步,個別表無法同步
這種情況,很可能是設定了表級別的對像跳過,可以通過以查查詢確認是否手動設定跳過同步
select * from DBA_LOGSTDBY_SKIP;
然後通過DBMS_LOGSTDBY.UNSKIP()重新同步
三、無法在邏輯DG端進行DDL和DML操作
alter session disable guard;
--操作過後
alter session enable guard;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28894640/viewspace-1063044/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物理DG、邏輯DG和快照DG的搭建(視訊講解)
- oracle??邏輯DG同步卡住,session等待row cache lock的處理過程OracleSession
- 【DG】DBMS_LOGSTDBY包的應用--邏輯DG跳過某些操作
- 【邏輯DG滾動升級二】ORACLE11204 邏輯DG滾動升級至12C---DG端前期準備Oracle
- 邏輯DG主備庫轉換的failoverAI
- 【DATAGUARD】DG系列之邏輯備庫非實時更新小問題處理
- 【邏輯DG滾動升級三】ORACLE11204 邏輯DG滾動升級至12C---正式升級Oracle
- 【DATAGUARD】DG系列之11g邏輯備庫的搭建
- DG同步異常恢復文件
- 邏輯dg刪除主庫過期歸檔日誌
- 【邏輯DG滾動升級一】ORACLE11204 邏輯DG滾動升級至12C---生產端前期準備Oracle
- oracle ADG與DG的區別Oracle
- 物理standby和邏輯standby的區別
- 演算法與邏輯的區別演算法
- 【DG】DG之Switchover和Failover的區別AI
- 【DG】物理DG中LNSn、NSS、NSA程式
- DG邏輯庫logstdby 日誌應用長時間不歸檔
- Android 介面顯示與邏輯處理Android
- Oracle DG同步失敗故障處理(二)Oracle
- DG報錯的處理
- 【DATAGUARD】 基於同一個主機建立物理備庫和邏輯備庫 (四)--新增一個物理dg節點
- 【DG】 DataGuard 中處理archive gap的方法Hive
- DG為RAC的邏輯備庫?LOG_AUTO_DELETE(TRUE)引數不起作用delete
- dg/ogg區別
- DG物理standby,Failover之後原primary重回DGAI
- 【SQL 優化】異常的邏輯讀SQL優化
- 【DG】Oracle 19c使用dbca來搭建物理DGOracle
- MySQL邏輯查詢處理MySql
- DG發現gap處理流程
- 物理DG角色轉換:switchover
- 主庫不停做物理dg
- DG物理standby,switchover步驟
- oracle中 DG和GG的區別Oracle
- oracle 邏輯物件與物理物件對應關係圖Oracle物件
- oracle DG VCS切換異常問題Oracle
- JavaScript && 邏輯與運算子JavaScript
- SAP gateway處理multiple key的邏輯Gateway
- 查詢處理的邏輯順序