undo表空间文件丢失恢复(3)--无备份无redo的情况下恢复

undo表空间的数据文件丢失,如果没有备份的情况下,而且redo也不可用,这个时候就要采用隐藏参数来恢复,下边给出一个例子。

 

undo表空间文件丢失恢复(1)--有备份的情况下恢复:http://blog.itpub.net/26736162/viewspace-1458654/

undo表空间文件丢失恢复(2)--无备份有redo的情况下恢复:http://blog.itpub.net/26736162/viewspace-1458663/

 

[oracle@rhel6_lhr ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Mar 12 18:13:13 2015

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> create undo tablespace undotbs2 datafile '/u03/app/oracle/oradata/ora1024g/undotbs02.dbf' size 5m autoextend on;

 

Tablespace created.

 

SQL> show parameter undo

 

NAME                                 TYPE        VALUE

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

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1

 

 

SQL> create table bb as select * from user_tables;

 

Table created.

 

SQL> insert into bb select * from user_tables;

 

707 rows created.

 

SQL> shutdown abort;

ORACLE instance shut down.

SQL>

 

 

SQL> ho rm   /u03/app/oracle/oradata/ora1024g/undotbs01.dbf

 

 

SQL> startup force;

ORACLE instance started.

 

Total System Global Area  448790528 bytes

Fixed Size                  2084616 bytes

Variable Size             130023672 bytes

Database Buffers          310378496 bytes

Redo Buffers                6303744 bytes

Database mounted.

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

ORA-01110: data file 2: '/u03/app/oracle/oradata/ora1024g/undotbs01.dbf'

 

 

SQL> alter system set undo_tablespace=undotbs2 scope=spfile;

 

System altered.

 

SQL> alter system set undo_management=manual scope=spfile;

 

System altered.

 

SQL> startup force mount;

ORACLE instance started.

 

Total System Global Area  448790528 bytes

Fixed Size                  2084616 bytes

Variable Size             130023672 bytes

Database Buffers          310378496 bytes

Redo Buffers                6303744 bytes

Database mounted.

 

SQL> set line 9999

SQL> col name format a100

SQL> select name,status,enabled from v$datafile;

 

NAME                                                                                                 STATUS  ENABLED

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

/u03/app/oracle/oradata/ora1024g/system01.dbf                                                        SYSTEM  READ WRITE

/u03/app/oracle/oradata/ora1024g/undotbs01.dbf                                                       ONLINE  READ WRITE

/u03/app/oracle/oradata/ora1024g/sysaux01.dbf                                                        ONLINE  READ WRITE

/u03/app/oracle/oradata/ora1024g/users01.dbf                                                         ONLINE  READ WRITE

/u03/app/oracle/oradata/ora1024g/example01.dbf                                                       ONLINE  READ WRITE

/u03/app/oracle/oradata/ora1024g/undotbs02.dbf                                                       ONLINE  READ WRITE

 

6 rows selected.

 

SQL>

SQL> alter database datafile 2 offline;

 

Database altered.

 

---注意这里undo的状态为recover

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

 

     FILE# NAME                                                                                                 STATUS  ENABLED

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

         1 /u03/app/oracle/oradata/ora1024g/system01.dbf                                                        SYSTEM  READ WRITE

         2 /u03/app/oracle/oradata/ora1024g/undotbs01.dbf                                                       RECOVER READ WRITE

         3 /u03/app/oracle/oradata/ora1024g/sysaux01.dbf                                                        ONLINE  READ WRITE

         4 /u03/app/oracle/oradata/ora1024g/users01.dbf                                                         ONLINE  READ WRITE

         5 /u03/app/oracle/oradata/ora1024g/example01.dbf                                                       ONLINE  READ WRITE

         6 /u03/app/oracle/oradata/ora1024g/undotbs02.dbf                                                       ONLINE  READ WRITE

 

6 rows selected.

 

 

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

 

 

SQL>

 

 

 

此时查看altert日志:

Thu Mar 12 18:16:17 2015

alter database open

Thu Mar 12 18:16:17 2015

Beginning crash recovery of 1 threads

parallel recovery started with 2 processes

Thu Mar 12 18:16:17 2015

Started redo scan

Thu Mar 12 18:16:17 2015

Completed redo scan

123 redo blocks read, 23 data blocks need recovery

Thu Mar 12 18:16:17 2015

Started redo application at

Thread 1: logseq 3, block 99

Thu Mar 12 18:16:17 2015

Recovery of Online Redo Log: Thread 1 Group 3 Seq 3 Reading mem 0

  Mem# 0: /u03/app/oracle/oradata/ora1024g/redo03.log

Thu Mar 12 18:16:17 2015

Completed redo application

Thu Mar 12 18:16:18 2015

Completed crash recovery at

Thread 1: logseq 3, block 222, scn 734292

23 data blocks read, 23 data blocks written, 123 redo blocks read

Thu Mar 12 18:16:18 2015

LGWR: STARTING ARCH PROCESSES

ARC0 started with pid=18, OS id=33684

Thu Mar 12 18:16:18 2015

ARC0: Archival started

ARC1: Archival started

LGWR: STARTING ARCH PROCESSES COMPLETE

ARC1 started with pid=19, OS id=33686

Thu Mar 12 18:16:18 2015

Thread 1 advanced to log sequence 4 (thread open)

Thread 1 opened at log sequence 4

  Current log# 1 seq# 4 mem# 0: /u03/app/oracle/oradata/ora1024g/redo01.log

Successful open of redo thread 1

Thu Mar 12 18:16:18 2015

MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set

Thu Mar 12 18:16:18 2015

ARC0: Becoming the 'no FAL' ARCH

ARC0: Becoming the 'no SRL' ARCH

Thu Mar 12 18:16:18 2015

SMON: enabling cache recovery

Thu Mar 12 18:16:18 2015

ARC1: Becoming the heartbeat ARCH

Thu Mar 12 18:16:18 2015

db_recovery_file_dest_size of 2048 MB is 29.58% used. This is a

user-specified limit on the amount of space that will be used by this

database for recovery-related files, and does not reflect the amount of

space available in the underlying filesystem or ASM diskgroup.

Thu Mar 12 18:16:18 2015

Errors in file /u03/app/oracle/admin/ora1024g/udump/ora1024g_ora_33662.trc:

ORA-00376: file 2 cannot be read at this time

ORA-01110: data file 2: '/u03/app/oracle/oradata/ora1024g/undotbs01.dbf'

Thu Mar 12 18:16:18 2015

Error 376 happened during db open, shutting down database

USER: terminating instance due to error 376

Instance terminated by USER, pid = 33662

ORA-1092 signalled during: alter database open...

 

查看文件: /u03/app/oracle/admin/ora1024g/udump/ora1024g_ora_33662.trc

[root@rhel6_lhr ~]# more /u03/app/oracle/admin/ora1024g/udump/ora1024g_ora_33662.trc

/u03/app/oracle/admin/ora1024g/udump/ora1024g_ora_33662.trc

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

ORACLE_HOME = /u03/app/oracle/product/10.2.0/db_1

System name:    Linux

Node name:      rhel6_lhr

Release:        2.6.32-431.el6.x86_64

Version:        #1 SMP Sun Nov 10 22:19:54 EST 2013

Machine:        x86_64

Instance name: ora1024g

Redo thread mounted by this instance: 1

Oracle process number: 15

Unix process pid: 33662, image: oracle@rhel6_lhr (TNS V1-V3)

 

*** 2015-03-12 18:16:17.849

*** ACTION NAME:() 2015-03-12 18:16:17.849

*** MODULE NAME:(sqlplus@rhel6_lhr (TNS V1-V3)) 2015-03-12 18:16:17.849

*** SERVICE NAME:() 2015-03-12 18:16:17.849

*** SESSION ID:(159.3) 2015-03-12 18:16:17.849

Successfully allocated 2 recovery slaves

Using 550 overflow buffers per recovery slave

Thread 1 checkpoint: logseq 3, block 2, scn 713814

  cache-low rba: logseq 3, block 99

    on-disk rba: logseq 3, block 222, scn 714292

  start recovery at logseq 3, block 99, scn 0

----- Redo read statistics for thread 1 -----

Read rate (ASYNC): 61Kb in 0.12s => 0.50 Mb/sec

Total physical reads: 4096Kb

Longest record: 1Kb, moves: 0/284 (0%)

Change moves: 4/47 (8%), moved: 0Mb

Longest LWN: 38Kb, moves: 0/21 (0%), moved: 0Mb

Last redo scn: 0x0000.000ae633 (714291)

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

----- Recovery Hash Table Statistics ---------

Hash table buckets = 32768

Longest hash chain = 1

Average hash chain = 23/23 = 1.0

Max compares per lookup = 1

Avg compares per lookup = 176/225 = 0.8

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

*** 2015-03-12 18:16:17.970

KCRA: start recovery claims for 23 data blocks

*** 2015-03-12 18:16:17.999

KCRA: blocks processed = 23/23, claimed = 23, eliminated = 0

*** 2015-03-12 18:16:17.999

Recovery of Online Redo Log: Thread 1 Group 3 Seq 3 Reading mem 0

----- Recovery Hash Table Statistics ---------

Hash table buckets = 32768

Longest hash chain = 1

Average hash chain = 23/23 = 1.0

Max compares per lookup = 1

Avg compares per lookup = 191/199 = 1.0

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

tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x1)

tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x1)

ORA-00376: file 2 cannot be read at this time

ORA-01110: data file 2: '/u03/app/oracle/oradata/ora1024g/undotbs01.dbf'

[root@rhel6_lhr ~]#

 

 

必须读取2号文件才能保证一致性,此时使用隐含参数:

 

[oracle@rhel6_lhr ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Mar 12 18:22:58 2015

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

Connected to an idle instance.

 

SQL> startup mount;

ORACLE instance started.

 

Total System Global Area  448790528 bytes

Fixed Size                  2084616 bytes

Variable Size             130023672 bytes

Database Buffers          310378496 bytes

Redo Buffers                6303744 bytes

Database mounted.

SQL>  alter system set "_offline_rollback_segments"=true scope=spfile;

 

System altered.

 

 

SQL> startup force mount;

ORACLE instance started.

 

Total System Global Area  448790528 bytes

Fixed Size                  2084616 bytes

Variable Size             130023672 bytes

Database Buffers          310378496 bytes

Redo Buffers                6303744 bytes

Database mounted.

SQL> alter database open;

 

alter database open

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

 

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@rhel6_lhr dbs]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Mar 12 20:36:56 2015

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

Connected to an idle instance.

 

SQL> startup mount;

ORACLE instance started.

 

Total System Global Area  448790528 bytes

