96,确认无误,只要修改scn为最新的1041564,即可打开损坏的数据文件。
BBED> d /v dba 4,1 offset 484 count 16
File: /u01/apps/oracle/oradata/utf8a/users01.dbf(4)
Block: 1 Offsets: 484 to 499 Dba:0x01000001
-------------------------------------------------------
18de0f00 00000000 59183234 01000000 l ......Y.24....
<16 bytes per line>
因为是这里为linux x64 ,为little endian。
1039896=18de0f00
1041564=9ce40f00
直接修改即可。
BBED> set mode edit
MODE Edit
BBED> m /x 9ce40f dba 4,1 offset 484
File:/u01/apps/oracle/oradata/utf8a/users01.dbf (4)
Block: 1 Offsets: 484 to 499 Dba:0x01000001
------------------------------------------------------------------------
9ce40f00 00000000 59183234 01000000
<32 bytes per line>
BBED> m /x 9ce40f dba 4,1 offset 484
File: /u01/apps/oracle/oradata/utf8a/users01.dbf(4)
Block: 1 Offsets: 484 to 499 Dba:0x01000001
------------------------------------------------------------------------
9ce40f00 00000000 59183234 01000000
<32 bytes per line>
BBED> sum
Check value for File 4, Block 1:
current = 0x5f67, required = 0x65e3
BBED> sum apply
Check value for File 4, Block 1:
current = 0x65e3, required = 0x65e3
完成任务
sys@UTF8A> alter database datafile 4online ;
Database altered.
sys@UTF8A> selectfile#,change#,online_status from v$recover_file ;
FILE# CHANGE# ONLINE_
---------- ---------- -------
4 1041564 ONLINE
sys@UTF8A> alter database datafile 4online ;
Database altered.
sys@UTF8A> alter database open ;
alter database open
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4:'/u01/apps/oracle/oradata/utf8a/users01.dbf'
sys@UTF8A> recover datafile 4 ;
Media recovery complete.
sys@UTF8A> alter database open ;
Database altered.
sys@UTF8A> select * from scott.emp where rownum<2 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- -------------------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
完成后记得逻辑导出所有用户数据,并且完善备份计划。