控制檔案重建以及備份

andyann發表於2011-06-24
Oracle有兩種方式備份控制檔案:

1.生成可以重建控制檔案的指令碼。

2.備份二進位制的控制檔案。

手工備份:
SQL> alter database backup controlfile to '/u01/controlfile.ctl.bak';

rman備份:更改預設配置為
CONFIGURE CONTROLFILE AUTOBACKUP ON;


使用指令碼重建控制檔案。

SQL> alter database backup controlfile to trace;  #通過跟蹤檔案獲取重建控制檔案指令碼。
SQL> @gettrcname  #獲取trc檔案。

createclt.sql示例:

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "STA" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u01/app/oracle/oradata/sta/redo01.log'  SIZE 50M,
  GROUP 2 '/u01/app/oracle/oradata/sta/redo02.log'  SIZE 50M,
  GROUP 3 '/u01/app/oracle/oradata/sta/redo03.log'  SIZE 50M
DATAFILE
  '/u01/app/oracle/oradata/sta/system01.dbf',
  '/u01/app/oracle/oradata/sta/sysaux01.dbf',
  '/u01/app/oracle/oradata/sta/undotbs01.dbf',
  '/u01/app/oracle/oradata/sta/users01.dbf'
CHARACTER SET ZHS16GBK
;
RECOVER DATABASE
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/sta/temp01.dbf' REUSE;


案例就不做了,蓋國強老師的兩個案例很好,有興趣的看看吧。

案例1:如何獲得建立控制檔案的指令碼並重建控制檔案
http://www.eygle.com/faq/How.To.Backup.and.Recreate.Controlfile.htm

案例2:假設在備份之後,新建表空間,然後crash丟失所有控制檔案和資料檔案。
http://www.eygle.com/archives/2005/03/oeoeoeoeiaeoeei.html


附:gettrcname.sql蓋國強老師指令碼:

SELECT    a.VALUE
       || b.symbol
       || c.instance_name
       || '_ora_'
       || d.spid
       || '.trc' trace_file
  FROM (SELECT VALUE
          FROM v$parameter
         WHERE NAME = 'user_dump_dest') a,
       (SELECT SUBSTR (VALUE, -6, 1) symbol
          FROM v$parameter
         WHERE NAME = 'user_dump_dest') b,
       (SELECT instance_name
          FROM v$instance) c,
       (SELECT spid
          FROM v$session s, v$process p, v$mystat m
 WHERE s.paddr = p.addr AND s.SID = m.SID AND m.statistic# = 0) d;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24070945/viewspace-700671/,如需轉載,請註明出處,否則將追究法律責任。

相關文章