Fixed Size                  2084616 bytes

Variable Size             130023672 bytes

Database Buffers          310378496 bytes

Redo Buffers                6303744 bytes

Database mounted.

 

SQL> alter system set "_corrupted_rollback_segments"='_SYSSMU1$','_SYSSMU2$','_SYSSMU3$','_SYSSMU4$','_SYSSMU5$','_SYSSMU6$','_SYSSMU7$','_SYSSMU8$','_SYSSMU9$','_SYSSMU10$' scope=spfile;

 

System altered.

 

SQL> alter database open;

 

SQL> set line 9999

SQL> col name format a100

SQL> select name,status,enabled from v$datafile;

 

NAME                                                                                                 STATUS  ENABLED

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

/u03/app/oracle/oradata/ora1024g/system01.dbf                                                        SYSTEM  READ WRITE

/u03/app/oracle/oradata/ora1024g/undotbs01.dbf                                                       OFFLINE READ WRITE

/u03/app/oracle/oradata/ora1024g/sysaux01.dbf                                                        ONLINE  READ WRITE

/u03/app/oracle/oradata/ora1024g/users01.dbf                                                         ONLINE  READ WRITE

/u03/app/oracle/oradata/ora1024g/example01.dbf                                                       ONLINE  READ WRITE

/u03/app/oracle/oradata/ora1024g/undotbs02.dbf                                                       ONLINE  READ WRITE

 

6 rows selected.

 

SQL> select segment_name,status,tablespace_name from dba_rollback_segs;

 

SEGMENT_NAME                   STATUS           TABLESPACE_NAME

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

SYSTEM                         ONLINE           SYSTEM

_SYSSMU10$                     OFFLINE          UNDOTBS1

_SYSSMU9$                      OFFLINE          UNDOTBS1

_SYSSMU8$                      OFFLINE          UNDOTBS1

_SYSSMU7$                      OFFLINE          UNDOTBS1

_SYSSMU6$                      OFFLINE          UNDOTBS1

_SYSSMU5$                      OFFLINE          UNDOTBS1

_SYSSMU4$                      OFFLINE          UNDOTBS1

_SYSSMU3$                      OFFLINE          UNDOTBS1

_SYSSMU2$                      OFFLINE          UNDOTBS1

_SYSSMU1$                      OFFLINE          UNDOTBS1

_SYSSMU20$                     OFFLINE          UNDOTBS2

_SYSSMU19$                     OFFLINE          UNDOTBS2

_SYSSMU18$                     OFFLINE          UNDOTBS2

_SYSSMU17$                     OFFLINE          UNDOTBS2

_SYSSMU16$                     OFFLINE          UNDOTBS2

_SYSSMU15$                     OFFLINE          UNDOTBS2

_SYSSMU14$                     OFFLINE          UNDOTBS2

_SYSSMU13$                     OFFLINE          UNDOTBS2

_SYSSMU12$                     OFFLINE          UNDOTBS2

_SYSSMU11$                     OFFLINE          UNDOTBS2

 

21 rows selected.

 

SQL> create undo tablespace undotbs1 datafile '/u03/app/oracle/oradata/ora1024g/undotbs01.dbf' size 50m autoextend on;

 

Tablespace created.

 

SQL> alter system set undo_tablespace=UNDOTBS1  scope=spfile;

 

System altered.

 

SQL> alter system set undo_management=auto  scope=spfile;

 

System altered.

 

SQL> alter system reset "_offline_rollback_segments" scope=spfile sid='*';

 

System altered.

 

SQL> alter system reset "_corrupted_rollback_segments" scope=spfile sid='*';

 

System altered.

 

SQL>

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

 

Total System Global Area  448790528 bytes

Fixed Size                  2084616 bytes

Variable Size             130023672 bytes

Database Buffers          310378496 bytes

Redo Buffers                6303744 bytes

Database mounted.

Database opened.

SQL> show parameter undo

 

NAME                                 TYPE        VALUE

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

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1

SQL>

 

 

 

时间: 2024-08-31 01:29:14

undo表空间文件丢失恢复(3)--无备份无redo的情况下恢复的相关文章

undo表空间文件丢失恢复(2)--无备份有redo的情况下恢复

undo表空间的数据文件丢失,如果没有备份的情况下,但是redo完好,这个时候可以这样恢复,下边给出一个例子.   undo表空间文件丢失恢复(1)--有备份的情况下恢复:http://blog.itpub.net/26736162/viewspace-1458654/   [oracle@rhel6_lhr ~]$ sqlplus / as sysdba   SQL*Plus: Release 10.2.0.4.0 - Production on Thu Mar 12 18:13:13 201

