ITPub博客

首页 > 数据库 > Oracle > 控制文件的恢复方法(三)

控制文件的恢复方法(三)

原创 Oracle 作者:kuqlan 时间:2012-06-16 22:56:43 0 删除 编辑

控制文件的通常恢复方法有:
1、从控制文件自动或二进制备份中恢复

2、从控制文件快照备份中恢复

3、控制文件trace文件备份中恢复

4、Oracle自动生成的控制文件脚本恢复

如下对相关的步骤及语法进行介绍:

3、控制文件trace文件备份中恢复

对数据库进行一些改动并备份控制文件的trace备份:

SQL> insert into t select * from dba_users;

8 rows created.

SQL> alter database backup controlfile to trace as '/opt/oracle/backups/control.txt';

Database altered.

SQL> insert into t select * from dba_users;

8 rows created.

SQL> alter system switch logfile;

System altered.

SQL>

[@more@]

在另外一个窗口中将控制文件通过OS的mv 或rm命令进行移动或删除;

[oracle@dbserv test]$ mv control01.ctl control02.ctl control03.ctl /opt/oracle/backups/

[oracle@dbserv test]$ ls

redo01.log redo02.log redo03.log sqlnet.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf

关闭并重新启动数据库

SQL> shutdown immediate;

ORA-01097: cannot shutdown while in a transaction - commit or rollback first

SQL> commit;

Commit complete.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 2147483648 bytes

Fixed Size 1220432 bytes

Variable Size 486539440 bytes

Database Buffers 1644167168 bytes

Redo Buffers 15556608 bytes

ORA-00205: ?????????, ??????, ???????

将生成的控制文件trace文本备份中获取相关的恢复语句:

[oracle@xjtvpay ~]$ cd /opt/oracle/backups/

[oracle@xjtvpay backups]$ ls

control01.ctl control02.ctl control03.ctl control.txt

[oracle@xjtvpay backups]$ more control.txt

省略注视内容...

-- Set #1. NORESETLOGS case

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/opt/oracle/oradata/test/redo01.log' SIZE 50M,

GROUP 2 '/opt/oracle/oradata/test/redo02.log' SIZE 50M,

GROUP 3 '/opt/oracle/oradata/test/redo03.log' SIZE 50M

DATAFILE

'/opt/oracle/oradata/test/system01.dbf',

'/opt/oracle/oradata/test/undotbs01.dbf',

'/opt/oracle/oradata/test/sysaux01.dbf',

'/opt/oracle/oradata/test/users01.dbf'

CHARACTER SET ZHS16GBK

;

VARIABLE RECNO NUMBER;

EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');

RECOVER DATABASE

ALTER SYSTEM ARCHIVE LOG ALL;

ALTER DATABASE OPEN;

ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/test/temp01.dbf'

SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;

-- Set #2. RESETLOGS case

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/opt/oracle/oradata/test/redo01.log' SIZE 50M,

GROUP 2 '/opt/oracle/oradata/test/redo02.log' SIZE 50M,

GROUP 3 '/opt/oracle/oradata/test/redo03.log' SIZE 50M

DATAFILE

'/opt/oracle/oradata/test/system01.dbf',

'/opt/oracle/oradata/test/undotbs01.dbf',

'/opt/oracle/oradata/test/sysaux01.dbf',

'/opt/oracle/oradata/test/users01.dbf'

CHARACTER SET ZHS16GBK

;

VARIABLE RECNO NUMBER;

EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');

RECOVER DATABASE USING BACKUP CONTROLFILE

ALTER DATABASE OPEN RESETLOGS;

ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/test/temp01.dbf'

SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;

根据以上内容介绍,将其中的部分复制到文本文件后,在SQL PLUS行调用并执行即可。因我们的日志文件都健全,因此执行第一个NORESETLOGS case对应的内容:

[oracle@xjtvpay backups]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jun 15 21:38:23 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

SQL> @creatconf.sql;

ORACLE instance started.

Total System Global Area 2147483648 bytes

Fixed Size 1220432 bytes

Variable Size 486539440 bytes

Database Buffers 1644167168 bytes

Redo Buffers 15556608 bytes

Control file created.

PL/SQL procedure successfully completed.

ORA-00283: recovery session canceled due to errors

ORA-00264: no recovery required

System altered.

Database altered.

Tablespace altered.

SQL> select count(*) from t;

COUNT(*)

----------

32

SQL>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18841027/viewspace-1058556/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle技术爱好者,Oracle10g OCM,网名 KUQLAN ,具有7的年Oracle数据库管理实践,曾经参加过BOSS、ERP、云计算(OpenStack+kvm)等项目的一线工作。以前写博客是为了自己,而现在是为了自己和别人。因为领会了帮助别人和分享、沉淀和积累会创造快乐和价值...

注册时间:2009-01-26

  • 博文量
    183
  • 访问量
    1681426