oracle存储过程报错 跳过,【Oracle】使用BBED跳过丢失的归档

在recover datafile的过程当中如果丢失了需要的归档将使得recover无法进行,使用bbed工具可以跳过丢失的归档进行recover datafile。

实验过程如下:

SYS@ORCL>select * from v$version;

BANNER

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

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE 10.2.0.1.0 Production

TNS for Linux: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

SYS@ORCL>create tablespace bbed_test_tbs

2 datafile '/u01/app/oracle/oradata/ORCL/bbed_test_tbs01.dbf' size 20M;

Tablespace created.

SYS@ORCL>create table bbed_test1 tablespace bbed_test_tbs as select * from dba_objects;

Table created.

SYS@ORCL>create table bbed_test2 tablespace bbed_test_tbs as select * from dba_objects;

Table created.

SYS@ORCL>archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 2

Next log sequence to archive 4

Current log sequence 4

SYS@ORCL>select file#||' '||name||' '||bytes from v$datafile;

FILE#||''||NAME||''||BYTES

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

1 /u01/app/oracle/oradata/ORCL/system01.dbf 503316480

2 /u01/app/oracle/oradata/ORCL/undotbs01.dbf 36700160

3 /u01/app/oracle/oradata/ORCL/sysaux01.dbf 262144000

4 /u01/app/oracle/oradata/ORCL/users01.dbf 5242880

5 /u01/app/oracle/oradata/ORCL/example01.dbf 104857600

6 /u01/app/oracle/oradata/ORCL/bbed_test_tbs01.dbf 20971520

6 rows selected.

使用rman备份datafile 6

[oracle@jp bbed]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Thu Jun 19 21:33:16 2014

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

connected to target database: ORCL (DBID=1356549586)

RMAN> backup datafile 6;

Starting backup at 19-JUN-14

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=143 devtype=DISK

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

input datafile fno=00006 name=/u01/app/oracle/oradata/ORCL/bbed_test_tbs01.dbf

channel ORA_DISK_1: starting piece 1 at 19-JUN-14

channel ORA_DISK_1: finished piece 1 at 19-JUN-14

piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2014_06_19/o1_mf_nnndf_TAG20140619T213426_9t73x2s8_.bkp tag=TAG20140619T213426 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03

Finished backup at 19-JUN-14

然后在库里修改datafile 6中存储的数据

SYS@ORCL>delete from bbed_test1;

50316 rows deleted.

SYS@ORCL>commit;

Commit complete.

SYS@ORCL>alter system switch logfile;

System altered.

SYS@ORCL>alter system switch logfile;

System altered.

SYS@ORCL>alter system switch logfile;

System altered.

然后关闭数据库删除datafile 6

SYS@ORCL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

[oracle@jp ORCL]$ ls

bbed_test_tbs01.dbf control03.ctl redo02.log system01.dbf users01.dbf

control01.ctl example01.dbf redo03.log temp01.dbf

control02.ctl redo01.log sysaux01.dbf undotbs01.dbf

[oracle@jp ORCL]$ mv bbed_test_tbs01.dbf bbed_test_tbs01.dbf.bak

启动数据库:

SYS@ORCL>startup

ORACLE instance started.

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 83887696 bytes

Database Buffers 197132288 bytes

Redo Buffers 2973696 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 6 - see DBWR trace file

ORA-01110: data file 6: '/u01/app/oracle/oradata/ORCL/bbed_test_tbs01.dbf'

数据库无法启动因为此时datafile 6丢失,使用rman的备份恢复数据文件,尝试打开数据库

RMAN> restore datafile 6;

Starting restore at 19-JUN-14

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=155 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00006 to /u01/app/oracle/oradata/ORCL/bbed_test_tbs01.dbf

channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2014_06_19/o1_mf_nnndf_TAG20140619T213426_9t73x2s8_.bkp

channel ORA_DISK_1: restored backup piece 1

piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2014_06_19/o1_mf_nnndf_TAG20140619T213426_9t73x2s8_.bkp tag=TAG20140619T213426

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

Finished restore at 19-JUN-14

SYS@ORCL>alter database open;

alter database open

*

ERROR at line 1:

ORA-01113: file 6 needs media recovery

