09945 oracle 解决方法_有关ORA-19606错误的解决方法

本文详细讲述了作者在周一早间巡检中遇到的ORACLE数据库RMAN备份失败,着重讲解了如何通过定位SNAPSHOTCONTROLFILE错误,修改配置、清理控制文件镜像并最终恢复备份的过程。适合Oracle数据库维护者参考。

da43eaa5e0e17dbf21665effa997a1b3.png

刚开始写知乎专栏,也不知道写啥,就写写今天早上遇到的一个数据库备份问题,我得解决方法吧。希望对大家有帮助。

周一早巡检,发现有个数据库RMAN备份失败,分析备份日志发现遇到ORA-19606 Cannot copy or restore to snapshot control file错误:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of delete command on ORA_DISK_1 channel at 10/19/2020 03:03:15
ORA-19606: Cannot copy or restore to snapshot control file

然后查了下资料,发现是这个文件的问题,然后按照下面的步骤成功解决了。

检查文件配置位置

 RMAN> show SNAPSHOT CONTROLFILE NAME;
 
RMAN configuration parameters for database with db_unique_name ESBDB are:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb.f'

将SNAPSHOT CONTROLFILE NAME修改为新的名字。

RMAN>CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb-temp.f'
 
 new RMAN configuration parameters:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb-temp.f';
new RMAN configuration parameters are successfully stored

然后在操作系统上将原有的控制文件镜像删除,我这里使用改名的方式,没有直接删除,这也是一种习惯。

[root@esbdb ~]# cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs/
[root@esbdb dbs]# mv snapcf_esbdb.f snapcf_esbdb.f.bak

然后在通过RMAN校验下控制文件的镜像,由于改了名字,将找不到控制文件的镜像,然后删除掉控制文件中的镜像信息。

 RMAN>crosscheck controlfilecopy '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb.f';
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=762 device type=DISK
validation failed for control file copy
control file copy file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb.f RECID=3 STAMP=986744674
Crosschecked 1 objects


 RMAN>delete expired controlfilecopy '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb.f';
 released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=762 device type=DISK
List of Control File Copies
===========================

Key     S Completion Time     Ckp SCN    Ckp Time           
------- - ------------------- ---------- -------------------
3       X 2018-09-13 15:44:34 59401966   2018-09-13 15:44:34
        Name: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb.f
        Tag: TAG20180913T154434


Do you really want to delete the above objects (enter YES or NO)? y
deleted control file copy
control file copy file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb.f RECID=3 STAMP=986744674
Deleted 1 EXPIRED objects

再将控制文件的镜像备份还原成原来的名字,这有两种方法,一种是直接以全路径的方式修改,一种是以clear的方式修改,两种方法任选其一即可。我用的是第一种

RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb.f';

old RMAN configuration parameters:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb-temp.f';
new RMAN configuration parameters:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_esbdb.f';
new RMAN configuration parameters are successfully stored

最后,通过crontab找到备份的脚本,运行后,备份成功。

考虑到很多人不知道这个文件的作用,我把这个SNAPSHOT CONTROLFILE的一些简单介绍也贴出来给大家看看。

快照控制文件:

RMAN在备份期间需要得到一个一致的控制文件视图,RMAN需要知道备份开始时的最新的检查点信息和文件结构信息。开始备份后,RMAN需要这些信息在备份操作期间保持一致。

在热备份期间,控制文件是在不断的发生变化,RMAN又如何获得一个控制文件一致性的视图呢?

RMAN使用快照控制文件(snapshot controlfile)来解决前面的问题,快照控制文件时控制文件的副本。RMAN只在备份和同步操作期间使用快照控制文件。这些操作开始时,RMAN会根据实际控制文件内容来刷新快照控制文件,这样会短暂地锁定控制文件;随后,RMAN会切换到快照并在备份期间持续使用这个快照。这种方式具有读取一致性,且不妨碍数据库活动。

快照控制文件默认在dbs目录下,文件名:snapcf_<ORACLE_SID>.f

[oracle@aix211 ~]$cd $ORACLE_HOME/dbs
[oracle@aix211 dbs]$ls
ab_+ASM.dat     hc_prod.dat     init.ora        initprod.ora    lkPROD          snapcf_prod.f
hc_+ASM.dat     init+ASM.ora    initdw.ora      lk+ASM          orapwprod       spfileprod.ora
[oracle@aix211 dbs]$


重命名快照控制文件:

   configure  snapshot controlfile name to '<locationfile_name>';

好了到这里这个问题解决的算是比较透彻了,后续我将继续分享一些有关Oracle数据库相关的知识分享。有兴趣的小伙伴可以关注下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值