知识大全 数据库备份与恢复测试(7)

Posted 文件

篇首语:成功的人是跟别人学习经验,失败的人只跟自己学习经验。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据库备份与恢复测试(7)相关的知识,希望对你有一定的参考价值。

  ################################################################################################                             [ ] 热备份期间的数据库崩墤(rman和常规恢复)                        ################################################################################################

  SQL> alter tablespace users begin backup;

  表空间已更改

  SQL> host copy D:\\oracle\\oradata\\USERS DBF D:\\oracle\\oradata\\oracle\\USERS DBF已复制         个文件

  SQL> conn scott/tiger已连接 SQL> create table empcopy as select * from emp;

  表已创建

  SQL> mit;

  提交完成

  SQL> alter system switch logfile;alter system switch logfile*ERROR 位于第 行:ORA : 权限不足

  SQL> conn sys/oracle as sysdba;已连接 SQL> alter system switch logfile;

  系统已更改

  SQL> shutdown abortORACLE 例程已经关闭 SQL> startup mountORACLE 例程已经启动

  Total System Global Area  bytesFixed Size                   bytesVariable Size             bytesDatabase Buffers           bytesRedo Buffers                 bytes数据库装载完毕 SQL> alter database open;alter database open*ERROR 位于第 行:ORA : 文件 需要介质恢复ORA : 数据文件 : D:\\ORACLE\\ORADATA\\USERS DBF

  SQL> alter database datafile D:\\ORACLE\\ORADATA\\USERS DBF end backup;alter database datafile D:\\ORACLE\\ORADATA\\USERS DBF end backup                        *ERROR 位于第 行:ORA : 无效的文件名

  SQL> alter database datafile D:\\ORACLE\\ORADATA\\USERS DBF end backup;

  数据库已更改

  SQL> alter database open;

  数据库已更改

  ##################################################################################                            [ ] resetlogs 恢复测试                             ##################################################################################

  参见控制文件恢复部分

  ##################################################################################                            [ ] rman Recovering Datablocks 恢复测试            ##################################################################################

  ~~~~~~~~~~~官方文档:~~~~~~~~~~~

  Recovering Individual Data BlocksYou can use RMAN to recover one or more corrupted data blocks Typically the corruption is reported in alert logs trace files or results of SQL queries For example:

  BLOCKRECOVER DATAFILE BLOCK DATAFILE BLOCK ;

  You can also use BLOCKRECOVER to repair all corrupted blocks listed in V$BACKUP_CORRUPTION and V$COPY_CORRUPTION These views are filled whenever RMAN performs a plete scan of a file for a backup Run this mand to repair blocks listed in the views:

  BLOCKRECOVER CORRUPTION LIST;~~~~~~~~~~~场景~~~~~~~~~~~ 

  SQL> create table empblock tablespace users as select * from emp;

  表已创建

  SQL> insert into empblock select * from empblock;   已创建 行     SQL> select owner segment_name tablespace_name extent_id file_id block_id blocks from dba_extents    where segment_name= EMPBLOCK order by block_id;

  做一次数据的全库备份RMAN> backup database;

  手工地用ultraedit破坏datafile  文件

  SQL> select count(*) from empblock;select count(*) from empblock                     *ERROR 位于第 行:ORA : ORACLE 数据块损坏(文件号 块号 )ORA : 数据文件 : D:\\ORACLE\\ORADATA\\USERS DBF

  恢复坏块 

  RMAN> BLOCKRECOVER DATAFILE BLOCK ;

  启动 blockrecover 于 : : 使用通道 ORA_DISK_

  通道 ORA_DISK_ : 正在恢复块通道 ORA_DISK_ : 正在指定要从备份集恢复的块正在恢复数据文件 的块通道 ORA_DISK_ : 已从备份段 恢复块段 handle=D:\\ORACLE\\ORA \\DATABASE\\ GEF H_ _ tag=TAG T params=NULL通道 ORA_DISK_ : 块恢复已完成

  正在开始介质的恢复完成介质的恢复

  完成 blockrecover 于 : :

  SQL> select count(*) from empblock;

  COUNT(*)        

  ##########################################################  [测试 ]#########################################################SQL> startupORACLE 例程已经启动

  Total System Global Area  bytesFixed Size                   bytesVariable Size              bytesDatabase Buffers           bytesRedo Buffers                 bytesORA : ??????? C:\\oracle\\ora \\DATABASE\\PWDtestdb ORA

  SQL> alter database open;

  数据库已更改

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

  表已创建

  SQL> alter system switch logfile;

  系统已更改

  SQL> insert into arch select ok from dba_objects;

  已创建 行

  SQL> mit;

  提交完成

  SQL> insert into arch select * from arch ;

  已创建 行

  SQL> /

  已创建 行

  SQL> /

  已创建 行

  SQL> /

  已创建 行

  SQL> mit;

  提交完成

  SQL> alter system switch logfile;

  系统已更改

  SQL> insert into arch select no from dba_objects;

  已创建 行

  SQL> mit;

  提交完成

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

  GROUP#  SEQUENCE# ARC STATUS                    NO  CURRENT                   YES ACTIVE                   YES ACTIVE

  SQL> shutdown数据库已经关闭 已经卸载数据库 ORACLE 例程已经关闭 SQL> exit从Oracle i Enterprise Edition Release ProductionWith the Partitioning OLAP and Oracle Data Mining optionsJServer Release Production中断开

  C:\\Documents and Settings\\lifeng fang>oradim delete sid testdb

  C:\\Documents and Settings\\lifeng fang>oradim new sid testdb intpwd sunsdl   

  RMAN> backup format c:\\BLOCKRECOVER_%s%p BAK database;

  启动 backup 于 月 分配的通道: ORA_DISK_ 通道 ORA_DISK_ : sid= devtype=DISK通道 ORA_DISK_ : 正在启动 full 数据文件备份集通道 ORA_DISK_ : 正在指定备份集中的数据文件在备份集中包含当前的 SPFILE备份集中包括当前控制文件输入数据文件 fno= name=C:\\ORACLE\\ORADATA\\TESTDB\\SYSTEM DBF输入数据文件 fno= name=C:\\ORACLE\\ORADATA\\TESTDB\\UNDOTBS DBF输入数据文件 fno= name=C:\\ORACLE\\ORADATA\\TESTDB\\INDX DBF输入数据文件 fno= name=C:\\ORACLE\\ORADATA\\TESTDB\\USERS DBF输入数据文件 fno= name=C:\\ORACLE\\ORADATA\\TESTDB\\TOOLS DBF通道 ORA_DISK_ : 正在启动段 于 月 通道 ORA_DISK_ : 已完成段 于 月 段 handle=C:\\BLOCKRECOVER_ BAK ment=NONE通道 ORA_DISK_ : 备份集已完成 经过时间: : : 完成 backup 于 月

  SQL> insert into arch select * from arch ;

  已创建 行

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

  COUNT(*) ST      no    ok

  SQL> select SEGMENT_NAME HEADER_BLOCK from dba_segments where SEGMENT_NAME = ARCH ;                                                     SEGMENT_NAME                          HEADER_BLOCK                   ARCH                                        

  SQL> select to_char( * * xxxxxx ) from dual;

  TO_CHAR     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我现在用ultraedit修改arch表的头块在地址 上进行破坏~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  SQL> INSERT INTO ARCH SELECT * FROM ARCH ;INSERT INTO ARCH SELECT * FROM ARCH                                 *ERROR 位于第 行:ORA : ORACLE 数据块损坏(文件号 块号 )ORA : 数据文件 : C:\\ORACLE\\ORADATA\\TESTDB\\USERS DBF  

  RMAN> BLOCKRECOVER DATAFILE BLOCK ;

  启动 blockrecover 于 月 分配的通道: ORA_DISK_ 通道 ORA_DISK_ : sid= devtype=DISK

  通道 ORA_DISK_ : 正在恢复块通道 ORA_DISK_ : 正在指定要从备份集恢复的块正在恢复数据文件 的块通道 ORA_DISK_ : 已从备份段 恢复块段 handle=C:\\BLOCKRECOVER_ BAK tag=TAG T params=NULL通道 ORA_DISK_ : 块恢复已完成

  正在开始介质的恢复完成介质的恢复

  完成 blockrecover 于 月   SQL> select count(*) status from arch group by status;

  COUNT(*) ST      no    ok              ##################################################################################                  [ ] rman Restoring Datafile Copies to a New Host             ##################################################################################

  ################################################################################# #                            [ ] 表空间的恢复(rman和常规恢复)                   ###################################################################################################################################### #  [ ] 非正常关机的情况下 用rman恢复单个数据文件  ####################################################

   做一次全库备份        RMAN> backup database;           RMAN> report schema;

  数据库方案报表     文件 KB    表空间           RB segs 数据文件名称                  SYSTEM               YES     D:\\ORACLE\\ORADATA\\ORACLE\\SYSTEM DBF             UNDOTBS              YES     D:\\ORACLE\\ORADATA\\ORACLE\\UNDOTBS DBF              CWMLITE              NO      D:\\ORACLE\\ORADATA\\ORACLE\\CWMLITE DBF              DRSYS                NO      D:\\ORACLE\\ORADATA\\ORACLE\\DRSYS DBF             EXAMPLE              NO      D:\\ORACLE\\ORADATA\\ORACLE\\EXAMPLE DBF              INDX                 NO      D:\\ORACLE\\ORADATA\\ORACLE\\INDX DBF              ODM                  NO      D:\\ORACLE\\ORADATA\\ORACLE\\ODM DBF              TOOLS                NO      D:\\ORACLE\\ORADATA\\ORACLE\\TOOLS DBF              USERS                NO      D:\\ORACLE\\ORADATA\\ORACLE\\USERS DBF             XDB                  NO      D:\\ORACLE\\ORADATA\\ORACLE\\XDB DBF            SINO                 NO      D:\\ORACLE\\ORADATA\\ORACLE\\SINO DBF            RCVCAT               NO      D:\\ORACLE\\ORADATA\\ORACLE\\RCVCAT DBF            PERFSTAT             NO      D:\\ORACLE\\ORADATA\\ORACLE\\PERFSTAT DBF      显示一下系统时间        SQL> select sysdate from dual;

  SYSDATE          : :       创建一个table        SQL>create table empcopy (id number name varchar ( ) salary number) tablespace users;        切换日志        SQL>alter system switch logfile;        重启机器至mount状态        SQL>startup mount        模拟删除USERS DBF文件 进行完全恢复        RMAN> run      > restore datafile ;     > recover datafile ;     > alter database open;     >    

  #################################################### #  [ ] 非正常关机情况下 非RMAN方式用备份的数据文件进行恢复               ####################################################

     恢复前数据库状态      SQL> select * from swap_p ;

  ID NAME                                               HIRE_DATE               SALARY            zhang namo                                         : :                 SQL> insert into swap_p select * from test;      已创建 行       SQL> mit;      提交完成       SQL> conn sys/oracle as sysdba   已连接    SQL> alter system switch logfile;      系统已更改       SQL> shutdown abort   ORACLE 例程已经关闭    SQL> startup mount   ORACLE 例程已经启动       Total System Global Area  bytes   Fixed Size                   bytes   Variable Size             bytes   Database Buffers           bytes   Redo Buffers                 bytes   数据库装载完毕       将旧的备份数据文件拷贝到当前的数据文件位置      恢复数据库      SQL> recover database ;   完成介质恢复

  SQL> alter database open;      数据库已更改       SQL> conn scott/tiger   已连接    SQL> select * from swap_p ;              ID NAME                                               HIRE_DATE               SALARY            zhang namo                                         : :                 zhang xiao                                         : :                 zhang namo                                         : :                 zhang namo                                         : :                 zhang namo                                         : :                 zhang namo                                         : :                 zhang namo                                         : :                 zhang namo                                         : :              已选择 行

   #################################################### #  [ ] 非正常关机情况下 恢复单独表空间             ####################################################

     恢复前数据库状态        SQL> conn scott/tiger   已连接    SQL> select * from swap_p ;      未选定行      SQL> insert into swap_p select * from test;      已创建 行       SQL> mit;      提交完成       SQL> conn sys/oracle as sysdba   已连接    SQL> shutdown abort   ORACLE 例程已经关闭       将旧的备份数据文件拷贝到当前的数据文件位置      恢复数据文件        SQL> startup mount   ORACLE 例程已经启动       Total System Global Area  bytes   Fixed Size                   bytes   Variable Size             bytes   Database Buffers           bytes   Redo Buffers                 bytes   数据库装载完毕    SQL> alter database datafile offline;      数据库已更改       SQL> alter database open;      数据库已更改       SQL> recover tablespace test ;   完成介质恢复    SQL> alter tablespace test online;      数据库已更改       SQL> conn scott/tiger   已连接    SQL> select * from swap_p ;              ID NAME                                               HIRE_DATE               SALARY            zhang xiao                                         : :                 zhang namo                                         : :                 zhang namo                                         : :                 zhang namo                                         : :                 zhang namo                                         : :                 zhang namo                                         : :                 zhang namo                                         : :              已选择 行 #################################################### #  [ ] 丢失数据文件 用rman从备份中还原数据文件并恢复tablespace####################################################         RMAN> backup database;           RMAN> report schema;           数据库方案报表     文件        KB    表空间             RB segs   数据文件名称                  SYSTEM               ***     D:\\ORACLE\\ORADATA\\SYSTEM DBF             UNDOTBS              ***     D:\\ORACLE\\ORADATA\\UNDOTBS DBF              CWMLITE              ***     D:\\ORACLE\\ORADATA\\CWMLITE DBF              DRSYS                ***     D:\\ORACLE\\ORADATA\\DRSYS DBF             EXAMPLE              ***     D:\\ORACLE\\ORADATA\\EXAMPLE DBF              INDX                 ***     D:\\ORACLE\\ORADATA\\INDX DBF              ODM                  ***     D:\\ORACLE\\ORADATA\\ODM DBF              TOOLS                ***     D:\\ORACLE\\ORADATA\\TOOLS DBF              USERS                ***     D:\\ORACLE\\ORADATA\\USERS DBF             XDB                  ***     D:\\ORACLE\\ORADATA\\XDB DBF            SINO                 ***     D:\\ORACLE\\ORADATA\\SINO DBF            RCVCAT               ***     D:\\ORACLE\\ORADATA\\RCVCAT DBF            PERFSTAT             ***     D:\\ORACLE\\ORADATA\\PERFSTAT DBF             TEST                 ***     D:\\ORACLE\\ORADATA\\TEST DBF             TEST                 ***     D:\\ORACLE\\ORADATA\\TEST DBF             TEST                 ***     D:\\ORACLE\\ORADATA\\TEST DBF             TEST                 ***     D:\\ORACLE\\ORADATA\\TEST DBF       关闭数据库 删除D:\\ORACLE\\ORADATA\\TEST DBF文件      启动数据库到mount 状态      启动rman       D:\\>rman target sys/oracle nocatalog            恢复tablespace test       从copy的备份中恢复         RMAN> run    > allocate channel c type disk;   > restore datafile from datafilecopy;   > recover tablespace  test ;   > alter database open;   > release channel c ;   

  ####################################################   # [ ] 重建controlfile文件时 丢失所有在线日志 语句少写了表空间的datafile####################################################

  ~~~~~~~~~~~ 场景~~~~~~~~~RMAN> report schema;

  数据库方案报表文件 KB    表空间           RB segs 数据文件名称              SYSTEM               ***     D:\\ORACLE\\ORADATA\\SYSTEM DBF         UNDOTBS              ***     D:\\ORACLE\\ORADATA\\UNDOTBS DBF          CWMLITE              ***     D:\\ORACLE\\ORADATA\\CWMLITE DBF          DRSYS                ***     D:\\ORACLE\\ORADATA\\DRSYS DBF         EXAMPLE              ***     D:\\ORACLE\\ORADATA\\EXAMPLE DBF          INDX                 ***     D:\\ORACLE\\ORADATA\\INDX DBF          ODM                  ***     D:\\ORACLE\\ORADATA\\ODM DBF          TOOLS                ***     D:\\ORACLE\\ORADATA\\TOOLS DBF          USERS                ***     D:\\ORACLE\\ORADATA\\USERS DBF         XDB                  ***     D:\\ORACLE\\ORADATA\\XDB DBF        SINO                 ***     D:\\ORACLE\\ORADATA\\SINO DBF        RCVCAT               ***     D:\\ORACLE\\ORADATA\\RCVCAT DBF        PERFSTAT             ***     D:\\ORACLE\\ORADATA\\PERFSTAT DBF             TEST                 ***     D:\\ORACLE\\ORA \\DATABASE\\MISSING             TEST                 ***     D:\\ORACLE\\ORA \\DATABASE\\MISSING             TEST                 ***     D:\\ORACLE\\ORA \\DATABASE\\MISSING             TEST                 ***     D:\\ORACLE\\ORA \\DATABASE\\MISSING

  由于redo文件损坏 致使数据库无法正常启动 DBA用重建control文件的方法 使数据库重启 但是没有把 datafile文件的名子写在control文件中 这样 启动数据库后出现上面的结果 在用rman备份数据库文件时 出现错误

  RMAN> backup database;

  启动 backup 于 : : RMAN : ===========================================================RMAN : =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN : ===========================================================RMAN : failure of backup mand at / / : : RMAN : ORACLE error from recovery catalog database: RMAN : target database incarnation not found in recovery catalog

  ~~~~~~~~~~~ 恢复数据文件 ~~~~~~~~~

   重命名数据文件      SQL> ALTER DATABASE OPEN RESETLOGS;                 SQL> alter database rename file D:\\ORACLE\\ORA \\DATABASE\\MISSING to d:\\oracle\\oradata\\test dbf ;

  数据库已更改             SQL> alter database rename file D:\\ORACLE\\ORA \\DATABASE\\MISSING to d:\\oracle\\oradata\\test dbf ;            数据库已更改             SQL> alter database rename file D:\\ORACLE\\ORA \\DATABASE\\MISSING to d:\\oracle\\oradata\\test dbf ;            数据库已更改             SQL> alter database rename file D:\\ORACLE\\ORA \\DATABASE\\MISSING to d:\\oracle\\oradata\\test dbf ;            数据库已更改      

   用rman备份数据库         RMAN> reset database;

  在恢复目录中注册的数据库的新实体化      正在启动全部恢复目录的 resync      完成全部 resync            MAN> backup database;     

  

  #################################################### #  [ ] 用rman从备份中恢复system表空间####################################################

  方法一:   做一次全库备份      恢复system表空间     STARTUP MOUNT      RMAN> run      > restore datafile ;     > recover datafile ;     > alter database open;     >             方法二:   做一次全库备份      恢复system表空间        RMAN> run      > restore tablespace system;     > recover tablespace system;     > alter database open;     >      #################################################### #  [ ] 用户表空间损坏####################################################一)用户表空间错误:在启动数据库时出现ORA ORA 或操作系统级错误例如ORA 在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ORA ORA 以及操作系统级错误ORA 解决:以下有两种解决方案: 用户的表空间可以被轻易地重建即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等 在这种情况下 最简单的方法是offline并删除该数据文件 删除表空间并重建表空间以及所有的对象 svrmgrl> startup mountsvrmgrl> alter database datafile filename offline drop;svrmgrl> alter database open;svrmgrl> drop tablespace tablespace_name including contents;重建表空间及所有对象 用户的表空间不能够被轻易地重建在大多数情况下 重建表空间是不可能及太辛苦的工作 方法是倒备份及做介质恢复 如果您的系统运行在NOARCHIVELOG模式下 则只有丢失的数据在online redo log中方可被恢复 步骤如下: )Restore the lost datafile from a backup )svrmgrl> startup mount )svrmgrl> select v group# member sequence# first_change#>from v$log v v$logfile v where v group#=v group#; )如果数据库运行在NOARCHIVELOG模式下则:svrmgrl> select file# change# from v$recover_file;如果 CHANGE# 大于最小的FIRST_CHANGE#则数据文件可以被恢复 如果 CHANGE# 小于最小的FIRST_CHANGE#则数据文件不可恢复 恢复最近一次的全备份或采用方案一 )svrmgrl> recover datafile filename; )确认恢复成功 )svrmgrl> alter database open resetlogs; 只读表空间无需做介质恢复 只要将备份恢复即可 唯一的例外是:表空间在最后一次备份后被改为read write 模式表空间在最后一次备份后被改为read only 模式在这种情况下 均需进行介质恢复

  二)临时表空间临时表空间并不包含真正的数据 恢复的方法是删除临时表空间并重建即可

