数据库管理-第163期 19c重建ADG的两个方法(20240323

来源:这里教程网 时间:2026-03-03 19:43:57 作者:

数据库管理-第163期 19c重建ADG的两个方法(20240323)

作者:胖头鱼的鱼缸(尹海文) Oracle ACE Associate: Database(Oracle与MySQL) 国内某科技公司 DBA总监 10年数据库行业经验,现主要从事数据库服务工作 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家,OCM讲师 圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著 名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。 除授权转载并标明出处外,均为“非法”抄袭。

这周就写了两篇文章,之前还有些事没有记录下来,多写写吧。

1 ORA-08103

祖上X8那台Exadata也是和X9M一样,用的4台4U服务器+集中存储做的ADG备库,突然有一天,业务方说,从备库取的外部数据报了下面的错:

ORA-08103: object no longer exists

从DG Broker上看,同步没有报错,但是确实在备库,有些表就是不存在,而主库上则是正常的。在业务方暂时将外部读取转回了备库。为了减少外部数据拉取对主库的影响(其实影响不大,主要是这台跑的业务系统太重要了),没有时间去探求为啥会出现ORA-08103的问题,因此想着恢复一下。

2 新办法

在19c中有一种不用重建DG恢复数据的方法,简单点说就是就是通过网络增量恢复数据文件。这种方法适用于归档丢失产生GAP和其他一些问题。 具体操作流程如下:

1 关闭MRP

sqlplus> alter database recover managed standby database cancel;
or
DGMGRL> edit database dbdg set state='APPLY-OFF';

2 恢复备库

RMAN> recover standby database from service dbaas;

3 其他操作

可能需要重建standby logfile

4 启动备库

sqlplus> startup nomount
sqlplus> alter database mount standby database;
sqlplus> alter database open read only;

5 启动MRP

sqlplus> alter database recover managed standby database using current logfile disconnect from session;
or
DGMGRL> edit database dbdg set state='APPLY-ON';

然而用这种方式在open数据库的时候总在报错,显示使用过期的备份数据文件,无法恢复。多次尝试仍然没办法,因此只能用笨办法了。但是不得不说,这种方式至少从流程上,比全量重新同步快多了。

3 老办法

老办法当然是需要重建ADG,从duplicate target database开始,这里可以去《数据库管理-第八十期 Exadata to RAC(x86) ADG(20230605)》去看看。这里需要注意一点的是,在DG Broker中remove configuration后,执行以下操作:

alter system set dg_broker_start=false;

并删除下面两个参数配置的对应文件:

show parameter dg_broker_config_file1show parameter dg_broker_config_file2
asmcmd> rm +DATAC1/to/file1
asmcmd> rm +RECOC1/to/file2

然后再进行对应操作。

4 预告

2024数据技术嘉年华议程已出(详见https://www.modb.pro/dtc2024),欢迎新老朋友在现场欢聚一堂。 image.png

总结

其实本期技术内容,算是炒炒冷饭,也算是一个总结。 老规矩,知道写了些啥。

相关推荐