oracle让数据文件online,使用bbed让rac中的sysaux数据文件online

一个朋友的11g rac库的sysaux表空间因某种原因缺少历史归档,导致无法正常online,是的数据库的很多功能受限.通过实现展示恢复过程.

模拟环境

SQL> select name,file#,status from v$datafile;

NAME FILE# STATUS

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

+XIFENFEI/xff/datafile/system.256.776961315 1 SYSTEM

+XIFENFEI/xff/datafile/sysaux.257.776961315 2 ONLINE

+XIFENFEI/xff/datafile/undotbs1.258.776961317 3 ONLINE

+XIFENFEI/xff/datafile/user_dd.dbf 4 ONLINE

+XIFENFEI/xff/datafile/undotbs2.264.776961693 5 ONLINE

+XIFENFEI/asm/datafile/xifenfei01.dbf.268.781967893 6 ONLINE

6 rows selected.

SQL> alter database datafile 2 offline;

Database altered.

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 14

Next log sequence to archive 15

Current log sequence 15

SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 19

Next log sequence to archive 19

Current log sequence 20

--删除部分归档日志

[grid@rac1 ~]$ asmcmd

ASMCMD> ls

DATA/

XIFENFEI/

ASMCMD> cd data

ASMCMD> ls

XFF/

rac-cluster/

ASMCMD> cd xff

ASMCMD> ls

ARCHIVELOG/

CONTROLFILE/

ONLINELOG/

ASMCMD> cd archivelog

ASMCMD> ls

2012_03_03/

2012_04_13/

2012_04_30/

2012_05_01/

2012_05_24/

2012_06_12/

ASMCMD> cd 2012_06_12

ASMCMD> ls

thread_1_seq_15.280.785752747

thread_1_seq_16.281.785752845

thread_1_seq_17.282.785752929

thread_1_seq_18.283.785753043

thread_1_seq_19.284.785753115

ASMCMD> rm thread_1_seq_16.281.785752845

ASMCMD> rm thread_1_seq_15.280.785752747

尝试online 数据文件

SQL> alter database datafile 2 online;

alter database datafile 2 online

*

ERROR at line 1:

ORA-01113: file 2 needs media recovery

ORA-01110: data file 2: '+XIFENFEI/xff/datafile/sysaux.257.776961315'

SQL> recover datafile 2;

ORA-00279: change 1155352 generated at 06/12/2012 08:20:10 needed for thread 1

ORA-00289: suggestion :

+DATA/xff/archivelog/2012_06_12/thread_1_seq_15.280.785752747

ORA-00280: change 1155352 for thread 1 is in sequence #15

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

auto

ORA-00308: cannot open archived log

'+DATA/xff/archivelog/2012_06_12/thread_1_seq_15.280.785752747'

ORA-17503: ksfdopn:2 Failed to open file

+DATA/xff/archivelog/2012_06_12/thread_1_seq_15.280.785752747

ORA-15012: ASM file

'+DATA/xff/archivelog/2012_06_12/thread_1_seq_15.280.785752747' does not exist

ORA-00308: cannot open archived log

'+DATA/xff/archivelog/2012_06_12/thread_1_seq_15.280.785752747'

ORA-17503: ksfdopn:2 Failed to open file

+DATA/xff/archivelog/2012_06_12/thread_1_seq_15.280.785752747

ORA-15012: ASM file

'+DATA/xff/archivelog/2012_06_12/thread_1_seq_15.280.785752747' does not exist

准备bbed修改数据文件

现在datafile 2不能恢复,我们需要修改的就是该datafile header 相关的scn等信息,另外拷贝一个数据文件出来做修改时候参考

RMAN> copy datafile 2 to '/tmp/auxsys.dbf_rman';

Starting backup at 2012-06-12 08:59:07

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=20 instance=XFF1 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00002 name=+XIFENFEI/xff/datafile/sysaux.257.776961315

output file name=/tmp/auxsys.dbf_rman tag=TAG20120612T090029 RECID=1 STAMP=785754322

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:03:50

Finished backup at 2012-06-12 09:05:36

RMAN> copy datafile 4 to '/tmp/user.dbf_rman';

Starting backup at 2012-06-12 09:09:28

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

input datafile file number=00004 name=+XIFENFEI/xff/datafile/user_dd.dbf

output file name=/tmp/user.dbf_rman tag=TAG20120612T090932 RECID=2 STAMP=785754582

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15

Finished backup at 2012-06-12 09:09:48

bbed修改datafile header

[oracle@rac1 tmp]$ bbed password=blockedit listfile=/tmp/o_bbed mode=edit

BBED: Release 2.0.0.0.0 - Limited Production on Tue Jun 12 09:37:30 2012

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> info

File# Name Size(blks)

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

1 /tmp/auxsys.dbf_rman 0

2 /tmp/user.dbf_rman 0

BBED> set file 2 block 1

FILE# 2

