控制文件的備份與恢復

控制文件對數據庫的重要性是不言而喻的,根據我近期學習,總結了一下控制文件的備份和恢復

1.單個控制文件丟失或損壞

  我們知道數據庫的控制文件都不止一個(一般爲3個),這些控制文件互相爲鏡像,所以只需要將其他沒損壞的控   制   文件重命名爲損壞的控制文件即可。

  我現在有三個控制文件

  -rw-r----- 1 oracle oinstall   7258112 Mar 13 15:18 control01.ctl
  -rw-r----- 1 oracle oinstall   7258112 Mar 13 15:18 control02.ctl
  -rw-r----- 1 oracle oinstall   7258112 Mar 13 15:18 control03.ctl

   現在刪除一個控制文件control01.ctl

  SQL> startup
  ORACLE instance started.
  Total System Global Area  285212672 bytes
  Fixed Size                  1218992 bytes
  Variable Size             104859216 bytes
  Database Buffers          176160768 bytes
  Redo Buffers                2973696 bytes
  ORA-00205: error in identifying control file, check alert log for more info

  將control02.ctl複製爲control01.ctl

  [oracle@localhost orcl]$ cp  control02.ctl  control01.ctl

  成功啓動數據庫

  SQL> alter database  mount;
  Database altered.

  SQL> alter database open;
  Database altered.

  注:單個控制文件損壞也可以使用下面所講的全部控制文件損壞時的恢復方法,只是這裏直接重命名其他控制文件       的方法 比較快

2.全部控制文件損壞
  我們先說一下控制文件的幾種備份恢復情況
  2.1使用RMAN備份與恢復控制文件
     控制文件備份:
     a.通過CONTROLFILE AUTOBACKUP ON;參數來實現控制文件的自動備份(默認存放位置爲快速恢復區)
     b.RMAN> backup  current  controlfile;
     c.RMAN> backup database include current controlfile;
     控制文件恢復:
     RMAN> startup  nomount;
     RMAN> restore controlfile   from  autobackup;(前提是啓動的自動備份,也可以restore            controlfile   from ‘/opt/app/bak/control.ctl';)
     RMAN> alter database  mount;
     RMAN> recover  database;
     RMAN> alter  database  open resetlogs;(建議在resetlogs後備份數據庫)
  2.2使用sql*plus備份控制文件到指定文件
     備份:
     SQL>alter  database  backup  controlfile  to '/home/oracle/bak/control_bk.ctl';
     恢復:
     首先將備份的控制文件拷貝至原控制文件的路徑下,控制文件的名字和個數都要與原來的相同
     其次SQL>startup  mount;
         SQL>recover database  using backup  controlfile;
         SQL>alter database  open  resetlogs;
  3.3使用sql*plus備份控制文件到trace
     SQL> alter database backup controlfile to trace;   
     在/opt/app/oracle/admin/orcl/udump下
     [oracle@localhost udump]$ vi orcl_ora_8280.trc
     只需要執行標記”Set #1. NORESETLOGS case”部分。
      注:
     一般情況下trace文件裏都會有2部分相關內容
     恢復時先執行”Set #1. NORESETLOGS case”部分
    
     --     Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/opt/app/oracle/oradata/orcl/redo01.log'  SIZE 50M,
  GROUP 2 (
    '/opt/app/oracle/oradata/orcl/redo02.log',
    '/home/oracle/dpump/redo2.log'
  ) SIZE 50M,
  GROUP 3 (
    '/opt/app/oracle/oradata/orcl/redo03.log',
    '/home/oracle/dpump/redo3.log'
  ) SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/opt/app/oracle/oradata/orcl/system01.dbf',
  '/opt/app/oracle/oradata/orcl/undotbs01.dbf',
  '/opt/app/oracle/oradata/orcl/sysaux01.dbf',
  '/opt/app/oracle/oradata/orcl/users01.dbf',
  '/opt/app/oracle/oradata/orcl/example01.dbf',
  '/home/oracle/dpump/part2.dbf',
  '/home/oracle/dpump/part3.dbf',
  '/home/oracle/dpump/part4.dbf',
  '/home/oracle/dpump/user02.dbf'
CHARACTER SET WE8ISO8859P1
;
-- Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');
-- Configure RMAN configuration record 2
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('DEVICE TYPE','DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET');
-- Configure RMAN configuration record 3
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('BACKUP OPTIMIZATION','ON');
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/opt/app/oracle/flash_recovery_area/ORCL/archivelog/2012_03_13/o1_mf_1_1_%u_.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE
-- Block change tracking was enabled, so re-enable it now.
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING
USING FILE '/opt/app/oracle/oradata/block_trace.log' REUSE;
-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
-- Database can now be opened normally.
ALTER DATABASE OPEN;
-- Files in read-only tablespaces are now named.
ALTER DATABASE RENAME FILE 'MISSING00006'
  TO '/home/oracle/dpump/part1.dbf';
-- Online the files in read-only tablespaces.
ALTER TABLESPACE "PART1_TBS" ONLINE;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/app/oracle/oradata/orcl/temp01.dbf'
     SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
ALTER TABLESPACE NEWTEMP ADD TEMPFILE '/home/oracle/dpump/newtemp.dbf'
     SIZE 10485760  REUSE AUTOEXTEND OFF;
-- End of tempfile additions.


   執行完後再去查看發現控制文件全回來了,數據庫正常打開
     
     
     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章