⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 备份与恢复测试.txt

📁 oracle数据库备份与恢复的详细资料集合
💻 TXT
📖 第 1 页 / 共 5 页
字号:
=================================================================================
=                             备份与恢复测试                                    =
=================================================================================
                             
[1] 控制文件损坏(rman和常规恢复)
    [1.1] 有老的备份数据备份和控制文件trace
          [测试1] --使用trace恢复 shutdown abort
          [测试2] --使用trace恢复 正常shutdown 
          [测试3] --使用控制文件备份来恢复
          [测试4] 我们现在模拟备份控制文件,同时备份部分数据文件先于备份   
                  控制文件的数据文件  
          [测试5]我们现在模拟控制文件损坏,将备份控制文件前,先备份所有数据文件   
          [测试5.1]我们现在模拟控制文件损坏,有控制文件备份,先于控制文件备份的所有数据文件备份 
                 使用在线日志进行完全恢复                                                      
          [测试6]那我们看看,有老的数据文件备份,备份控制文件后插 
           入的数据在shutdown abort后能不能恢复
          [测试7]那我们看看,有老的数据文件备份,备份控制文件后插 
           入的数据在正常shutdown 后能不能恢复   
          [测试8]那我们看看,有老的数据文件备份,插                                   
           入的数据在正常shutdown 后用create controlfile noresetlogs 
           方法来恢复控制文件,能不能恢复     
    [1.2] 有RMAN的autobackup,catalog异常  
          [方法1]                           
          [方法2] --使用带resetlogs的创建控制文件trace
          [方法3] 使用noresetlog的trace来恢复
          [方法4] 那我们对数据库的数据文件控制文件和 
                  在线日志文件都做备份会需要恢复吗?  
          [测试5] 我们模拟在线日志损坏,使用备份控制文件,有数据文件的备份的恢复
          
    [1.3] 有RMAN的备份,catalog正常    
    [1.4] 控制文件损坏,有trace,非活动在
          线日志损坏 
          [方法1] 使用clear group or 
          [方法2] 使用trace resetlogs    
          [测试3] 数据文件损坏,控制文件损坏,有trace ,
                  使用resetlogs,非在线日志损坏       
          [测试4] 数据文件损坏,控制文件损坏,有trace ,           
                  使用noresetlogs,非在线日志损坏 ,shutdown abort
    
    [1.5] 有trace,活动在线日志损坏    
          [1.5.1] 有trace,活动在线日志损坏,正常shutdown或是当前的数据文件
          [1.5.2] 有trace,活动在线日志损坏,shutdown abort 或是非当前的数据文件  
                  ,当前在线日志文件损坏                
    
                  [测试1] shutdown abort,备份控制文件或者resetlog的trace,
                  没有数据文件备份,采用强制打开数据库的方法
                  [测试2] shutdown abort,resetlog的trace,                     
                          有数据文件备份,当前在线日志损坏,控制文件损坏,有trace
                  [测试3] shutdown abort,控制文件损坏,备份控制文件, 
                          当前在线日志损坏,有数据文件备份 
                          
          [1.5.3]  控制文件损坏,如果trace不是最新的数据库结构,如少了个数据文件
          [1.5.4] 控制文件损坏,如果trace不是最新的数据库结构,如少了个只读数据文件
                          
    [1.6] 使用备份的控制文件进行恢复
    [1.7] 数据文件损坏,且没有备份,没有备份控制文件,                      
          且其他数据文件备份中都是在该数据文件创建后                      
          的备份                                                          
          [测试1](resetlogs前创建的数据文件),数据文件丢失,没有备份,控制文件损坏,有备份控制文件,但备份控制文件后于该文件重建日期  
                  使用resetlogs打开数据库,所以没有数据文件自创建以来所有的日志,                                                  
                  因为前面的日志被截取了,(所以resetlog后必须要有备份,                                                            
                  除非是resetlogs后创建的数据文件,可以通过create datafile来恢复)                                                 
                  当然如果有resetlogs后的控制文件及相关的数据,也可以完全恢复,参见1.12                                                                  
          [测试2] 控制文件正常,数据文件丢失,数据文件丢失没有备份,                                                                    
                  也就说丢失的数据文件创建在该控制文件中的,该控制文件也没有被trace刷新,那控制文件就包含了该数据文件自创建以来的所有信息
          
          [测试3] 控制文件没有丢失,数据文件丢失,数据文件丢失没有备份
          [测试4] 控制文件丢失,数据文件丢失,没有备份,有trace,那我们看看为什么trace会造成控制文件的头中数据文件创建的信息被修改  
                  无法实现create datafile功能                                                                                           
          [测试5]控制文件没有创建数据文件的起始信息,使用不同trace的方法
          [测试6]  数据文件损坏,且没有备份,控制文件使用备份控制文件,且控制文件是在该数据文件创建后的控制文件
                          
    [1.8] 数据文件损坏,且没有备份,控制文件使用备份控制文件,且控制文件是在该数据文件创建前的控制文件
        参见1.7的测试1                                                                             
    
    [1.9]  数据文件损坏,且没有备份,控制文件使用备份控制文件,且控制文件是在该数据文件创建后的控制文件  
    [1.10] 数据文件损坏,且没有备份,没有备份控制文件,且其他数据文件备份中都是在该数据文件创建后的备份
    [1.11] 损坏单个控制文件                                      
           将好的控制文件覆盖损坏的控制文件                      
    [1.12] 当前控制文件做为备份控制文件恢复,在当前在线日志中有业务数据时的恢复    (通常没有太大意义,只是想做一下resetlogs)  
    [1.13] 在resetlogs前的RMAN备份如何应用到resetlogs后的
           [测试1] 那我们在看看resetlogs前的数据文件控制文件和在线日志都做了备份,         
                   然后resetlogs后的控制文件在线日志都做备份的情况下,是不是能越过resetlogs
           