cha138/Article/program/Oracle/201311/16608

相关参考

知识大全 数据库备份与恢复测试(6)

  [测试]数据库在非归档模式数据库MOUNT数据文件丢失有表空间备份  RMAN>backuptablespaceusers;  启动backup于月分配的通道:ORA_DISK_通道ORA_

知识大全 数据库备份与恢复测试(3)

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

知识大全 oracle数据库备份与恢复apieceofcake(4)

  oracle数据库日志备份(windows平台)  本片是接上次的数据库在线备份进行数据库全备份后需要备份归档的日志文件  建立数据库备份的脚本  在上面建立的目录下建立如下的两个脚本  建立执行

知识大全 Oracle数据库备份与恢复

Oracle数据库备份与恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一导出/导入(Exp

知识大全 实战Oracle数据库备份与恢复

实战Oracle数据库备份与恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用户可以留意一下

知识大全 Oracle数据库的备份与恢复

Oracle数据库的备份与恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  河南省新乡市电信局

知识大全 数据库中备份与恢复问题简介

  备份与恢复是我们使用数据库中不可缺少的部分也是我们在使用数据库时会经常碰到的问题当我们使用一个数据库时总希望数据库的内容是可靠的正确的但由于计算机系统的故障(硬件故障软件故障网络故障进程故障和系统

知识大全 如何实现MySQL数据库的备份与恢复

如何实现MySQL数据库的备份与恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在数据库表丢

知识大全 Oracle数据库备份与恢复精华资料集锦

Oracle数据库备份与恢复精华资料集锦  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!主要介绍了O

知识大全 浅谈IBMDB2的数据库备份与恢复

浅谈IBMDB2的数据库备份与恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要本文探讨了