BLOCK# 1

BBED> p kcvfhckp

struct kcvfhckp, 36 bytes @484

struct kcvcpscn, 8 bytes @484

ub4 kscnbas @484 0x0011a787

ub2 kscnwrp @488 0x0000

ub4 kcvcptim @492 0x2ed5a9cd

ub2 kcvcpthr @496 0x0001

union u, 12 bytes @500

struct kcvcprba, 12 bytes @500

ub4 kcrbaseq @500 0x00000014

ub4 kcrbabno @504 0x000000c5

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> p kcvfhcpc

ub4 kcvfhcpc @140 0x00000086

BBED> p kcvfhccc

ub4 kcvfhccc @148 0x00000085

BBED> set file 1 block 1

FILE# 1

BLOCK# 1

BBED> p kcvfhckp

struct kcvfhckp, 36 bytes @484

struct kcvcpscn, 8 bytes @484

ub4 kscnbas @484 0x0011a118

ub2 kscnwrp @488 0x0000

ub4 kcvcptim @492 0x2ed59e3a

ub2 kcvcpthr @496 0x0001

union u, 12 bytes @500

struct kcvcprba, 12 bytes @500

ub4 kcrbaseq @500 0x0000000f

ub4 kcrbabno @504 0x0000c4ed

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> p kcvfhcpc

ub4 kcvfhcpc @140 0x00000079

BBED> p kcvfhccc

ub4 kcvfhccc @148 0x00000078

/*

确定需要修改项kscnbas/kcvcptim/kcvfhcpc/kcvfhccc的相关信息

*/

BBED> set count 16

COUNT 16

BBED> d file 2 block 1 offset 484

File: /tmp/user.dbf_rman (2)

Block: 1 Offsets: 484 to 499 Dba:0x00800001

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

87a71100 00001000 cda9d52e 01000000

<32 bytes per line>

BBED> m /x 87a71100 file 1 block 1 offset 484

BBED-00209: invalid number (87a71100)

BBED> m /x 87a7 file 1 block 1 offset 484

File: /tmp/auxsys.dbf_rman (1)

Block: 1 Offsets: 484 to 499 Dba:0x00400001

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

87a71100 00000000 3a9ed52e 01000000

<32 bytes per line>

BBED> d file 2 block 1 offset 492

File: /tmp/user.dbf_rman (2)

Block: 1 Offsets: 492 to 507 Dba:0x00800001

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

cda9d52e 01000000 14000000 c5000000

<32 bytes per line>

BBED> m /x cda9d52e file 1 block 1 offset 492

BBED-00209: invalid number (cda9d52e)

BBED> d file 1 block 1 offset 492

File: /tmp/auxsys.dbf_rman (1)

Block: 1 Offsets: 492 to 507 Dba:0x00400001

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

3a9ed52e 01000000 0f000000 edc40000

<32 bytes per line>

BBED> m /x cda9 file 1 block 1 offset 492

File: /tmp/auxsys.dbf_rman (1)

Block: 1 Offsets: 492 to 507 Dba:0x00400001

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

cda9d52e 01000000 0f000000 edc40000

<32 bytes per line>

BBED> d file 1 block 1 offset 140

File: /tmp/auxsys.dbf_rman (1)

Block: 1 Offsets: 140 to 155 Dba:0x00400001

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

79000000 2970bc2e 78000000 00000000

<32 bytes per line>

BBED> d file 2 block 1 offset 140

File: /tmp/user.dbf_rman (2)

Block: 1 Offsets: 140 to 155 Dba:0x00800001

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

86000000 2970bc2e 85000000 00000000

<32 bytes per line>

BBED> m /x 86000000 file 1 block 1 offset 140

BBED-00209: invalid number (86000000)

BBED> m /x 8600 file 1 block 1 offset 140

File: /tmp/auxsys.dbf_rman (1)

Block: 1 Offsets: 140 to 155 Dba:0x00400001

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

86000000 2970bc2e 78000000 00000000

<32 bytes per line>

BBED> d file 2 block 1 offset 148

File: /tmp/user.dbf_rman (2)

Block: 1 Offsets: 148 to 163 Dba:0x00800001

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

85000000 00000000 00000000 00000000

<32 bytes per line>

BBED> m /x 8500 file 1 block 1 offset 148

File: /tmp/auxsys.dbf_rman (1)

Block: 1 Offsets: 148 to 163 Dba:0x00400001

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

85000000 00000000 00000000 00000000

<32 bytes per line>

BBED> set file 1 block 1

FILE# 1

BLOCK# 1

BBED> p kcvfhckp

struct kcvfhckp, 36 bytes @484

struct kcvcpscn, 8 bytes @484

ub4 kscnbas @484 0x0011a787

ub2 kscnwrp @488 0x0000

ub4 kcvcptim @492 0x2ed5a9cd

ub2 kcvcpthr @496 0x0001

union u, 12 bytes @500

