OCM实验-备份恢复-控制文件

来源:互联网 发布:网络报案中心我要报案 编辑:程序博客网 时间:2024/05/21 17:04
--查看环境信息SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE    11.2.0.1.0      ProductionTNS for Linux: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - ProductionSQL> show parameter control_files;NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------control_files                        string      /u01/app/oracle/oradata/vict/c                                                 ontrol01.ctl, /home/oracle/fla                                                 sh_recovery_area/vict/control0                                                 2.ctl



--模拟场景一:非归档下,删除所有控制文件,数据库未关闭。

SQL> select log_mode from v$database;LOG_MODE------------NOARCHIVELOG--手工方式备份控制文件 重建控制时文件关键在于各个数据文件的位置SQL> alter database backup controlfile to trace;Database altered.SQL> col value for a100;SQL> select value from v$diag_info where name ='Default Trace File';VALUE--------------------------------------------------------------------------------/u01/app/oracle/diag/diag/rdbms/vict/vict/trace/vict_ora_2745.trc--查找当前控制文件文件描述信息SQL> !ps -ef|grep ckpt|grep -v greporacle    2725     1  0 23:00 ?        00:00:00 ora_ckpt_vict--查看文件句柄信息[root@vict selinux]# cd /proc/2725/fd[root@vict fd]# ls -ltotal 0lr-x------. 1 oracle oinstall 64 Jul 25 23:08 0 -> /dev/nulll-wx------. 1 oracle oinstall 64 Jul 25 23:08 1 -> /dev/nulll-wx------. 1 oracle oinstall 64 Jul 25 23:08 10 -> /u01/app/oracle/diag/diag/rdbms/vict/vict/trace/vict_ora_2697.trcl-wx------. 1 oracle oinstall 64 Jul 25 23:08 11 -> /u01/app/oracle/diag/diag/rdbms/vict/vict/trace/vict_ora_2697.trmlrwx------. 1 oracle oinstall 64 Jul 25 23:08 12 -> /u01/app/oracle/product/11.2/dbs/hc_vict.datlr-x------. 1 oracle oinstall 64 Jul 25 23:08 13 -> /dev/zerolr-x------. 1 oracle oinstall 64 Jul 25 23:08 14 -> /proc/2725/fdlr-x------. 1 oracle oinstall 64 Jul 25 23:08 15 -> /dev/zerolrwx------. 1 oracle oinstall 64 Jul 25 23:08 16 -> /u01/app/oracle/product/11.2/dbs/lkVICTlrwx------. 1 oracle oinstall 64 Jul 25 23:08 17 -> <span style="color:#ff0000;">/u01/app/oracle/oradata/vict/control01.ctl</span>lrwx------. 1 oracle oinstall 64 Jul 25 23:08 18 -> <span style="color:#ff0000;">/home/oracle/flash_recovery_area/vict/control02.ctl</span>l-wx------. 1 oracle oinstall 64 Jul 25 23:08 2 -> /dev/nulll-wx------. 1 oracle oinstall 64 Jul 25 23:08 3 -> /u01/app/oracle/product/11.2/rdbms/log/vict_ora_2697.trclr-x------. 1 oracle oinstall 64 Jul 25 23:08 4 -> /dev/nulllr-x------. 1 oracle oinstall 64 Jul 25 23:08 5 -> /dev/nulllr-x------. 1 oracle oinstall 64 Jul 25 23:08 6 -> /dev/nulllrwx------. 1 oracle oinstall 64 Jul 25 23:08 7 -> /u01/app/oracle/product/11.2/dbs/hc_vict.datlrwx------. 1 oracle oinstall 64 Jul 25 23:08 8 -> /u01/app/oracle/product/11.2/dbs/lkinstvict (deleted)lr-x------. 1 oracle oinstall 64 Jul 25 23:08 9 -> /proc/2725/fd--数据库正常开启情况下,删除控制文件。SQL> !rm -rf /u01/app/oracle/oradata/vict/control01.ctlSQL> !rm -rf /home/oracle/flash_recovery_area/vict/control02.ctl--数据库没有第一时间报错SQL> select * from dual;D-XSQL> select open_mode from v$database;OPEN_MODE--------------------READ WRITE--手工做检查点 也没有报错SQL> alter system checkpoint;System altered.--在未关闭数据库的情况下,手工将控制文件拷贝回来[oracle@vict flash_recovery_area]$ cd /proc/2725/fd[oracle@vict fd]$ ls -ltotal 0lr-x------. 1 oracle oinstall 64 Jul 25 23:08 0 -> /dev/nulll-wx------. 1 oracle oinstall 64 Jul 25 23:08 1 -> /dev/nulll-wx------. 1 oracle oinstall 64 Jul 25 23:08 10 -> /u01/app/oracle/diag/diag/rdbms/vict/vict/trace/vict_ora_2697.trcl-wx------. 1 oracle oinstall 64 Jul 25 23:08 11 -> /u01/app/oracle/diag/diag/rdbms/vict/vict/trace/vict_ora_2697.trmlrwx------. 1 oracle oinstall 64 Jul 25 23:08 12 -> /u01/app/oracle/product/11.2/dbs/hc_vict.datlr-x------. 1 oracle oinstall 64 Jul 25 23:08 13 -> /dev/zerolr-x------. 1 oracle oinstall 64 Jul 25 23:08 14 -> /proc/2725/fdlr-x------. 1 oracle oinstall 64 Jul 25 23:08 15 -> /dev/zerolrwx------. 1 oracle oinstall 64 Jul 25 23:08 16 -> /u01/app/oracle/product/11.2/dbs/lkVICTlrwx------. 1 oracle oinstall 64 Jul 25 23:08 17 -><span style="color:#ff0000;"> /u01/app/oracle/oradata/vict/control01.ctl (deleted)</span>lrwx------. 1 oracle oinstall 64 Jul 25 23:08 18 -> <span style="color:#ff0000;">/home/oracle/flash_recovery_area/vict/control02.ctl (deleted)</span>lrwx------. 1 oracle oinstall 64 Jul 25 23:15 19 -> /u01/app/oracle/oradata/vict/system01.dbfl-wx------. 1 oracle oinstall 64 Jul 25 23:08 2 -> /dev/nulllrwx------. 1 oracle oinstall 64 Jul 25 23:15 20 -> /u01/app/oracle/oradata/vict/sysaux01.dbflrwx------. 1 oracle oinstall 64 Jul 25 23:15 21 -> /u01/app/oracle/oradata/vict/undotbs01.dbflrwx------. 1 oracle oinstall 64 Jul 25 23:15 22 -> /u01/app/oracle/oradata/vict/users01.dbfl-wx------. 1 oracle oinstall 64 Jul 25 23:08 3 -> /u01/app/oracle/product/11.2/rdbms/log/vict_ora_2697.trclr-x------. 1 oracle oinstall 64 Jul 25 23:08 4 -> /dev/nulllr-x------. 1 oracle oinstall 64 Jul 25 23:08 5 -> /dev/nulllr-x------. 1 oracle oinstall 64 Jul 25 23:08 6 -> /dev/nulllrwx------. 1 oracle oinstall 64 Jul 25 23:08 7 -> /u01/app/oracle/product/11.2/dbs/hc_vict.datlrwx------. 1 oracle oinstall 64 Jul 25 23:08 8 -> /u01/app/oracle/product/11.2/dbs/lkinstvict (deleted)lr-x------. 1 oracle oinstall 64 Jul 25 23:08 9 -> /proc/2725/fd[oracle@vict fd]$ cp 17 /u01/app/oracle/oradata/vict/control01.ctl[oracle@vict fd]$ cp 18 /home/oracle/flash_recovery_area/vict/control02.ctl-rw-r-----. 1 oracle oinstall 9748480 Jul 25 23:15 /u01/app/oracle/oradata/vict/control01.ctl[oracle@vict fd]$ ls -l /home/oracle/flash_recovery_area/vict/control02.ctl-rw-r-----. 1 oracle oinstall 9748480 Jul 25 23:16 /home/oracle/flash_recovery_area/vict/control02.ctl-- 关闭数据库,重新打开,校验是否成功。SQL> shutdown immediate;Database closed.Error while trying to retrieve text for error ORA-03113separator not found in message(3144)separator not found in message(3142)SQL> shutdown abort;Error while trying to retrieve text for error ORA-24324Error while trying to retrieve text for error ORA-01041SQL> ho ps -ef|grep smonoracle    2934  2696  0 23:17 pts/2    00:00:00 /bin/bash -c ps -ef|grep smonoracle    2936  2934  0 23:17 pts/2    00:00:00 grep smonSQL> exitDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options[oracle@vict ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 25 23:17:56 2014Copyright (c) 1982, 2009, Oracle.  All rights reserved.Connected to an idle instance.SQL> startup;ORACLE instance started.Total System Global Area  313860096 bytesFixed Size                  1336232 bytesVariable Size             104860760 bytesDatabase Buffers          201326592 bytesRedo Buffers                6336512 bytesDatabase mounted.Database opened.SQL> select open_mode from v$database;OPEN_MODE--------------------READ WRITE--数据库正常打开----------------


