王朝网络
分享
 
 
 

数据库备份与恢复测试(8)

王朝other·作者佚名  2008-05-31
宽屏版  字体: |||超大  

######################################################################################

# [9].回滚段恢复 #

######################################################################################

参见1013221.6

28812.1

################################

# [9.1].正常shutdown,回滚数据文件丢失,

# 有备份,回滚段恢复

################################

SQL> startup

Oracle 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

SQL> archive log list

数据库日志模式 存档模式

自动存档 启用

存档终点 C:\oracle\oradata\testdb\archive

最早的概要日志序列 1

下一个存档日志序列 3

当前日志序列 3

SQL> select us#, name, status$ from undo$;

US# NAME STATUS$

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

0 SYSTEM 3

1 _SYSSMU1$ 3

2 _SYSSMU2$ 3

3 _SYSSMU3$ 3

4 _SYSSMU4$ 3

5 _SYSSMU5$ 3

6 _SYSSMU6$ 3

7 _SYSSMU7$ 3

8 _SYSSMU8$ 3

9 _SYSSMU9$ 3

10 _SYSSMU10$ 3

已选择11行。

SQL> select SEGMENT_NAME,STATUS from dba_rollback_segs;

SEGMENT_NAME STATUS

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

SYSTEM ONLINE

_SYSSMU1$ ONLINE

_SYSSMU2$ ONLINE

_SYSSMU3$ ONLINE

_SYSSMU4$ ONLINE

_SYSSMU5$ ONLINE

_SYSSMU6$ ONLINE

_SYSSMU7$ ONLINE

_SYSSMU8$ ONLINE

_SYSSMU9$ ONLINE

_SYSSMU10$ ONLINE

已选择11行。

RMAN> backup format 'c:\noarch_%s%p1.bak' database;

启动 backup 于 03-3月 -05

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在启动 full 数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

在备份集中包含当前的 SPFILE

备份集中包括当前控制文件

输入数据文件 fno=00001 name=C:\ORACLE\ORADATA\TESTDB\SYSTEM01.DBF

输入数据文件 fno=00002 name=C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF

输入数据文件 fno=00003 name=C:\ORACLE\ORADATA\TESTDB\INDX01.DBF

输入数据文件 fno=00005 name=C:\ORACLE\ORADATA\TESTDB\USERS01.DBF

输入数据文件 fno=00004 name=C:\ORACLE\ORADATA\TESTDB\TOOLS01.DBF

通道 ORA_DISK_1: 正在启动段 1 于 03-3月 -05

通道 ORA_DISK_1: 已完成段 1 于 03-3月 -05

段 handle=C:\NOARCH_211.BAK comment=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:27

完成 backup 于 03-3月 -05

RMAN>

RMAN>

RMAN> copy current controlfile to 'c:\currcont.ctl';

启动 copy 于 03-3月 -05

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 已复制当前的控制文件

输出文件名=C:\CURRCONT.CTL

完成 copy 于 03-3月 -05

RMAN> exit

恢复治理器完成。

SQL> create table arch (status varchar(2)) tablespace users;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建6166行。

SQL> /

已创建12332行。

SQL> /

已创建24664行。

SQL> /

已创建49328行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'no' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;

GROUP# SEQUENCE# ARC STATUS

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

1 5 NO CURRENT

2 3 YES ACTIVE

3 4 NO ACTIVE

SQL> shutdown -->>这里是正常shutdown,所以会做检查点,当前的数据文件不需要恢复状态

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

~~~~~~~~~~~~~~~~~~~~~~~~

模拟删除UNDOTBS01.DBF

这时其他文件都是一致性的,

只需要UNDOTBS01.DBF恢复

~~~~~~~~~~~~~~~~~~~~~~~~

删除UNDOTBS01.DBF

还原一个UNDOTBS01.DBF的备份

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

ORA-01113: 文件 2 需要介质恢复

ORA-01110: 数据文件 2: 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF'

SQL> recover database ;

完成介质恢复。

SQL> alter database open;

数据库已更改。

SQL> select count(*),status from arch group by status;

COUNT(*) ST

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

6166 no

98656 ok

################################

# [9.2].shutdown abort(或者使用了别的老的数据文件),

# 回滚数据文件丢失,有备份,回滚段恢复 ,

# 数据库没有活动事务

################################

略:

也能完全恢复

~~~~~~~~~~~~~~~~~~~~~~

虽然是abort,但是只是需要做一个检查点,

将数据写到数据文件中,但这部分数据直接

在在线日志中可以拿到了,只需要前滚,

不需要进行回滚

~~~~~~~~~~~~~~~~~~~~~~