undo表空间文件丢失恢复(4)--无备份无recover的情况下恢复

  undo表空间的数据文件丢失,如果没有备份的情况下,而且丢失的undo文件可以置为offline状态后(注意是offline不是recover状态),则可以如下恢复,下边给出一个例子.   undo表空间文件丢失恢复(1)--有备份的情况下恢复:http://blog.itpub.net/26736162/viewspace-1458654/ undo表空间文件丢失恢复(2)--无备份有redo的情况下恢复:http://blog.itpub.net/26736162/viewspace-1

undo表空间文件丢失恢复(1)--有备份

  undo表空间的数据文件丢失,如果有备份的情况下,恢复非常简单,下边给出一个例子:       [oracle@rhel6_lhr ~]$ sqlplus / as sysdba   SQL*Plus: Release 10.2.0.4.0 - Production on Thu Mar 12 18:02:13 2015   Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.     Connected to: Oracle Dat

监控和管理Oracle UNDO表空间的使用

    对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DML操作的前镜像数据,它是实例恢复,数据回滚,一致性查询功能的重要组件:我们常常会忽略对它的监控,这会导致UNDO表空间可能出现以下问题:1).空间使用率100%,导致DML操作无法进行.2).告警日志中出现大量的ORA-01555告警错误.3).实例恢复失败,数据库无法正常打开. 一.对Or

UNDO表空间丢失/损坏测试

1.模拟丢失了undo表空间数据文件,SHUTDOWN ABORT,进行启动报错找不到数据文件 2.设置UNDO datafile offline后启动数据如下 SQL> alter database datafile 2 offline; 接下来试试能不能打开数据库,能打开就查看那些回退段 SQL> startup ORACLE instance started. Total System Global Area  599785472 bytes Fixed Size            

Oracle管理UNDO表空间

创建undo talespace有两种方式: (1)数据库创建时创建undo tablespace; (2)在一个已经存在的数据库创建. 在undo tablespace中不能创建数据库对象,这是因为这个表空间是为数据库recover而准备的. 1.创建数据库时创建undo tablespace 在创建数据库的时候可以通过指定undo子句来创建undo tablespace,但是这个子句不是必须的. 如果在创建数据库时,系统指定是auto模式,但是没有指明undo tablespace的名字,那

关于undo表空间配置错误的ORA-30012

      undo表空间是Oracle体系结构的重要组成部分,为什么我们可以回滚,就是因为有它.数据库任意数据的修改都会在undo表空间里生成前镜像,一是可以回滚,二是可以实现并发,以及一致性查询.因此undo也是Oracle数据库在创建和配置参数时必要的组成部分.本文描述的是错误的配置undo表空间之后故障的解决.       有关undo表空间的基础知识可以参考:             Oracle 回滚(ROLLBACK)和撤销(UNDO)            检查及设置合理的und

收缩undo表空间

      通常情况下,如果undo表空间的处于自动扩展且未指定最大值的情形,对于使用小表空间模式的数据库,undo表空间可能会一再增长,直到达到32GB.或者是在指定了自动扩展及其最大值而月底或年末的批量数据计算导致undo表空间疯狂超范围增长后不再释放.对于这些情形我们需要手动收缩表空间以达到节省空间资源以及数据库管理开销,如rman备份等.本文列出了收缩undo表空间的基本步骤并给出示例.      有关表空间,undo表空间的文章可参考:           Oracle 表空间与数据文

检查及设置合理的undo表空间

      UNDO是用于实现并发控制以及构建一致性读,也就是在数据变更之前产生前镜像,以保证用户能够回滚或撤销对数据库所作的修改.是Oracle数据库完整性的重要组成部分.因此合理的设计及配置undo以及使用undo都将对数据库有较大的影响.通常情况下,对于大规模数据的删除,更新操作,我们建议使用分批删除分次提交以减少对undo的占用和冲击.那么对于undo的大小到底应该设置多大?是启用自动扩展还是关闭自动扩展?这个问题仁者见仁,智者见智,见下文.   1.当前数据库环境及undo配置信息 s