[2]. 非归档模式下的恢复(rman和常规恢复) 
    [测试1] 数据库在非归档模式,数据库打开
    [测试2] 数据库在非归档模式,数据库MOUNT,备份整个数据库
    [测试3] 数据库在非归档模式,数据库MOUNT,备份表空间
    [测试4] 数据库在非归档模式,数据库MOUNT,备份的表空间是常规OFFLINE的
    [测试5] 数据库在非归档模式,数据库MOUNT,shutdown abort,备份的表空间
    [测试6] 数据库在非归档模式,数据库MOUNT,数据文件丢失,有表空间备份
    [测试7] 数据库在归档模式,控制文件损坏,控制文件有备份,使用RMAN恢复
    [测试8] 数据库在非归档模式,数据文件损坏,使用RMAN恢复
    [测试9] 数据库在非归档模式,数据文件损坏,使用RMAN恢复,         
            该文件的日志全部还保留在非当前在线日志和当前在线日志中
    [测试10] 数据库在非归档模式,数据文件损坏,使用RMAN恢复,
            该文件的日志部分由于日志轮转被覆盖了          
    
[3] redo log file损坏(rman和常规恢复)    
    [测试1] 修改日志组大小及增加日志组成员
    [测试2] 非当前非活动的在线日志损坏或当前在线日志损坏,切没有备份数据文件,使用强制打开的方式
    在线日志损坏 
    CLEAR的不同方式
           CLEAR LOGFILE
           CLEAR LOGFILE UNARCHIVED
           CLEAR LOGFILE UNARCHIVED              
                 GROUP ? UNRECOVERABLE DATAFILE;
    [测试3] 数据文件损坏,控制文件损坏,有trace ,           
            使用noresetlogs,非在线日志损坏 ,shutdown abort               
    [测试4]      在归档模式下没有设置自动归档下,数据库挂起             
    [测试5] 数据库在非归档模式下,设置了自动归档,当一个事务处理的重做量大于 
    所有在线日志的大小总和时                                                              
    [测试6] 数据库在非归档模式下,设置了非自动归档,当一个事务处理的重做量大于 
    所有在线日志的大小总和时 
    
[4].热备份期间的数据库崩墤(rman和常规恢复)    
    
[5] resetlogs 恢复测试     
    
[6] rman Recovering Datablocks 恢复测试    
    
[7].rman Restoring Datafile Copies to a New Host

[8].表空间的恢复(rman和常规恢复)
    [8.1] 非正常关机的情况下,用rman恢复单个数据文件
    [8.2] 非正常关机情况下,非RMAN方式用备份的数据文件进行恢复 
    [8.3] 非正常关机情况下,恢复单独表空间
    [8.4] 丢失数据文件,用rman从备份中还原数据文件并恢复tablespace
    [8.5] 重建controlfile文件时,丢失所有在线日志,语句少写了表空间的datafile
    [8.6] 用rman从备份中恢复system表空间

    