################################

# [9.3].shutdown abort(或者使用了别的老的数据文件),

# 回滚数据文件丢失,有备份,回滚段恢复 ,

# 数据库有活动事务

################################

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

SQL> archive log list

数据库日志模式 存档模式

自动存档 启用

存档终点 C:\oracle\oradata\testdb\archive

最早的概要日志序列 1

下一个存档日志序列 3

当前日志序列 3

RMAN> backup format 'c:\noarch_%s%p1.bak' database;

启动 backup 于 03-3月 -05

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在启动 full 数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

在备份集中包含当前的 SPFILE

备份集中包括当前控制文件

输入数据文件 fno=00001 name=C:\ORACLE\ORADATA\TESTDB\SYSTEM01.DBF

输入数据文件 fno=00002 name=C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF

输入数据文件 fno=00003 name=C:\ORACLE\ORADATA\TESTDB\INDX01.DBF

输入数据文件 fno=00005 name=C:\ORACLE\ORADATA\TESTDB\USERS01.DBF

输入数据文件 fno=00004 name=C:\ORACLE\ORADATA\TESTDB\TOOLS01.DBF

通道 ORA_DISK_1: 正在启动段 1 于 03-3月 -05

通道 ORA_DISK_1: 已完成段 1 于 03-3月 -05

段 handle=C:\NOARCH_211.BAK comment=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:27

完成 backup 于 03-3月 -05

RMAN>

RMAN>

RMAN> copy current controlfile to 'c:\currcont.ctl';

启动 copy 于 03-3月 -05

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 已复制当前的控制文件

输出文件名=C:\CURRCONT.CTL

完成 copy 于 03-3月 -05

RMAN> exit

恢复治理器完成。

SQL> create table arch (status varchar(2)) tablespace users;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建6166行。

SQL> /

已创建12332行。

SQL> /

已创建24664行。

SQL> /

已创建49328行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'no' from dba_objects; --这里没有commit

已创建6166行。

提交完成。

SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;

GROUP# SEQUENCE# ARC STATUS

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

1 5 NO CURRENT

2 3 YES ACTIVE

3 4 NO ACTIVE

SQL> shutdown abort-->>这里是正常shutdown,所以会做检查点,当前的数据文件不需要恢复状态

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

~~~~~~~~~~~~~~~~~~~~~~~~

模拟删除UNDOTBS01.DBF

这时其他文件都是一致性的,

只需要UNDOTBS01.DBF恢复

~~~~~~~~~~~~~~~~~~~~~~~~

删除UNDOTBS01.DBF

还原一个UNDOTBS01.DBF的备份

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

ORA-01113: 文件 2 需要介质恢复

ORA-01110: 数据文件 2: 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF'

SQL> recover database ;

完成介质恢复。

SQL> alter database open;

数据库已更改。

SQL> select count(*),status from arch group by status;

COUNT(*) ST

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

98656 ok

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

8i假如有活动的事务,那么恢复回滚表空间时,

在前滚后后滚时要读自己回滚段里的数据,

而自己的数据文件已经损坏了,所以就不答应的,

所以在mount前将初始化参数

rollback_segments=(system)

_corrupted_rollback_segments=(rbs0,rbs1,rbs2……)

而9I,测试中回撤表空间数据文件恢复跟常规表空间恢复一样

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

################################

# [9.4].shutdown abort(或者使用了别的老的数据文件),

# 回滚数据文件丢失,没有备份,回滚段恢复 ,

# 数据库有活动事务

################################

SQL> create table arch (status varchar(2)) tablespace users;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建6166行。

SQL> /

已创建12332行。

SQL> /

已创建24664行。

SQL> /

已创建49328行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'no' from dba_objects;

已创建6166行。

SQL> shutdown abort

ORACLE 例程已经关闭。

SQL>

丢失undo文件

SQL> startup mount;

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

SQL> alter database datafile 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF' offline;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select US#,NAME,ts#,STATUS$,FLAGS from undo$ where STATUS$ <> 3;

US# NAME TS# STATUS$ FLAGS

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

1 _SYSSMU1$ 1 2

2 _SYSSMU2$ 1 2

3 _SYSSMU3$ 1 2

4 _SYSSMU4$ 1 2

5 _SYSSMU5$ 1 2

6 _SYSSMU6$ 1 2

7 _SYSSMU7$ 1 2

8 _SYSSMU8$ 1 2

9 _SYSSMU9$ 1 2

10 _SYSSMU10$ 1 2

11 _SYSSMU11$ 1 5

SQL> select count(*) from arch; --这里表是不能读取一致性了

select count(*) from arch

*

ERROR 位于第 1 行:

ORA-00376: ???????? 2

ORA-01110: ???? 2: 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF'

SQL> shutdown

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL>

编辑INITtestdb_undo.ORA'

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS1'

_allow_resetlogs_corruption=true

_corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$,_SYSSMU11$)

_offline_rollback_segments=true

SQL> startup pfile='C:\oracle\ora92\database\INITtestdb_undo.ORA';

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

SQL> alter database open;

数据库已更改。

SQL> select count(*) from arch;

COUNT(*)

----------

104822

再创建新的undo表空间

drop 坏的undo tablespace

最好做一个整库的导出,并导入到新系统

################################

# [9.5].shutdown abort(或者使用了别的老的数据文件),

# 回滚数据文件丢失,没有备份,但控制文件有创建

# 该回撤段数据文件的所有历史日志,回滚段恢复 ,

# 数据库有活动事务

################################

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

SQL> show parameter undo

NAME TYPE VALUE

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

undo_management string AUTO

undo_retention integer 10800

undo_suppress_errors boolean FALSE

undo_tablespace string UNDOTBS1

SQL> alter tablespace UNDOTBS1 add datafile 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS02

DBF' size 1m;

表空间已更改。

SQL>

SQL>

SQL> create table arch (status varchar(2)) tablespace users;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建6166行。

SQL> /

已创建12332行。

SQL> /

已创建24664行。

SQL> /

已创建49328行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'no' from dba_objects;

已创建6166行。

SQL> SHUTDOWN ABORT

ORACLE 例程已经关闭。

删除UNDOTBS02

SQL> STARTUP

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件

ORA-01110: 数据文件 6: 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS02.DBF'

SQL> ALTER DATABASE CREATE DATAFILE 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS02.DBF';

数据库已更改。

SQL> RECOVER DATABASE;

完成介质恢复。

SQL> ALTER DATABASE OPEN;

数据库已更改。

SQL> COL NAME FORMAT A50;

SQL> SELECT NAME,STATUS FROM V$DATAFILE;

NAME STATUS

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

C:\ORACLE\ORADATA\TESTDB\SYSTEM01.DBF SYSTEM

C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF ONLINE

C:\ORACLE\ORADATA\TESTDB\INDX01.DBF ONLINE

C:\ORACLE\ORADATA\TESTDB\TOOLS01.DBF ONLINE

C:\ORACLE\ORADATA\TESTDB\USERS01.DBF ONLINE

C:\ORACLE\ORADATA\TESTDB\UNDOTBS02.DBF ONLINE

已选择6行。

################################

# [9.6].数据库打开时回撤表空间文件

# 损坏,没有备份

################################

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

SQL> create table arch (status varchar(2)) tablespace users;

表已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'ok' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> insert into arch select * from arch;

已创建6166行。

SQL> /

已创建12332行。

SQL> /

已创建24664行。

SQL> /

已创建49328行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into arch select 'no' from dba_objects;

已创建6166行。

SQL> commit;

提交完成。

SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;

GROUP# SEQUENCE# ARC STATUS

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

1 5 NO CURRENT

2 3 YES INACTIVE

3 4 YES ACTIVE

SQL>

SQL>

SQL>

SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;

GROUP# SEQUENCE# ARC STATUS

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

1 5 NO CURRENT

2 3 YES INACTIVE

3 4 YES ACTIVE

SQL> select us#, name, status$ from undo$;

US# NAME STATUS$

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

0 SYSTEM 3

1 _SYSSMU1$ 3

2 _SYSSMU2$ 3

3 _SYSSMU3$ 3

4 _SYSSMU4$ 3

5 _SYSSMU5$ 3

6 _SYSSMU6$ 3

7 _SYSSMU7$ 3

8 _SYSSMU8$ 3

9 _SYSSMU9$ 3

10 _SYSSMU10$ 3

已选择11行。

SQL> select SEGMENT_NAME,STATUS from dba_rollback_segs;

SEGMENT_NAME STATUS

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

SYSTEM ONLINE

_SYSSMU1$ ONLINE

_SYSSMU2$ ONLINE

_SYSSMU3$ ONLINE

_SYSSMU4$ ONLINE

_SYSSMU5$ ONLINE

_SYSSMU6$ ONLINE

_SYSSMU7$ ONLINE

_SYSSMU8$ ONLINE

_SYSSMU9$ ONLINE

_SYSSMU10$ ONLINE

已选择11行。

SQL> show parameter undo

NAME TYPE VALUE

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

undo_management string AUTO

undo_retention integer 10800

undo_suppress_errors boolean FALSE

undo_tablespace string UNDOTBS1