struct kcvcprba, 12 bytes @500

ub4 kcrbaseq @500 0x0000000f

ub4 kcrbabno @504 0x0000c4ed

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> p kcvfhcpc

ub4 kcvfhcpc @140 0x00000086

BBED> p kcvfhccc

ub4 kcvfhccc @148 0x00000085

BBED> sum apply

Check value for File 1, Block 1:

current = 0x48c4, required = 0x48c4

使用修改后数据文件尝试online

SQL> alter database rename file '+XIFENFEI/xff/datafile/sysaux.257.776961315' to '/tmp/auxsys.dbf_rman';

Database altered.

SQL> recover database datafile 2 ;

ORA-00274: illegal recovery option DATAFILE

SQL> recover database datafile 2;

ORA-00274: illegal recovery option DATAFILE

SQL> recover datafile 2;

ORA-00283: recovery session canceled due to errors

ORA-01122: database file 2 failed verification check

ORA-01110: data file 2: '/tmp/auxsys.dbf_rman'

ORA-01207: file is more recent than control file - old control file

尝试重建控制文件

SQL> alter database backup controlfile to trace as '/tmp/xifenfei.ctl';

Database altered.

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> STARTUP NOMOUNT

ORACLE instance started.

Total System Global Area 535662592 bytes

Fixed Size 1346140 bytes

Variable Size 411043236 bytes

Database Buffers 117440512 bytes

Redo Buffers 5832704 bytes

SQL> @xifenfei_ctl

CREATE CONTROLFILE REUSE DATABASE "XFF" NORESETLOGS ARCHIVELOG

*

ERROR at line 1:

ORA-01503: CREATE CONTROLFILE failed

ORA-12720: operation requires database is in EXCLUSIVE mode

--在rac中重建控制文件需要设置cluster_database=FALSE

SQL> alter system set cluster_database=FALSE scope=spfile;

System altered.

SQL> shutdown immediate;

ORA-01507: database not mounted

ORACLE instance shut down.

SQL> STARTUP NOMOUNT

ORACLE instance started.

Total System Global Area 535662592 bytes

Fixed Size 1346140 bytes

Variable Size 411043236 bytes

Database Buffers 117440512 bytes

Redo Buffers 5832704 bytes

SQL> @xifenfei_ctl

Control file created.

online数据文件

重建控制文件恢复数据库之后 datafile 2自动online成功,省去了手工处理麻烦,如果没有自动online,请手工处理

SQL> recover database;

Media recovery complete.

SQL> alter database open;

Database altered.

SQL> col name for a52

SQL> select name,file#,status from v$datafile;

NAME FILE# STATUS

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

+XIFENFEI/xff/datafile/system.256.776961315 1 SYSTEM

/tmp/auxsys.dbf_rman 2 ONLINE

+XIFENFEI/xff/datafile/undotbs1.258.776961317 3 ONLINE

+XIFENFEI/xff/datafile/user_dd.dbf 4 ONLINE

+XIFENFEI/xff/datafile/undotbs2.264.776961693 5 ONLINE

+XIFENFEI/asm/datafile/xifenfei01.dbf.268.781967893 6 ONLINE

6 rows selected.

文件系统中的datafile 2 恢复到asm中

SQL> alter database datafile 2 offline;

Database altered.

RMAN> copy datafile 2 to '+XIFENFEI';

Starting backup at 2012-06-12 10:55:42

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=21 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00002 name=/tmp/auxsys.dbf_rman

output file name=+XIFENFEI/xff/datafile/sysaux.257.785761227 tag=TAG20120612T105800 RECID=1 STAMP=785762097

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:16:24

Finished backup at 2012-06-12 11:15:05

RMAN> switch datafile 2 to copy;

datafile 2 switched to datafile copy "+XIFENFEI/xff/datafile/sysaux.257.785761227"

RMAN> recover datafile 2;

Starting recover at 2012-06-12 11:30:32

using channel ORA_DISK_1

starting media recovery

media recovery complete, elapsed time: 00:01:30

Finished recover at 2012-06-12 11:34:11

RMAN> sql 'alter database datafile 2 online';

sql statement: alter database datafile 2 online

验证和收尾工作

SQL> select name,file#,status from v$datafile;

NAME FILE# STATUS

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

+XIFENFEI/xff/datafile/system.256.776961315 1 SYSTEM

+XIFENFEI/xff/datafile/sysaux.257.785761227 2 ONLINE

+XIFENFEI/xff/datafile/undotbs1.258.776961317 3 ONLINE

+XIFENFEI/xff/datafile/user_dd.dbf 4 ONLINE

+XIFENFEI/xff/datafile/undotbs2.264.776961693 5 ONLINE

+XIFENFEI/asm/datafile/xifenfei01.dbf.268.781967893 6 ONLINE

SQL> alter system set cluster_database=true scope=spfile;

System altered.

--然后重启节点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值