[9].回滚段恢复     
    [9.1].正常shutdown,回滚数据文件丢失,    
          有备份,回滚段恢复             
    [9.2].shutdown abort(或者使用了别的老的数据文件), 
          回滚数据文件丢失,有备份,回滚段恢复 ,       
          数据库没有活动事务                          
    [9.3].shutdown abort(或者使用了别的老的数据文件), 
          回滚数据文件丢失,有备份,回滚段恢复 ,       
          数据库有活动事务                            
    
    [9.4].shutdown abort(或者使用了别的老的数据文件),
           回滚数据文件丢失,没有备份,回滚段恢复 ,    
           数据库有活动事务                           
     
    [9.5].shutdown abort(或者使用了别的老的数据文件),    
          回滚数据文件丢失,没有备份,但控制文件有创建     
          该回撤段数据文件的所有历史日志,回滚段恢复 ,  
          数据库有活动事务    
    [9.6].数据库打开时回撤表空间文件 
          损坏,没有备份             
    
          
                                     
[10]. 数据库基于时间点的不完全恢复     
    [10.1] 所有数据文件基于时间点的不完全恢复测试
    [10.2] 单独表空间数据文件基于时间点的恢复测试
    [10.3] 分区表空间数据文件基于时间点的恢复测试
            [10.3_1] 分区表空间数据文件基于时间点的恢复测试: 基于时间的不完全恢复
            [10.3_2] 分区表空间数据文件基于时间点的恢复测试: 数据文件损坏的恢复
    
    
    
                                                                    
######################################################################################################
#                                        [1] 控制文件损坏(rman和常规恢复)                            #
######################################################################################################

准备工作
~~~~~~~~
备份
~~~~
C:\Documents and Settings\lifeng.fang>rman nocatalog target "sys/sunsdl"

恢复管理器: 版本9.2.0.1.0 - Production

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

连接到目标数据库: PDF (DBID=3171861129) --新的ID2334768642
正在使用目标数据库控制文件替代恢复目录

RMAN> configure controlfile autobackup on;

新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
RMAN> configure controlfile autobackup format for device type disk to 'c:\temp\%
F';

新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'c:\temp\%F';
已成功存储新的 RMAN 配置参数

RMAN>

RMAN> backup database;

启动 backup 于 25-2月 -05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=12 devtype=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=C:\ORACLE\ORADATA\PDF\UNDOTBS01.DBF
输入数据文件 fno=00003 name=C:\ORACLE\ORADATA\PDF\INDX01.DBF
输入数据文件 fno=00005 name=C:\ORACLE\ORADATA\PDF\USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 25-2月 -05
通道 ORA_DISK_2: 正在启动 full 数据文件备份集
通道 ORA_DISK_2: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=C:\ORACLE\ORADATA\PDF\SYSTEM01.DBF
输入数据文件 fno=00004 name=C:\ORACLE\ORADATA\PDF\TOOLS01.DBF
通道 ORA_DISK_2: 正在启动段 1 于 25-2月 -05
通道 ORA_DISK_1: 已完成段 1 于 25-2月 -05
段 handle=C:\ORACLE\ORA92\DATABASE\07GDKT8C_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:56
通道 ORA_DISK_2: 已完成段 1 于 25-2月 -05
段 handle=C:\ORACLE\ORA92\DATABASE\08GDKT8C_1_1 comment=NONE
通道 ORA_DISK_2: 备份集已完成, 经过时间:00:00:57
完成 backup 于 25-2月 -05

启动 Control File and SPFILE Autobackup 于 25-2月 -05
段 handle=C:\TEMP\C-3171861129-20050225-00 comment=NONE
完成 Control File and SPFILE Autobackup 于 25-2月 -05

RMAN>
        
~~~~~~~~~~~        
常规备份
~~~~~~~~~~~
备份数据文件cp   C:\ORACLE\ORADATA\PDF\* C:\ORACLE\ORADATA\bak
备份控制文件                                                              
###################################################
# [1.1] 有老的备份数据备份和控制文件trace
###################################################
SQL> alter session set tracefile_identifier=fanglf
  2  ;

会话已更改。

SQL> alter database backup controlfile to trace;

数据库已更改。

SQL>  alter database backup controlfile to 'c:\temp\controlfile.bak';

数据库已更改。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我们也可以使用RMAN来拷贝备份控制文件
RMAN> copy CURRENT CONTROLFILE TO 'c:\cf.cpy';