--模拟场景二:非归档下,删除所有控制文件,数据库已关闭。

SQL> select log_mode from v$database;LOG_MODE------------NOARCHIVELOGSQL> show parameter control_f;NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------control_file_record_keep_time        integer     7control_files                        string      /u01/app/oracle/oradata/vict/c                                                 ontrol01.ctl, /home/oracle/fla                                                 sh_recovery_area/vict/control0                                                 2.ctlSQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.--删除所有控制文件,此时无任何备份。SQL> !rm -rf /u01/app/oracle/oradata/vict/control01.ctl SQL> !rm -rf /home/oracle/flash_recovery_area/vict/control02.ctlSQL> ! ls /u01/app/oracle/oradata/vict/control01.ctl ls: cannot access /u01/app/oracle/oradata/vict/control01.ctl: No such file or directorySQL> ! ls /home/oracle/flash_recovery_area/vict/control02.ctlls: cannot access /home/oracle/flash_recovery_area/vict/control02.ctl: No such file or directory--启动数据库报错。SQL> startup;ORACLE instance started.Total System Global Area  313860096 bytesFixed Size                  1336232 bytesVariable Size             104860760 bytesDatabase Buffers          201326592 bytesRedo Buffers                6336512 bytesORA-00205: Message 205 not found; No message file for product=RDBMS,facility=ORA; arguments: [0] [] [0]--查看告警信息数据库mount阶段报错。715 Fri Jul 25 23:25:25 2014716 ALTER DATABASE   MOUNT717 ORA-00210: Message 210 not found; No message file for product=RDBMS, facility=ORA718 ORA-00202: Message 202 not found; No message file for product=RDBMS, facility=ORA; arguments: [/home/oracle/flash_recovery_area/    vict/control02.ctl]719 ORA-27037: Message 27037 not found; No message file for product=RDBMS, facility=ORA720 Linux Error: 2: No such file or directory721 Additional information: 3722 ORA-00210: Message 210 not found; No message file for product=RDBMS, facility=ORA723 ORA-00202: Message 202 not found; No message file for product=RDBMS, facility=ORA; arguments: [/u01/app/oracle/oradata/vict/cont    rol01.ctl]724 ORA-27037: Message 27037 not found; No message file for product=RDBMS, facility=ORA725 Linux Error: 2: No such file or directory726 Additional information: 3727 ORA-205 signalled during: ALTER DATABASE   MOUNT...728 Fri Jul 25 23:25:26 2014729 Checker run found 2 new persistent data failures--根据 control_files 参数发现,控制文件不存在,重建控制文件。SQL> shutdown abort;ORACLE instance shut down.SQL> startup nomount;ORACLE instance started.Total System Global Area  313860096 bytesFixed Size                  1336232 bytesVariable Size             104860760 bytesDatabase Buffers          201326592 bytesRedo Buffers                6336512 bytes--采用noresetlogs版本 --重建控制文件关键要设置好每个数据文件的位置SQL> CREATE CONTROLFILE REUSE DATABASE "VICT" NORESETLOGS  NOARCHIVELOG  2      MAXLOGFILES 16  3      MAXLOGMEMBERS 3  4      MAXDATAFILES 100  5      MAXINSTANCES 8  6      MAXLOGHISTORY 292  7  LOGFILE  8    GROUP 1 '/u01/app/oracle/oradata/vict/redo01.log'  SIZE 50M BLOCKSIZE 512,  9    GROUP 2 '/u01/app/oracle/oradata/vict/redo02.log'  SIZE 50M BLOCKSIZE 512, 10    GROUP 3 '/u01/app/oracle/oradata/vict/redo03.log'  SIZE 50M BLOCKSIZE 512 11  -- STANDBY LOGFILE 12  DATAFILE 13    '/u01/app/oracle/oradata/vict/system01.dbf', 14    '/u01/app/oracle/oradata/vict/sysaux01.dbf', 15    '/u01/app/oracle/oradata/vict/undotbs01.dbf', 16    '/u01/app/oracle/oradata/vict/users01.dbf' 17  CHARACTER SET AL32UTF8 18  ;Control file created.SQL> select open_mode from v$database;OPEN_MODE--------------------MOUNTEDSQL> alter database open;Database altered.SQL> select open_mode from v$database;OPEN_MODE--------------------READ WRITESQL> ! ls /u01/app/oracle/oradata/vict/control01.ctl /u01/app/oracle/oradata/vict/control01.ctlSQL>  ! ls /home/oracle/flash_recovery_area/vict/control02.ctl/home/oracle/flash_recovery_area/vict/control02.ctl--数据库正常启动--检查文件信息,临时文件是需要手工添加的SQL> set linesize 1000;SQL> select * from v$log;    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIE---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ --------         1          1          7   52428800        512          1 NO  CURRENT                 817590 25-JUL-14   2.8147E+14         2          1          5   52428800        512          1 NO  INACTIVE                793737 25-JUL-14       817000 25-JUL-4         3          1          6   52428800        512          1 NO  INACTIVE                817000 25-JUL-14       817590 25-JUL-4SQL> select * from v$logfile;    GROUP# STATUS  TYPE    MEMBER                                                                                                  _---------- ------- ------- ---------------------------------------------------------------------------------------------------------         3 STALE   ONLINE  /u01/app/oracle/oradata/vict/redo03.log                                                                 O         2 STALE   ONLINE  /u01/app/oracle/oradata/vict/redo02.log                                                                 O         1         ONLINE  /u01/app/oracle/oradata/vict/redo01.log                                                                 OSQL> select * from v$dbfile;     FILE# NAME---------- -------------------------------------------------------------------------------------------------------------------------         4 /u01/app/oracle/oradata/vict/users01.dbf         3 /u01/app/oracle/oradata/vict/undotbs01.dbf         2 /u01/app/oracle/oradata/vict/sysaux01.dbf         1 /u01/app/oracle/oradata/vict/system01.dbfSQL> select * from dba_temp_files;no rows selectedSQL> select name from v$tablespace;NAME------------------------------SYSTEMSYSAUXUNDOTBS1USERSTEMPSQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/vict/temp01.dbf';Tablespace altered.


