服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

教你快速掌握解决rman-06026错误的方法 (1)

【赛迪网-it技术报道】问题:在数据库损坏的情况下,如果恢复时报rman-06026错误应当如何解决?

解答:如果你没有使用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>

恢复现已完成。

扫描关注微信公众号