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

发表于:2007-06-22来源:作者:点击数: 标签:
下一页 1 2 3 4 ###################################################################################### # [9].回滚段恢复 # ###################################################################################### 参见1013221.6 28812.1 #########

下一页 1 2 3 4 

   

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

#                                [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,但是只是需要做一个检查点,
将数据写到数据文件中,但这部分数据直接
在在线日志中可以拿到了,只需要前滚,
不需要进行回滚
~~~~~~~~~~~~~~~~~~~~~~

原文转自:http://www.ltesting.net