-------------------------------------------

--模拟场景三:归档模式下有备份,删除所有控制文件。

SQL> alter database archivelog;Database altered.SQL> archive log list;Database log mode              Archive ModeAutomatic archival             EnabledArchive destination            USE_DB_RECOVERY_FILE_DESTOldest online log sequence     5Next log sequence to archive   7Current log sequence           7--做好备份RMAN> backup database include current controlfile;Starting backup at 25-JUL-14using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=20 device type=DISKchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00001 name=/u01/app/oracle/oradata/vict/system01.dbfinput datafile file number=00002 name=/u01/app/oracle/oradata/vict/sysaux01.dbfinput datafile file number=00003 name=/u01/app/oracle/oradata/vict/undotbs01.dbfinput datafile file number=00004 name=/u01/app/oracle/oradata/vict/users01.dbfchannel ORA_DISK_1: starting piece 1 at 25-JUL-14channel ORA_DISK_1: finished piece 1 at 25-JUL-14piece handle=/home/oracle/flash_recovery_area/VICT/backupset/2014_07_25/o1_mf_nnndf_TAG20140725T234120_9x6mdjwl_.bkp tag=TAG2014072Echannel ORA_DISK_1: backup set complete, elapsed time: 00:01:07channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setincluding current control file in backup setincluding current SPFILE in backup setchannel ORA_DISK_1: starting piece 1 at 25-JUL-14channel ORA_DISK_1: finished piece 1 at 25-JUL-14piece handle=/home/oracle/flash_recovery_area/VICT/backupset/2014_07_25/o1_mf_ncsnf_TAG20140725T234120_9x6mgnvx_.bkp tag=TAG2014072Echannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01Finished backup at 25-JUL-14RMAN> list backup of database;List of Backup Sets===================BS Key  Type LV Size       Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------1       Full    1007.97M   DISK        00:00:59     25-JUL-14              BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20140725T234120        Piece Name: /home/oracle/flash_recovery_area/VICT/backupset/2014_07_25/o1_mf_nnndf_TAG20140725T234120_9x6mdjwl_.bkp  List of Datafiles in backup set 1  File LV Type Ckp SCN    Ckp Time  Name  ---- -- ---- ---------- --------- ----  1       Full 818053     25-JUL-14 /u01/app/oracle/oradata/vict/system01.dbf  2       Full 818053     25-JUL-14 /u01/app/oracle/oradata/vict/sysaux01.dbf  3       Full 818053     25-JUL-14 /u01/app/oracle/oradata/vict/undotbs01.dbf  4       Full 818053     25-JUL-14 /u01/app/oracle/oradata/vict/users01.dbf--开始删除文件SQL> show parameter controlNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------control_file_record_keep_time        integer     7control_files                        string      /u01/app/oracle/oradata/vict/c                                                 ontrol01.ctl, /home/oracle/fla                                                 sh_recovery_area/vict/control0                                                 2.ctlcontrol_management_pack_access       string      DIAGNOSTIC+TUNINGSQL> shutdown immediate;ORA-01109: Message 1109 not found; No message file for product=RDBMS, facility=ORADatabase dismounted.ORACLE instance shut down.SQL> !rm -rf /u01/app/oracle/oradata/vict/control01.ctlSQL> !rm -rf  /home/oracle/flash_recovery_area/vict/control02.ctl--启动报错SQL> startup;ORACLE instance started.Total System Global Area  313860096 bytesFixed Size                  1336232 bytesVariable Size             104860760 bytesDatabase Buffers          201326592 bytesRedo Buffers                6336512 bytesORA-00205: Message 205 not found; No message file for product=RDBMS, facility=ORA; arguments: [0] [] [0]--尝试恢复,此时推荐重建控制文件,本次测试restore recoverRMAN> restore controlfile from 2> '/home/oracle/flash_recovery_area/VICT/backupset/2014_07_25/o1_mf_ncsnf_TAG20140725T234120_9x6mgnvx_.bkp';Starting restore at 25-JUL-14using channel ORA_DISK_1channel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:03output file name=/u01/app/oracle/oradata/vict/control01.ctloutput file name=/home/oracle/flash_recovery_area/vict/control02.ctlFinished restore at 25-JUL-14RMAN> mount database;using target database control file instead of recovery catalogdatabase mountedRMAN> recover database;Starting recover at 26-JUL-14Starting implicit crosscheck backup at 26-JUL-14allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=18 device type=DISKCrosschecked 1 objectsFinished implicit crosscheck backup at 26-JUL-14Starting implicit crosscheck copy at 26-JUL-14using channel ORA_DISK_1Finished implicit crosscheck copy at 26-JUL-14searching for all files in the recovery areacataloging files...cataloging doneList of Cataloged Files=======================File Name: /home/oracle/flash_recovery_area/VICT/backupset/2014_07_25/o1_mf_ncsnf_TAG20140725T234120_9x6mgnvx_.bkpusing channel ORA_DISK_1starting media recoveryarchived log for thread 1 with sequence 7 is already on disk as file /u01/app/oracle/oradata/vict/redo01.logarchived log file name=/u01/app/oracle/oradata/vict/redo01.log thread=1 sequence=7media recovery complete, elapsed time: 00:00:00Finished recover at 26-JUL-14SQL> select open_mode from v$database;OPEN_MODE--------------------MOUNTED--以resetlogs打开 重置了日志sequence,之后做好备份一次。也可以以noresetlogs重建控制文件,就无需重置日志。SQL> alter database open resetlogs;Database altered.SQL> set linesize 1000;SQL> select * from v$log;    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIE---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ --------         1          1          1   52428800        512          1 NO  CURRENT                 818055 26-JUL-14   2.8147E+14         2          1          0   52428800        512          1 YES UNUSED                       0                      0         3          1          0   52428800        512          1 YES UNUSED                       0                      0


0 0