~~~~~~~~~~~~~~~~~~~~~

这里模拟回撤数据文件损坏

~~~~~~~~~~~~~~~~~~~~~

用ultraedit破坏UNDOTBS01.DBF

SQL> shutdown --因为要使用回滚,但回滚失败

ORA-00603: ORACLE 服务器会话因致命错误而终止

SQL> startup

ORA-24324: 未初始化服务句柄

ORA-01041: 内部错误,hostdef 扩展名不存在

SQL> exit

从Oracle9i Enterprise Edition Release 9.2.0.1.0 - ProdUCtion

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production中断开

C:\Documents and Settings\lifeng.fang>sqlplus "sys/sunsdl as sysdba"

SQL*Plus: Release 9.2.0.1.0 - Production on 星期五 3月 4 14:18:35 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

已连接。

SQL> startup

ORA-01081: cannot start already-running ORACLE - shut it down first

SQL> shutdown

ORA-01090: shutdown in progress - connection is not permitted

SQL> shutdown abort --只有abort才可以关闭数据库,因为不需要回滚

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

SQL> select SEGMENT_NAME,STATUS from dba_rollback_segs;

SEGMENT_NAME STATUS

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

SYSTEM ONLINE

_SYSSMU1$ NEEDS RECOVERY

_SYSSMU2$ NEEDS RECOVERY

_SYSSMU3$ NEEDS RECOVERY

_SYSSMU4$ NEEDS RECOVERY

_SYSSMU5$ NEEDS RECOVERY

_SYSSMU6$ NEEDS RECOVERY

_SYSSMU7$ NEEDS RECOVERY

_SYSSMU8$ NEEDS RECOVERY

_SYSSMU9$ NEEDS RECOVERY

_SYSSMU10$ NEEDS RECOVERY

SQL> select us#, name, status$ from undo$;

US# NAME STATUS$

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

0 SYSTEM 3

1 _SYSSMU1$ 5

2 _SYSSMU2$ 5

3 _SYSSMU3$ 5

4 _SYSSMU4$ 5

5 _SYSSMU5$ 5

6 _SYSSMU6$ 5

7 _SYSSMU7$ 5

8 _SYSSMU8$ 5

9 _SYSSMU9$ 5

10 _SYSSMU10$ 5

已选择11行。

~~~~~~~~~~~~~~~~~~~~~

这里我们注重能够打开数据库

但是这里状态是需要恢复

~~~~~~~~~~~~~~~~~~~~~~

SQL> create pfile='c:\undopfile.ora' from spfile;

文件已创建。

SQL> create undo tablespace UNDOTBS2 datafile 'C:\oracle\oradata\testdb\UNDOTB2.DBF' size 50m;

表空间已创建。

SQL> select count(*),status from arch group by status;

COUNT(*) ST

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

6166 no

98656 ok

SQL> insert into arch select 'af' from dba_objects;

insert into arch select 'af' from dba_objects

*

ERROR 位于第 1 行:

ORA-01552: 非系统表空间'USERS'无法使用系统回退段

SQL> shutdown

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

编辑c:\undopfile.ora,

将设置*.undo_tablespace='UNDOTBS2'

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL> startup pfile='c:\undopfile.ora'

ORACLE 例程已经启动。

Total System Global Area 101784276 bytes

Fixed Size 453332 bytes

Variable Size 75497472 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

SQL> insert into arch select 'af' from dba_objects;

已创建6166行。

SQL> select

2 trunc(id1/power(2,16)) rbs,

3 bitand(id1,to_number('ffff','xxxx'))+0 slot,

4 id2 seq,

5 lmode,request

6 from v$lock,v$session

7 where v$lock.type = 'TX'

8 and v$lock.sid = v$session.sid

9 and v$session.username is not null;

RBS SLOT SEQ LMODE REQUEST

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

17 0 2 6 0

SQL> select SEGMENT_NAME,TABLESPACE_NAME,STATUS from dba_rollback_segs;

SEGMENT_NAME TABLESPACE_NAME STATUS

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

SYSTEM SYSTEM ONLINE

_SYSSMU1$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU2$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU3$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU4$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU5$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU6$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU7$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU8$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU9$ UNDOTBS1 NEEDS RECOVERY

_SYSSMU10$ UNDOTBS1 NEEDS RECOVERY

SEGMENT_NAME TABLESPACE_NAME STATUS

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

_SYSSMU11$ UNDOTBS2 ONLINE

_SYSSMU12$ UNDOTBS2 ONLINE

_SYSSMU13$ UNDOTBS2 ONLINE

_SYSSMU14$ UNDOTBS2 ONLINE

