ITPub博客

首页 > 数据库 > Oracle > Oracle 无备份情况下undo文件损坏处理

Oracle 无备份情况下undo文件损坏处理

原创 Oracle 作者:y81277241 时间:2020-03-21 18:52:06 0 删除 编辑

SQL> select ename,sal from scott.emp where deptno=10;


ENAME   SAL

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

CLARK 2450

KING 5000

MILLER 1300


SQL> show undo

SP2-0158: unknown SHOW option "undo"

SQL> show parameter undo


NAME      TYPE VALUE

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

undo_management      string AUTO

undo_retention      integer 900

undo_tablespace      string UNDOTBS2

SQL> create undo tablespace undotbs3 datafile '/u01/oracle/oradata/ora10g/undotbs03.dbf' size 20M;


Tablespace created.


SQL> alter system set undo_tablespace=undotbs3;


System altered.


开新会话 产生事务


SQL> select XIDUSN,XIDSLOT,XIDSQN,name from v$transaction;


    XIDUSN    XIDSLOT   XIDSQN NAME

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

9     0      300


SQL> select segment_name,tablespace_name,file_id from dba_rollback_segs where segment_id=9;


SEGMENT_NAME   TABLESPACE_NAME    FILE_ID

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

_SYSSMU9$   UNDOTBS3    2


SQL> ! rm -rf /u01/oracle/oradata/ora10g/undotbs03.dbf


SQL> shut abort   也可以不停库 使用alter database datafile 2 offline;来触发数据库认识到数据文件损坏 

  再使用alter database create datafile 2;这样不用停库 事务最后能保持住.

ORACLE instance shut down.

SQL> 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 2 - see DBWR trace file

ORA-01110: data file 2: '/u01/oracle/oradata/ora10g/undotbs03.dbf'



SQL> select FILE#,checkpoint_change#,recover, fuzzy from v$datafile_header;


     FILE# CHECKPOINT_CHANGE# REC FUZ

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

1        513395 NO  YES

2     0

3        513395 NO  YES

4        513395 NO  YES

5        513395 NO  YES

6        513395 NO  YES


6 rows selected.


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


     FILE# STATUS     CHECKPOINT_CHANGE# NAME

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

1 SYSTEM   513395 /u01/oracle/oradata/ora10g/system01.dbf

2 ONLINE   513572 /u01/oracle/oradata/ora10g/undotbs03.dbf

3 ONLINE   513395 /u01/oracle/oradata/ora10g/sysaux01.dbf

4 ONLINE   513395 /u01/oracle/oradata/ora10g/users01.dbf

5 ONLINE   513395 /u01/oracle/oradata/ora10g/mytest01.dbf

6 ONLINE   513395 /u01/oracle/oradata/ora10g/undotbs02.dbf


6 rows selected.



SQL> set line 110

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


 STATUS     CHECKPOINT_CHANGE# NAME CREATION_CHANGE#

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

SYSTEM   513395 /u01/oracle/oradata/ora10g/system01.dbf    9

ONLINE   513572 /u01/oracle/oradata/ora10g/undotbs03.dbf    513571

ONLINE   513395 /u01/oracle/oradata/ora10g/sysaux01.dbf    6609

ONLINE   513395 /u01/oracle/oradata/ora10g/users01.dbf    10566

ONLINE   513395 /u01/oracle/oradata/ora10g/mytest01.dbf    459576

ONLINE   513395 /u01/oracle/oradata/ora10g/undotbs02.dbf    492642


6 rows selected.


依据控制文件的信息 重建这个文件

SQL> alter database create datafile '/u01/oracle/oradata/ora10g/undotbs03.dbf';


Database altered.


SQL> select FILE#,checkpoint_change#,recover, fuzzy from v$datafile_header;


     FILE# CHECKPOINT_CHANGE# REC FUZ

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

1        513395 NO  YES

2        513571 YES NO

3        513395 NO  YES

4        513395 NO  YES

5        513395 NO  YES

6        513395 NO  YES


6 rows selected.


select * from v$recover_file;file;


     FILE# ONLINE  ONLINE_ ERROR    CHANGE# TIME

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

2 ONLINE  ONLINE     513571 25-FEB-11


SQL> 


需要 5号日志进行恢复

SQL> select hxfil FILENUMBER,fhsta STATUS,fhscn SCN,fhrba_Seq SEQUENCE from x$kcvfh;


FILENUMBER    STATUS SCN      SEQUENCE

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

1      8196 513395     5

2 0 513571     5

3 4 513395     5

4 4 513395     5

5 4 513395     5

6 4 513395     5


6 rows selected.


SQL> recover datafile 2;

Media recovery complete.

SQL> alter database open;


Database altered.


SQL> select FILE#,checkpoint_change#,recover, fuzzy from v$datafile_header;


     FILE# CHECKPOINT_CHANGE# REC FUZ

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

1        533737 NO  YES

2        533737 NO  YES

3        533737 NO  YES

4        533737 NO  YES

5        533737 NO  YES

6        533737 NO  YES


6 rows selected.


SQL> 数据库shut abort过 事务被回退

SQL> select ename,sal from scott.emp where deptno=10;


ENAME   SAL

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

CLARK 2450

KING 5000

MILLER 1300


SQL> 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29523859/viewspace-2681885/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-03-06

  • 博文量
    30
  • 访问量
    66401