oracle19c双机运维,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

5534bd3f3868727005a540ca65789e14.png

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没有数据呢?

ab5d7539da22b1433abd9d79dfed6e78.png

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",共同学习,共同成长!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值