controlfile 的备份恢复

Todd Bao《oracle 11g 数据库恢复技术》整理

 实践平台:win 11.2.0.3  64bit

 

  控制文件包含已下信息:

     dbnamedbid,数据库创建时间戳,字符集,datafiletempfileredo logarchivelogtablespacerman 资料库,checkpoint,损坏的数据块注册表,还原点,重设日志SCN,脏数据库块的数量等。

写操作对所有控制文件,而读操作只读第一个控制文件。

分类:

    备份文件按时间跨度分类:

    (1)在线镜像备份:一般有三个镜像。

    (2)结构备份:具有数据库的物理结构,只是SCN,日志序列发生变化。

    (3)历史备份:备份后数据库结构发生了变化,此备份便为历史备份。

备份:

      自动备份

            显式自动备份:

                rman配置参数  configure controlfile autobackup on;

                发生条件:1.rman任何备份操作,导致控制文件内RMAN资料库被更新(configure命令发生变化除外)2.数据库物理结构发生变化后。

            隐式自动备份:

              当备份system数据文件时,即使configure controlfile autobackup off状态,也会自动备份。

    手动备份:

         1.备份集备份:

             RMAN>backup as  backupset current controlfile;

         2.镜像复制备份:

           RMAN>backup as copy current controlfile ;

           SQL> alter database backup controlfile to ‘d:\backup\controlfile1.bak’;

         3.重建脚本:

           SQL> alter database backup controlfile to trace;

            查看跟踪文件:

             select value from v$diag_info where name=’Default Trace File’;

             提取noresetlogs后的进行重建。

恢复:

             1.利用镜像进行恢复。最简单快捷。前提是其他控制文件未发生损坏。

             2.利用自动备份恢复:

                RMAN>startup nomount;

                RMAN>restore  controlfile from autobackup;

                RMAN>mount database;

                RMAN>recover database;

                RMAN>alter dabase open resetlogs;

                Recover database的上下文,分为三类:

                    (1)SQL>recover database ;该命令只是对所有的数据文件进行恢复,并且只能使用保存在文件系统上的归档和在线日志,前提是控制文件不能是还原或是重建得来的。

                    (2)SQL>recover database using backup contorlfile; 该命令是对所有数据文件和控制文件进行恢复,并且只能使用保存在文件系统上的归档日志和在线日志。

                    (3)RMAN>recover database;对所有数据文件和控制文件进行恢复,并且可以使用增量备份,备份中的和文件系统中的归档日志,以及文件系统上的在线日志。

           3.利用手动备份进行恢复:

               RMAN>startup nomount;

               RMAN>restore  controlfile from  ‘D:\backup\ORCL\BACKUPSET\2013_11_17\O1_MF_NCNNF_TAG20131117T173020_98K35J7V_.BKP’;

               RMAN>mount database;

               RMAN>recover database;

               RMAN>alter dabase open resetlogs;

          4.利用历史备份进行恢复

              (1)自动修复不一致

                       在备份后控制文件后,添加了表空间test,如果没有控制文件的自动备份,即configure controlfile autobackup off,步骤:
                        RMAN>startup nomount;

                        RMAN>restore controlfile from ‘d:\backup\controlfile. bak’;

                        RMAN>mount database;

                        查看是否有test数据文件:

                            select name from v$datafile;

                      RMAN>restore database;

                           select name from v$datafile;

                       查看数据文件已有test数据文件

                       RMAN> alter database open resetlogs;

             (2)手动修复不一致

                      备份了控制文件,之后把test表空间删除,数据库物理结构发生变化,还原controlfile之后,控制文件会认为test是存在的,但实际上是没有的。

                步骤:

                          RMAN>STARTUP NOMIUNT;

                          RMAN>RESTORE CONTROLFILE FROM ‘D:\BACKUP\CONTROLFILE.BAK’;

                          RMAN>MOUNT DATABASE;

                          查看视图test 是存在的

                            select name from  v$datafile;

                        RMAN>RECOVER DATABASE;

                          此时会报错:数据文件需要恢复:

                                

                              将其脱机:alter database datafile 9 offline;

                                在SQL执行控制文件的恢复:

                                SQL>recover database using backup controlfile;

                                输入auto

                               此时会应用archivelog,之后再次执行Recover database using backup controlfile;尝试着输入redo log文件,进行在线日志的恢复,完毕

                               SQL>alter databaseopen resetlogs;

                               SQL>select name from v$datafile;

                               发现test数据文件消失。

               或者是在mount database 后执行命令:recover database skip tablespace  'TEST';亦可恢复。

             还有一种情况,备份后archive log 丢失。还原控制文件之后recover  database后,报错找不到日志文件,尝试打开数据库报错,ora-01194,1110,system数据文件需要一致性恢复。此时需要手工创建控制文件,运行noresetlogs一段,自行进入mount状态,recover  database跳过归档日志,SQL>recover database using backup controlfile; 应用在线日志alter database open resetlogs; 完毕。

 

  

 

你可能感兴趣的:(controlfile 的备份恢复)