oracle DG问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle DG问题相关的知识,希望对你有一定的参考价值。

将备库mount修改成了最大数据保护模式,然后打开备库就出错了:
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5:
'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00005'
请问是什么原因? 目录下没有那个文件,应该怎么解决?

参考技术A Oracle DBA神器:PRM-DUL灾难恢复工具可以直接从这种受损的Oracle数据库中将数据拯救出来。
当你的数据库因为ORA-00600/ORA-07445或其他ORA-报错,或丢失关键的system表空间数据文件,或ASM diskgroup损坏时均可以考虑采用PRM-DUL来做恢复。PRM-DUL采用独创的DataBridge恢复技术,直接从数据文件中抽取数据后可以像DBLINK那样直接插入到新建数据库中,而无需数据落地成为DMP文件占用空间。
参考技术B SERVICE_NAME:服务名,就是你要连接的数据库的名字
创建表空间和用户跟这两个文件没什么关系,不用修改配置文件
pl/sql会读取tnsnames.ora文件中的配置,如果你还想从pl/sql连其它数据库,需要在tnsnames.ora文件中配置一下就行了
希望对你有帮助追问

你回答的这是什么? 不是我的问题……。

参考技术C standby database requires recovery,说明你的备库和主库没有同步

需要足够的日志,recover一下,然后再open一下试试追问

是用archive来恢复吗?怎么恢复? 能给个具体的步骤吗

追答

把主库的归档日志(备库没有的那些)手动copy到备库,

然后备库mount起来,
执行recover standby database
然后备库就会一个一个对copy过来的归档日志进行应用,
直到全部应用完毕,(这期间会有个像错误一样的提示,没有影响)
完毕之后再试一下能不能把数据库open起来,
有几个试图,可以查看主库备库的状态是否ok,
我之前做DBA,然后几乎每天都在搞这个东西,不过现在转行了,有好长时间不搞了,
有些东西记不起来了,现在手头也没有现成的数据库,不过希望能帮到你

本回答被提问者采纳

oracle--DG模式备库归档缺失问题

01.问题描述

   备库的归档日志没有增加,一直等待一个

技术图片

    查询问题:

SQL> SELECT * FROM V$ARCHIVE_GAP;

   THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
     1        6434       6435
select name ,sequence# from v$archived_log;
NAME                                          SEQUENCE#
-------------------------------------------------------------------------------- ----------
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6414_1000748999.dbf           6414
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6417_1000748999.dbf           6417
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6420_1000748999.dbf           6420
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6421_1000748999.dbf           6421
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6419_1000748999.dbf           6419
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6418_1000748999.dbf           6418
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6425_1000748999.dbf           6425
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6426_1000748999.dbf           6426
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6423_1000748999.dbf           6423
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6422_1000748999.dbf           6422
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6424_1000748999.dbf           6424

NAME                                          SEQUENCE#
-------------------------------------------------------------------------------- ----------
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6366_1000748999.dbf           6366
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6427_1000748999.dbf           6427
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6428_1000748999.dbf           6428
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6429_1000748999.dbf           6429
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6509_1000748999.dbf           6509
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6431_1000748999.dbf           6431
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6432_1000748999.dbf           6432
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6430_1000748999.dbf           6430
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6433_1000748999.dbf           6433
/u01/app/oracle/product/11.2.0/db_1/dbs/archivelog/1_6436_1000748999.dbf           6436

二,问题解决思路

  01,查看本地库存不存在这个归档日志

    ??存在就直接手工注册上这个日志文件

      手工注册:

alter database register logfile  XXX

    ??如果存在也注册了但是未注册成功的话可能是归档传输过程出现了问题,重新传输然后换个路径应用归档

rman target /

catalog start with XXXX;

---注册日志

   02,查看主库存不存在归档日志

    ??如果存在的话k拷贝到备库然后手工组测

    ??如果不存在的话生成基于SCN的备份集

      

查看备库最小的scn号:
select to_char(current_scn) from v$database;
select min(checkpoint_change#) from v$datafile;
select min(checkpoint_change#) from v$datafile_header;

比对最小的scn

然后再备库生成基于SCn的备份集

backup as compressed backupset incremental from scn $MIN  database format /backup/inc_%d_%T_%s_%p;
backup current controlfile for standby format /backup/inc.ctl;


然后scp 传输到备库上

备库恢复备份集
shutdown abort;
startup nomount;
restore standby controlfile from "/backup/inc.ctl";
alter database mount;
catalog start with "/backup/" NOPROMPT;
shutdown immediate;
startup mount;
recover database;


重新开启实时应用归档
alter database recover managed standby database disconnect from session using current logfile;

以上是关于oracle DG问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle dg有几种搭建方法

Oracle Dg配置过程

Oracle19c RAC+DG生产项目实战(RHEL8+云架构版)视频教程

oracle DG搭建

Oracle 增量备份修复dg gap

Oracle 增量备份修复dg gap