ORA-01110: data file 6: '/u01/app/oracle/oradata/ORCL/bbed_test_tbs01.dbf'

此时报datafile 6需要进行recover。

这时我们删除归档,然后尝试recover datafile 6

[oracle@jp archivelog]$ cd 2014_06_19/

[oracle@jp 2014_06_19]$ ls

o1_mf_1_3_9t73hdco_.arc o1_mf_1_5_9t740dxd_.arc

o1_mf_1_4_9t74035o_.arc o1_mf_1_6_9t740sv7_.arc

[oracle@jp 2014_06_19]$ rm -f *

[oracle@jp 2014_06_19]$ ls

SYS@ORCL>recover datafile 6;

ORA-00279: change 507768 generated at 06/19/2014 21:34:26 needed for thread 1

ORA-00289: suggestion :

/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2014_06_19/o1_mf_1_4_%u_.arc

ORA-00280: change 507768 for thread 1 is in sequence #4

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

ORA-00308: cannot open archived log

'/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2014_06_19/o1_mf_1_4_9t7403

5o_.arc'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

无法恢复,提示需要的归档文件不存在

Dump出文件头:

SYS@ORCL>alter session set events 'immediate trace name file_hdrs level 10';

Session altered.

SYS@ORCL>SYS@ORCL>oradebug setmypid;

Statement processed.

SYS@ORCL>oradebug tracefile_name

/u01/app/oracle/admin/ORCL/udump/orcl_ora_9065.trc

查看dump文件:

DATA FILE #1:

(name #7) /u01/app/oracle/oradata/ORCL/system01.dbf

creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1

tablespace 0, index=1 krfil=1 prev_file=0

unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00

Checkpoint cnt:56 scn: 0x0000.0007c39c 06/19/2014 21:37:19

Stop scn: 0x0000.0007c39c 06/19/2014 21:37:19

Creation Checkpointed at scn: 0x0000.00000009 06/30/2005 19:10:11

thread:0 rba:(0x0.0.0)

这时system数据文件的,然后我们使用bbed将datafile 6的scn和system数据文件的scn改为一致。

BBED> set dba 6,1

DBA 0x01800001 (25165825 6,1)

BBED> map

File: /u01/app/oracle/oradata/ORCL/bbed_test_tbs01.dbf (6)

Block: 1 Dba:0x01800001

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

Data File Header

struct kcvfh, 676 bytes @0

ub4 tailchk @8188

BBED> p kcvfhckp

struct kcvfhckp, 36 bytes @484

struct kcvcpscn, 8 bytes @484

ub4 kscnbas @484 0x0007bf78

ub2 kscnwrp @488 0x0000

ub4 kcvcptim @492 0x32b46ee2

ub2 kcvcpthr @496 0x0001

union u, 12 bytes @500

struct kcvcprba, 12 bytes @500

ub4 kcrbaseq @500 0x00000004

ub4 kcrbabno @504 0x0000a54a

ub2 kcrbabof @508 0x0010

ub1 kcvcpetb[0] @512 0x02

ub1 kcvcpetb[1] @513 0x00

ub1 kcvcpetb[2] @514 0x00

ub1 kcvcpetb[3] @515 0x00

ub1 kcvcpetb[4] @516 0x00

ub1 kcvcpetb[5] @517 0x00

ub1 kcvcpetb[6] @518 0x00

ub1 kcvcpetb[7] @519 0x00

BBED> m /v 9cc3 offset 484

BBED-00201: invalid switch (/v)

BBED> m /x 9cc3 offset 484

Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) Y

File: /u01/app/oracle/oradata/ORCL/bbed_test_tbs01.dbf (6)

Block: 1 Offsets: 484 to 995 Dba:0x01800001

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

9cc30700 0000e7b7 e26eb432 0100f50d 04000000 4aa50000 10000000 02000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

0a000a00 0a000100 00000000 00000000 00000000 02008001 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

BBED> sum apply

Check value for File 6, Block 1:

current = 0x862e, required = 0x862e

然后回到数据库recover datafile 6,尝试打开数据库。

SYS@ORCL>recover datafile 6;

Media recovery complete.

SYS@ORCL>alter database open;

Database altered.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值