_SYSSMU15$ UNDOTBS2 ONLINE

_SYSSMU16$ UNDOTBS2 ONLINE

_SYSSMU17$ UNDOTBS2 ONLINE

_SYSSMU18$ UNDOTBS2 ONLINE

_SYSSMU19$ UNDOTBS2 ONLINE

_SYSSMU20$ UNDOTBS2 ONLINE

SQL> select US#,NAME,ts#,STATUS$,FLAGS from undo$;

US# NAME TS# STATUS$ FLAGS

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

0 SYSTEM 0 3

1 _SYSSMU1$ 1 5

2 _SYSSMU2$ 1 5

3 _SYSSMU3$ 1 5

4 _SYSSMU4$ 1 5

5 _SYSSMU5$ 1 5

6 _SYSSMU6$ 1 5

7 _SYSSMU7$ 1 5

8 _SYSSMU8$ 1 5

9 _SYSSMU9$ 1 5

10 _SYSSMU10$ 1 5

US# NAME TS# STATUS$ FLAGS

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

11 _SYSSMU11$ 6 3

12 _SYSSMU12$ 6 3

13 _SYSSMU13$ 6 3

14 _SYSSMU14$ 6 3

15 _SYSSMU15$ 6 3

16 _SYSSMU16$ 6 3

17 _SYSSMU17$ 6 3 --插入数据的回滚信息在这

18 _SYSSMU18$ 6 3

19 _SYSSMU19$ 6 3

20 _SYSSMU20$ 6 3

已选择21行。

这些非online的回撤段也需要在初始化参数中强制_corrupted_rollback_segments

且_offline_rollback_segments=true

这里跟9.4一样,设置初始化文件

编辑INITtestdb_undo.ORA'

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS1'

_allow_resetlogs_corruption=true

_corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$,_SYSSMU11$)

_offline_rollback_segments=true

然后打开数据库

看看TOM的例子

sys@ORA920.US.ORACLE.COM> shutdown

Database closed.

Database dismounted.

ORACLE instance shut down.

sys@ORA920.US.ORACLE.COM> exit

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production

[ora920@tkyte-pc-isdn ora920]$ ls

control01.ctl cwmlite01.dbf indx01.dbf redo02.log redo0B.log temp01.dbf

users01.dbf

control02.ctl drsys01.dbf odm01.dbf redo03.log redo0C.log tools01.dbf

xdb01.dbf

control03.ctl example01.dbf redo01.log redo0A.log system01.dbf

undotbs01.dbf

[ora920@tkyte-pc-isdn ora920]$ mv undotbs01.dbf undotbs01.dbf.xxx

[ora920@tkyte-pc-isdn ora920]$ sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on Sat Sep 28 08:33:29 2002

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

idle> connect / as sysdba

Connected to an idle instance.

idle> startup

ORACLE instance started.

Total System Global Area 143725064 bytes

Fixed Size 451080 bytes

Variable Size 109051904 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

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

ORA-01110: data file 2:

'/usr/oracle/ora920/OraHome1/oradata/ora920/undotbs01.dbf'

idle> show parameter undo

NAME TYPE VALUE

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

undo_management string AUTO

undo_retention integer 10800

undo_suppress_errors boolean FALSE

undo_tablespace string UNDOTBS1

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

System altered.

Note: disabling the undo tablespace here, this'll let us go back to "rollback

segments" and we'll use the system RBS to get back on our feet

idle> shutdown

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

idle> exit

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production

[ora920@tkyte-pc-isdn ora920]$ !sql

sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on Sat Sep 28 08:35:34 2002

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

idle> connect / as sysdba;

Connected to an idle instance.

idle> startup

ORACLE instance started.

Total System Global Area 143725064 bytes

Fixed Size 451080 bytes

Variable Size 109051904 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

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

ORA-01110: data file 2:

'/usr/oracle/ora920/OraHome1/oradata/ora920/undotbs01.dbf'

Note: we still have to get rid of that thing..

idle> alter database datafile

'/usr/oracle/ora920/OraHome1/oradata/ora920/undotbs01.dbf'

2 offline drop;

Database altered.

idle> alter database open;

Database altered.

idle> drop tablespace undotbs1;

Tablespace dropped.

idle> create UNDO tablespace undotbs1

2 datafile '/usr/oracle/ora920/OraHome1/oradata/ora920/undotbs01.dbf' size

25m

3 autoextend on next 1m maxsize 1024m;

Tablespace created.

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

System altered.

Now, we've put the undo tablespace "back" by creating a new one. Just

bounce...

idle> shutdown

Database closed.

Database dismounted.

ORACLE instance shut down.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有