您的位置:首页 > 其它

控制文件的备份与恢复

2012-03-13 16:28 387 查看
控制文件对数据库的重要性是不言而喻的,根据我近期学习,总结了一下控制文件的备份和恢复

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.

执行完后再去查看发现控制文件全回来了,数据库正常打开
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: