Oracle 19C Data Guard基礎運維-04 Failovers疑問?
Oracle 19C Data Guard 基礎運維 -0 4 Failovers 疑問?
原主庫 |
原備庫 |
Failovers |
新主庫 |
獨立庫 |
192.168.31.90 |
192.168.31.100 |
192.168.31.100 |
192.168.31.90 | |
cjcdb |
chendb |
chendb |
cjcdb |
Failover :
Figure 9-4 Failover to a Standby Database
Performing a Failover to a Physical Standby Database
關於failover的疑問?
模擬主庫意外當機,並且存在archive gap ,檢視主庫上有 3 個歸檔檔案沒有傳到備庫,但是在備庫端檢視 v$archive_gap 顯示卻是空的? 並且沒有使用過 snapshot standby ,在備庫端執行 ALTER DATABASE FAILOVER TO chendb ; 時沒有報錯提示,由於歸檔缺失,備庫failover 成功後,丟失了大量資料。
為什麼備庫明明有archive gap 但在 v$archive_gap 裡查詢不到呢?在存在 archive gap 時,為什麼備庫執行 ALTER DATABASE FAILOVER TO chendb; 可以成功,最終導致資料丟失呢?
實驗過程如下:
場景二:有歸檔間隙
主庫模擬故障,模擬歸檔gap :
先停掉備庫: 不接收主庫產生的 redo 或歸檔資料
SQL> shutdown immediate
主庫:生成測試資料,生成redo 和歸檔資料
---session 1
SQL>
declare
begin
for i in 1 .. 1000 000 loop
insert into test1 values (i);
commit;
end loop;
end;
插入資料期間,生成了3 個歸檔檔案
[oracle@cjcos01 arch]$ pwd
/arch
......
cjcpdb_arch_1_74_1030641846.arc
cjcpdb_arch_1_75_1030641846.arc
cjcpdb_arch_1_76_1030641846.arc
強制關閉主庫
SQL> shutdown abort
主庫重新命名新產生的三個歸檔檔案,模擬歸檔gap
[oracle@cjcos01 arch]$ mv cjcpdb_arch_1_74_1030641846.arc cjcpdb_arch_1_74_1030641846.arc.bak
[oracle@cjcos01 arch]$ mv cjcpdb_arch_1_75_1030641846.arc cjcpdb_arch_1_75_1030641846.arc.bak
[oracle@cjcos01 arch]$ mv cjcpdb_arch_1_76_1030641846.arc cjcpdb_arch_1_76_1030641846.arc.bak
主庫重新命名system01.dbf 模擬資料庫故障
[oracle@cjcos01 arch]$ cd /u01/app/oracle/oradata/CJCDB/
[oracle@cjcos01 CJCDB]$ mv system01.dbf system01.dbf.bak
主庫啟動失敗
SQL> startup
ORACLE instance started.
Total System Global Area 1375728192 bytes
Fixed Size 9134656 bytes
Variable Size 1107296256 bytes
Database Buffers 251658240 bytes
Redo Buffers 7639040 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/u01/app/oracle/oradata/CJCDB/system01.dbf'
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
啟動備庫:
1. 檢查 dg 恢復模式
SQL> select database_role,protection_level,protection_mode from v$database;
DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE
2 檢查 archive_gap ,顯示沒有歸檔gap?
SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap;
no rows selected
檢視備庫歸檔日誌確實少了3個 (74,75,76),但是為什麼 v$archive_gap沒有資料呢?
3 備庫取消 DG 應用 ( 關閉 MRP)
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Database altered.
4 嘗試備庫在缺少歸檔日誌情況下執行 failover, 居然沒有報錯?
SQL> ALTER DATABASE FAILOVER TO chendb;
Database altered.
也可以正常open 資料庫
SQL> alter database open;
Database altered.
由於缺失歸檔,所有在執行完failover後,丟失了 999999條資料。
SQL> Select * from test1;
ID
---
1
歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2686929/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 19C Data Guard基礎運維-03 Failovers(物理)Oracle運維AI
- Oracle 19C Data Guard基礎運維-05Failovers (GAP)Oracle運維AI
- Oracle 19C Data Guard基礎運維-06 PROTECTION MODEOracle運維
- Oracle 19C Data Guard基礎運維-02 Switchovers(物理)Oracle運維
- Oracle 19C Data Guard基礎運維-08 DML重定向Oracle運維
- Oracle 19C Data Guard基礎運維-01安裝物理standbyOracle運維
- Oracle 19C Data Guard基礎運維-07 failover後閃回恢復dg架構Oracle運維AI架構
- Oracle 19C OGG基礎運維-04DML同步常見問題Oracle運維
- 使用Data Guard Broker進行Data Guard物理備用庫配置(Oracle 19c)Oracle
- Oracle 19C OGG基礎運維-03DML操作同步Oracle運維3D
- Oracle 19C OGG基礎運維-05DDL操作同步Oracle運維
- Oracle 19C OGG基礎運維-06增加複製表Oracle運維
- Oracle 19C OGG基礎運維-08Error code [942]Oracle運維Error
- Oracle 19C OGG基礎運維-01環境準備Oracle運維
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- Oracle 19C OGG基礎運維-02資料初始化Oracle運維
- Oracle 19C OGG基礎運維-07減少複製表Oracle運維
- 轉載《Data Guard Broker基礎》
- oracle 11g data guard維護Oracle
- Oracle data guard常用維護操作命令(轉)Oracle
- G008-ORACLE-DG ORACLE 19C Active Data Guard DML RedirectionOracle
- oracle data guard!!Oracle
- 《前端運維》一、Linux基礎--04Shell變數前端運維Linux變數
- Oracle 19C OGG基礎運維-09OGG-15121錯誤Oracle運維
- 介紹ORACLE DATA GUARD——DATA GUARD概念和管理Oracle
- Oracle Data Guard配置Oracle
- Oracle 10g Data Guard的建立與維護Oracle 10g
- Python基礎教程04 運算Python
- ORACLE基礎運維命令操作手冊Oracle運維
- Oracle Data Guard Broker元件Oracle元件
- Oracle Data Guard簡介Oracle
- Oracle Data Guard 介紹Oracle
- ORACLE Data Guard--IOracle
- Oracle 11g Data Guard Enabling Active Data GuardOracle
- [Data Guard]Oracle10g Data Guard學習筆記(一)Oracle筆記
- [Data Guard]Oracle10g Data Guard學習筆記(二)Oracle筆記
- [Data Guard]Oracle10g Data Guard學習筆記(三)Oracle筆記
- 1 關於 Oracle Data GuardOracle