this is a extra element for clear the floated element
应对RMAN-06026错误,使用dbms_backup_restore进行恢复
  • 12/31
  • 2008
备份恢复 | Oracle 762 次查看
  昨天做一个实验,结果把数据库搞坏了,当试图进行恢复时居然报了RMAN-06026错误。 回想一下,原来在尝试恢复中使用了_allow_resetlogs_corruption参数,resetlogs之后,Oracle使用当前的控制文件不允许从这个历史备份集中进行恢复。

  由于我没有使用catalog,所以尝试使用dbms_backup_restore进行恢复。

  1.错误信息

  我们看到虽然list backup可以显示备份集,但是无法进行恢复,错误为RMAN-06026,RMAN-06026。

  [oracle@jumper oradata]$ rman target /

  Recovery Manager: Release 9.2.0.4.0 - Production

  Copyright (c) 1995, 2002, Oracle Corporation.

  All rights reserved.

  connected to target database: CONNER (DBID=3152029224)

  RMAN> restore database;

  Starting restore at 11-JUN-05

  using target database controlfile instead of recovery catalog

  allocated channel: ORA_DISK_1

  channel ORA_DISK_1: sid=11 devtype=DISK

  RMAN-00571: ===========================================================

  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

  RMAN-00571: ===========================================================

  RMAN-03002: failure of restore command at 06/11/2005 01:19:01

  RMAN-06026: some targets not found - aborting restore

  RMAN-06023: no backup or copy of datafile 3 found to restore

  RMAN-06023: no backup or copy of datafile 2 found to restore

  RMAN-06023: no backup or copy of datafile 1 found to restore

  RMAN> list backup;

  List of Backup Sets

  ===================

  BS Key

  Type LV Size

  Device Type Elapsed Time Completion Time

  ------- ---- -- ---------- ----------- ------------ ---------------

  13

  Full

  1G

  DISK

  00:03:20

  09-JUN-05

  BP Key: 13

  Status: AVAILABLE

  Tag: TAG20050609T173346

  Piece Name: /opt/oracle/product/9.2.0/dbs/0ggmiabq_1_1

  SPFILE Included: Modification time: 08-JUN-05

  List of Datafiles in backup set 13

  File LV Type Ckp SCN

  Ckp Time

  Name

  ---- -- ---- ---------- --------- ----

  1

  Full 240560269

  09-JUN-05 /opt/oracle/oradata/conner/system01.dbf

  2

  Full 240560269

  09-JUN-05 /opt/oracle/oradata/conner/undotbs01.dbf

  3

  Full 240560269

  09-JUN-05 /opt/oracle/oradata/conner/users01.dbf

  RMAN> exit

  Recovery Manager complete.

  2.使用dbms_backup_restore进行恢复

  dbms_backup_restore是一个非常强大的package,可以在数据库nomount下使用,用于从备份集中读取各类文件。

  本例使用如下脚本:

  DECLARE

  devtype varchar2(256);

  done boolean;

  BEGIN

  devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

  sys.dbms_backup_restore.restoreSetDatafile;

  sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'/opt/oracle/oradata/conner/system01.dbf');

  sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>'/opt/oracle/oradata/conner/undotbs01.dbf');

  sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,toname=>'/opt/oracle/oradata/conner/users01.dbf');

  sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/opt/oracle/product/9.2.0/dbs/0ggmiabq_1_1', params=>null);

  sys.dbms_backup_restore.deviceDeallocate;

  END;

  /

  3.执行恢复

  [oracle@jumper conner]$ sqlplus "/ as sysdba"

  SQL*Plus: Release 9.2.0.4.0 - Production on Sat Jun 11 01:24:34 2005

  Copyright (c) 1982, 2002, Oracle Corporation.

  All rights reserved.

  Connected to an idle instance.

  SQL> startup nomount;

  ORACLE instance started.

  Total System Global Area

  101782828 bytes

  Fixed Size

  451884 bytes

  Variable Size

  37748736 bytes

  Database Buffers

  62914560 bytes

  Redo Buffers

  667648 bytes

  SQL> DECLARE

  2

  devtype varchar2(256);

  3

  done boolean;

  4

  BEGIN

  5

  devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

  6

  sys.dbms_backup_restore.restoreSetDatafile;

  7

  sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,toname=>'/opt/oracle/oradata/conner/system01.dbf');

  8

  sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,toname=>'/opt/oracle/oradata/conner/undotbs01.dbf');

  9

  sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,toname=>'/opt/oracle/oradata/conner/users01.dbf');

  10

  sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/opt/oracle/product/9.2.0/dbs/0ggmiabq_1_1',

  params=>null);

  11

  sys.dbms_backup_restore.deviceDeallocate;

  12

  END;

  13

  /

  PL/SQL procedure successfully completed.

  SQL>

  至此,从备份集中读取文件完毕。

  4.恢复控制文件

  由于大意,也没有备份控制文件,所以只好重建控制文件。

  SQL> alter database mount;

  Database altered.

  SQL> alter database backup controlfile to trace;

  Database altered.

  找到trace文件,编辑、执行重建控制文件需要部分:

  [oracle@jumper oracle]$ sqlplus "/ as sysdba"

  SQL*Plus: Release 9.2.0.4.0 - Production on Sat Jun 11 01:30:50 2005

  Copyright (c) 1982, 2002, Oracle Corporation.

  All rights reserved.

  Connected to:

  Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

  With the Partitioning option

  JServer Release 9.2.0.4.0 - Production

  SQL> shutdown immediate;

  ORA-01109: database not open

  Database dismounted.

  ORACLE instance shut down.

  SQL> startup nomount;

  ORACLE instance started.

  Total System Global Area

  101782828 bytes

  Fixed Size

  451884 bytes

  Variable Size

  37748736 bytes

  Database Buffers

  62914560 bytes

  Redo Buffers

  667648 bytes

  SQL> set echo on

  SQL> @ctl

  SQL>

  SQL> CREATE CONTROLFILE REUSE DATABASE "CONNER" RESETLOGS

  ARCHIVELOG

  2

  --

  SET STANDBY TO MAXIMIZE PERFORMANCE

  3

  MAXLOGFILES 5

  4

  MAXLOGMEMBERS 3

  5

  MAXDATAFILES 100

  6

  MAXINSTANCES 1

  7

  MAXLOGHISTORY 1361

  8

  LOGFILE

  9

  GROUP 1 '/opt/oracle/oradata/conner/redo01.log'

  SIZE 10M,

  10

  GROUP 2 '/opt/oracle/oradata/conner/redo02.log'

  SIZE 10M,

  11

  GROUP 3 '/opt/oracle/oradata/conner/redo03.log'

  SIZE 10M

  12

  -- STANDBY LOGFILE

  13

  DATAFILE

  14

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

  15

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

  16

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

  17

  CHARACTER SET ZHS16GBK

  18

  ;

  Control file created.

  5.执行恢复

  SQL> recover database;

  ORA-00283: recovery session canceled due to errors

  ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

  SQL> recover database using backup controlfile until cancel;

  ORA-00279: change 240560269 generated at 06/09/2005 17:33:48 needed for thread 1

  ORA-00289: suggestion : /opt/oracle/oradata/conner/archive/1_7.dbf

  ORA-00280: change 240560269 for thread 1 is in sequence #7

  Specify log: {=suggested | filename | AUTO | CANCEL}

  auto

  ORA-00279: change 240600632 generated at 06/10/2005 10:42:26 needed for thread 1

  ORA-00289: suggestion : /opt/oracle/oradata/conner/archive/1_8.dbf

  ORA-00280: change 240600632 for thread 1 is in sequence #8

  ORA-00278: log file '/opt/oracle/oradata/conner/archive/1_7.dbf' no longer needed for this recovery

  Specify log: {=suggested | filename | AUTO | CANCEL}

  auto

  ORA-00279: change 240620884 generated at 06/10/2005 10:45:42 needed for thread 1

  ORA-00289: suggestion : /opt/oracle/oradata/conner/archive/1_9.dbf

  ORA-00280: change 240620884 for thread 1 is in sequence #9

  ORA-00278: log file '/opt/oracle/oradata/conner/archive/1_8.dbf' no longer needed for this recovery

  ORA-00283: recovery session canceled due to errors

  ORA-00600: internal error code, arguments: [3020], [4242465], [1], [9], [314], [272], [], []

  ORA-10567: Redo is inconsistent with data block (file# 1, block# 48161)

  ORA-10564: tablespace SYSTEM

  ORA-01110: data file 1: '/opt/oracle/oradata/conner/system01.dbf'

  ORA-10560: block type 'DATA SEGMENT HEADER - UNLIMITED'

  ORA-01112: media recovery not started

  SQL> recover database using backup controlfile until cancel;

  ORA-00279: change 240620949 generated at 06/10/2005 10:45:44 needed for thread 1

  ORA-00289: suggestion : /opt/oracle/oradata/conner/archive/1_9.dbf

  ORA-00280: change 240620949 for thread 1 is in sequence #9

  Specify log: {=suggested | filename | AUTO | CANCEL}

  cancel

  Media recovery cancelled.

  SQL> alter database open resetlogs;

  Database altered.

  SQL> select name from v$datafile;

  NAME

  ------------------------------------------------------------

  /opt/oracle/oradata/conner/system01.dbf

  /opt/oracle/oradata/conner/undotbs01.dbf

  /opt/oracle/oradata/conner/users01.dbf

  SQL>

  至此恢复完毕。

  
您可能感兴趣的:

更多相关内容