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博客 ” ,链接:https://blog.itpub.net/24070945/viewspace-700671/
,如需转载,请注明出处,否则将追究法律责任。