启动 copy 于 03-3月 -05
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=16 devtype=DISK
通道 ORA_DISK_1: 已复制当前的控制文件
输出文件名=C:\CF.CPY
完成 copy 于 03-3月 -05
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


SQL> col name format a50
SQL> select * from v$controlfile;

STATUS  NAME
------- --------------------------------------------------
        C:\ORACLE\ORADATA\PDF\CONTROL01.CTL
        C:\ORACLE\ORADATA\PDF\CONTROL02.CTL
        C:\ORACLE\ORADATA\PDF\CONTROL03.CTL     <<-此时仍然可以使用
~~~~~~~~~~~~~~~~
模拟控制文件损坏
~~~~~~~~~~~~~~~~        
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
使用ULTRAEDIT编辑CONTROL01.CTL部分数据 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
SQL> select * from v$controlfile;

STATUS  NAME
------- ------------------------------------------------
        C:\ORACLE\ORADATA\PDF\CONTROL01.CTL
        C:\ORACLE\ORADATA\PDF\CONTROL02.CTL
        C:\ORACLE\ORADATA\PDF\CONTROL03.CTL

SQL>
SQL> create table test (a int,v varchar(200));

使用ULTRAEDIT编辑清空CONTROL01.CTL大部分数据 
SQL> select * from v$controlfile;  <<-出现异常
select * from v$controlfile
*
ERROR 位于第 1 行:
ORA-12571: TNS: 包写入程序失败 
   
~~~~~~~~~~~~~~~~        
在alert中显示  
~~~~~~~~~~~~~~~~
Fri Feb 25 11:51:56 2005
Errors in file c:\oracle\admin\pdf\bdump\pdf_ckpt_2556.trc:
ORA-00227: corrupt block detected in controlfile: (block 1, # blocks 1)
ORA-00202: controlfile: 'C:\ORACLE\ORADATA\PDF\CONTROL01.CTL'

CKPT: terminating instance due to error 227
Fri Feb 25 11:51:58 2005
Errors in file c:\oracle\admin\pdf\bdump\pdf_pmon_3084.trc:
ORA-00227: corrupt block detected in controlfile: (block , # blocks )

Instance terminated by CKPT, pid = 2556        
~~~~~~~~~~~~~~~~
在trace文件中显示
~~~~~~~~~~~~~~~~

Corrupt block relative dba: 0x00000001 (file 0, block 1)
Completely zero block found during control file header read
*** 2005-02-25 11:51:55.000
ksedmp: internal or fatal error
ORA-00202: controlfile: 'C:\ORACLE\ORADATA\PDF\CONTROL01.CTL'

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里我模拟把3个控制文件都破坏
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

启动数据库时提示
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-00205: ?????????????????????

恢复实例
###################################################
# [测试1] --使用trace恢复 shutdown abort
###################################################
SQL> shutdown abort  
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。

Total System Global Area  101784276 bytes
Fixed Size                   453332 bytes
Variable Size              75497472 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
SQL>


SQL> CREATE CONTROLFILE REUSE DATABASE "PDF" NORESETLOGS  ARCHIVELOG
  2  --  SET STANDBY TO MAXIMIZE PERFORMANCE
  3      MAXLOGFILES 5
  4      MAXLOGMEMBERS 3
  5      MAXDATAFILES 100
  6      MAXINSTANCES 1
  7      MAXLOGHISTORY 226
  8  LOGFILE
  9    GROUP 1 'C:\ORACLE\ORADATA\PDF\REDO01.LOG'  SIZE 100M,
 10    GROUP 2 'C:\ORACLE\ORADATA\PDF\REDO02.LOG'  SIZE 100M,
 11    GROUP 3 'C:\ORACLE\ORADATA\PDF\REDO03.LOG'  SIZE 100M
 12  -- STANDBY LOGFILE
 13  DATAFILE
 14    'C:\ORACLE\ORADATA\PDF\SYSTEM01.DBF',
 15    'C:\ORACLE\ORADATA\PDF\UNDOTBS01.DBF',
 16    'C:\ORACLE\ORADATA\PDF\INDX01.DBF',
 17    'C:\ORACLE\ORADATA\PDF\TOOLS01.DBF',
 18    'C:\ORACLE\ORADATA\PDF\USERS01.DBF'
 19  CHARACTER SET ZHS16GBK
 20  ;

控制文件已创建
SQL> alter database open;
alter database open
*

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -