zoukankan      html  css  js  c++  java
  • Oracle备份恢复测试

    问题:

    1.  10:54:00 backup Database
    2.  10:55:00  Create Table test1
        10:57:01  Drop   Table test1
        Create Table test2; Insert Into ...
    3.  10:59:00  Drop Table test2
    4.  10:59:01  Backup Database
    5.  此时发现test1 被DROP, 要求恢复到 10:57:00(drop table test1 之前), 恢复还原之后又发现需要test2, 因此要求恢复到10:58:34

    1.  backup Database
            C:\Documents and Settings\jason>rman target sys/oracle@mydata catalog rman/rman@rmandb

            Recovery Manager: Release 9.2.0.1.0 - Production
            Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.
            connected to target database: MYDATA (DBID=165830944)
            connected to recovery catalog database

            RMAN> run {
            2> allocate channel d1 type disk;
            3> backup format 'd:\dbbak\%U' database;
            4> sql 'alter system archive log current';
            5> backup archivelog all delete input;
            6> release channel d1;
            7> }

            allocated channel: d1
            channel d1: sid=15 devtype=DISK
            Starting backup at 12-APR-07
            channel d1: starting full datafile backupset
            channel d1: specifying datafile(s) in backupset
            input datafile fno=00001 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\SYSTEM01.DBF
            input datafile fno=00002 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\UNDOTBS01.DBF
            input datafile fno=00006 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\PERFSAT.DBF
            input datafile fno=00003 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\INDX01.DBF
            input datafile fno=00005 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\USERS01.DBF
            input datafile fno=00004 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\TOOLS01.DBF
            channel d1: starting piece 1 at 12-APR-07
            channel d1: finished piece 1 at 12-APR-07
            piece handle=D:\DBBAK\04IEVMDO_1_1 comment=NONE
            channel d1: backup set complete, elapsed time: 00:19:08
            Finished backup at 12-APR-07

            Starting Control File and SPFILE Autobackup at 12-APR-07
            piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-01 comment=NONE
            Finished Control File and SPFILE Autobackup at 12-APR-07

            sql statement: alter system archive log current
            Starting backup at 12-APR-07
            current log archived
            channel d1: starting archive log backupset
            channel d1: specifying archive log(s) in backup set
            input archive log thread=1 sequence=39 recid=1 stamp=619699767
            input archive log thread=1 sequence=40 recid=2 stamp=619699770
            channel d1: starting piece 1 at 12-APR-07
            channel d1: finished piece 1 at 12-APR-07
            piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\06IEVNHQ_1_1 comment=NONE
            channel d1: backup set complete, elapsed time: 00:00:02
            channel d1: deleting archive log(s)
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00039.001 recid=1 stamp=619699767
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00040.001 recid=2 stamp=619699770
            Finished backup at 12-APR-07

            Starting Control File and SPFILE Autobackup at 12-APR-07
            piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-02 comment=NONE
            Finished Control File and SPFILE Autobackup at 12-APR-07

            released channel: d1
            RMAN>

    2.  Create Table test1, Drop Table test1;
        Create Table test2, Insert into test2

            C:\Documents and Settings\jason>set oracle_sid=mydata
            C:\Documents and Settings\jason>sqlplus /nolog

            SQL*Plus: Release 9.2.0.1.0 - Production on Thu Apr 12 10:52:43 2007
            Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

            SQL> connect perfstat/perfstat;
            Connected.

            SQL> set time on;
            10:53:37 SQL> create table test1 (field1 varchar2(10), field2 number(5));
            Table created.
            10:54:12 SQL>
            10:56:23 SQL>

            10:57:01 SQL> drop table test1;
            Table dropped.
            10:57:18 SQL>

            10:57:39 SQL> create table test2 (field1 varchar2(10), field2 number(5));
            Table created.

            10:58:07 SQL> insert into test2 values('name1', 10);
            1 row created.

            10:58:25 SQL> insert into test2 values('name2', 20);
            1 row created.

            10:58:31 SQL> commit;
            Commit complete.

            10:58:33 SQL>

    3. backup database
            RMAN> run {
            2> allocate channel d1 type disk;
            3> backup format 'd:\dbbak\%U' database;
            4> sql 'alter system archive log current';
            5> backup format 'd:\dbbak\al_%s_%p_%t' archivelog all delete input;
            6> release channel d1;
            7> }

            allocated channel: d1
            channel d1: sid=15 devtype=DISK
            Starting backup at 12-APR-07
            channel d1: starting full datafile backupset
            channel d1: specifying datafile(s) in backupset
            input datafile fno=00001 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\SYSTEM01.DBF
            input datafile fno=00002 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\UNDOTBS01.DBF
            input datafile fno=00006 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\PERFSAT.DBF
            input datafile fno=00003 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\INDX01.DBF
            input datafile fno=00005 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\USERS01.DBF
            input datafile fno=00004 name=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\TOOLS01.DBF
            channel d1: starting piece 1 at 12-APR-07
            channel d1: finished piece 1 at 12-APR-07
            piece handle=D:\DBBAK\08IEVO78_1_1 comment=NONE
            channel d1: backup set complete, elapsed time: 00:00:26
            Finished backup at 12-APR-07

            Starting Control File and SPFILE Autobackup at 12-APR-07
            piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-03 comment=NONE
            Finished Control File and SPFILE Autobackup at 12-APR-07

            sql statement: alter system archive log current
            Starting backup at 12-APR-07
            current log archived
            channel d1: starting archive log backupset
            channel d1: specifying archive log(s) in backup set
            input archive log thread=1 sequence=41 recid=3 stamp=619700485
            input archive log thread=1 sequence=42 recid=4 stamp=619700489
            channel d1: starting piece 1 at 12-APR-07
            channel d1: finished piece 1 at 12-APR-07
            piece handle=D:\DBBAK\AL_10_1_619700489 comment=NONE
            channel d1: backup set complete, elapsed time: 00:00:02
            channel d1: deleting archive log(s)
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00041.001 recid=3 stamp=619700485
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00042.001 recid=4 stamp=619700489
            Finished backup at 12-APR-07

            Starting Control File and SPFILE Autobackup at 12-APR-07
            piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-04 comment=NONE
            Finished Control File and SPFILE Autobackup at 12-APR-07
            released channel: d1
            RMAN>

    4. 按要求恢复.....
            SQL> connect / as sysdba
            Connected.
            SQL> shutdown immediate;
            Database closed.
            Database dismounted.
            ORACLE instance shut down.

            SQL> startup mount;
            ORACLE instance started.
            Total System Global Area  101784276 bytes
            Fixed Size                   453332 bytes
            Variable Size              75497472 bytes
            Database Buffers           25165824 bytes
            Redo Buffers                 667648 bytes
            Database mounted.
            SQL>

        恢复到10:57:00
            RMAN> run {
            2> set until time "to_date('20070412105700','yyyymmddhh24miss')";
            3> restore database;
            4> recover database;
            5> }

            executing command: SET until clause
            Starting restore at 12-APR-07
            allocated channel: ORA_DISK_1
            channel ORA_DISK_1: sid=14 devtype=DISK
            channel ORA_DISK_1: starting datafile backupset restore
            channel ORA_DISK_1: specifying datafile(s) to restore from backup set
            restoring datafile 00001 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\SYSTEM01.DBF
            restoring datafile 00002 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\UNDOTBS01.DBF
            restoring datafile 00003 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\INDX01.DBF
            restoring datafile 00004 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\TOOLS01.DBF
            restoring datafile 00005 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\USERS01.DBF
            restoring datafile 00006 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\PERFSAT.DBF
            channel ORA_DISK_1: restored backup piece 1
            piece handle=D:\DBBAK\04IEVMDO_1_1 tag=TAG20070412T103016 params=NULL
            channel ORA_DISK_1: restore complete
            Finished restore at 12-APR-07

            Starting recover at 12-APR-07
            using channel ORA_DISK_1
            starting media recovery
            channel ORA_DISK_1: starting archive log restore to default destination
            channel ORA_DISK_1: restoring archive log
            archive log thread=1 sequence=39
            channel ORA_DISK_1: restoring archive log
            archive log thread=1 sequence=40
            channel ORA_DISK_1: restored backup piece 1
            piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\06IEVNHQ_1_1 tag=TAG20070412T104930 params=NULL
            channel ORA_DISK_1: restore complete
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00039.001 thread=1 sequence=39
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00040.001 thread=1 sequence=40
            channel ORA_DISK_1: starting archive log restore to default destination
            channel ORA_DISK_1: restoring archive log
            archive log thread=1 sequence=41
            channel ORA_DISK_1: restored backup piece 1
            piece handle=D:\DBBAK\AL_10_1_619700489 tag=TAG20070412T110129 params=NULL
            channel ORA_DISK_1: restore complete
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00041.001 thread=1 sequence=41
            media recovery complete
            Finished recover at 12-APR-07
            RMAN>

        打开数据库
            SQL> alter database open resetlogs;
            Database altered.

            SQL> connect perfstat/perfstat;
            Connected.

            SQL> select * from test1;
            no rows selected

        恢复还原完成, 但发现test2已没有!      

            SQL> select * from test2;
            select * from test2
                          *
            ERROR at line 1:
            ORA-00942: table or view does not exist

            SQL>

        先将test1导出
            C:\Documents and Settings\jason>set oracle_sid=mydata
            C:\Documents and Settings\jason>exp perfstat/perfstat file=d:\dbbak\test1.dmp log=test1.log tables=(test1)

            Export: Release 9.2.0.1.0 - Production on Thu Apr 12 11:42:23 2007
            Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
            Connected to: 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
            Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
            About to export specified tables via Conventional Path ...
            . . exporting table                          TEST1          0 rows exported
            Export terminated successfully without warnings.

       准备把库恢复到10:59:00

            C:\Documents and Settings\jason>sqlplus /nolog
            SQL*Plus: Release 9.2.0.1.0 - Production on Thu Apr 12 11:42:31 2007
            Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
            SQL> connect / as sysdba;
            Connected.
     
            SQL> shutdown immediate;
            Database closed.
            Database dismounted.
            ORACLE instance shut down.

            SQL> startup mount;
            ORACLE instance started.
            Total System Global Area  101784276 bytes
            Fixed Size                   453332 bytes
            Variable Size              75497472 bytes
            Database Buffers           25165824 bytes
            Redo Buffers                 667648 bytes
            Database mounted.

        恢复到10:59:00
            C:\Documents and Settings\jason>rman target sys/oracle@mydata catalog rman/rman@rmandb
            Recovery Manager: Release 9.2.0.1.0 - Production
            Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.
            connected to target database: MYDATA (DBID=165830944)
            connected to recovery catalog database

            RMAN> run {
            2> set until time "to_date('20070412105900','yyyymmddhh24miss')";
            3> restore database;
            4> recover database;
            5> }

            executing command: SET until clause
            RMAN-00571: ===========================================================
            RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
            RMAN-00571: ===========================================================
            RMAN-03002: failure of set command at 04/12/2007 11:44:47
            RMAN-06004: ORACLE error from recovery catalog database: RMAN-20003: target database incarnation not found in recovery catalog
            RMAN>

       ******此时发现原来的备份集不能用,  问题出现!!!!!!

            重新启动到nomount状态
            SQL> shutdown immediate;
            ORA-01109: database not open
            Database dismounted.
            ORACLE instance shut down.

            SQL> startup nomount;
            ORACLE instance started.
            Total System Global Area  101784276 bytes
            Fixed Size                   453332 bytes
            Variable Size              75497472 bytes
            Database Buffers           25165824 bytes
            Redo Buffers                 667648 bytes

        从指定的备份中恢复控制文件
            C:\Documents and Settings\jason>rman target sys/oracle@mydata catalog rman/rman@rmandb

            Recovery Manager: Release 9.2.0.1.0 - Production
            Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.
            connected to target database: mydata (not mounted)
            connected to recovery catalog database

            RMAN> restore controlfile from 'C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-01';
            Starting restore at 12-APR-07
            allocated channel: ORA_DISK_1
            channel ORA_DISK_1: sid=14 devtype=DISK
            channel ORA_DISK_1: restoring controlfile
            channel ORA_DISK_1: restore complete
            replicating controlfile
            input filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\CONTROL01.CTL
            output filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\CONTROL02.CTL
            Finished restore at 12-APR-07

            RMAN>

        启动到mount状态
            SQL> alter database mount;
            Database altered.
            SQL>

           
      12.
            RMAN> run {
            2> set until time "to_date('20070412105834','yyyymmddhh24miss')";
            3> restore database;
            4> recover database;
            5> }

            executing command: SET until clause
            Starting restore at 12-APR-07
            using channel ORA_DISK_1
            channel ORA_DISK_1: starting datafile backupset restore
            channel ORA_DISK_1: specifying datafile(s) to restore from backup set
            restoring datafile 00001 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\SYSTEM01.DBF
            restoring datafile 00002 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\UNDOTBS01.DBF
            restoring datafile 00003 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\INDX01.DBF
            restoring datafile 00004 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\TOOLS01.DBF
            restoring datafile 00005 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\USERS01.DBF
            restoring datafile 00006 to C:\SOFTWARE\ORACLE\ORADATA\MYDATA\PERFSAT.DBF
            channel ORA_DISK_1: restored backup piece 1
            piece handle=D:\DBBAK\04IEVMDO_1_1 tag=TAG20070412T103016 params=NULL
            channel ORA_DISK_1: restore complete
            Finished restore at 12-APR-07

            Starting recover at 12-APR-07
            using channel ORA_DISK_1
            starting media recovery

            archive log thread 1 sequence 39 is already on disk as file C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00039.001
            archive log thread 1 sequence 40 is already on disk as file C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00040.001
            archive log thread 1 sequence 41 is already on disk as file C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00041.001
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00039.001 thread=1 sequence=39
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00040.001 thread=1 sequence=40
            archive log filename=C:\SOFTWARE\ORACLE\ORADATA\MYDATA\ARCHIVE\ARC00041.001 thread=1 sequence=41
            media recovery complete
            Finished recover at 12-APR-07
            RMAN>

        *****做完 resetlogs 后, C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-01  里面的控制文件是最新的了, -----从时间上可以看出,
        不能利用这个来恢复到 10:58:34 左右的数据了!!!!!!!!
        *****如果还要用这个文件来做恢复试验, 最好先将它备份一下!!!!!!!!

            RMAN> sql 'alter database open resetlogs';
            sql statement: alter database open resetlogs
            RMAN>

            RMAN> reset database;
            new incarnation of database registered in recovery catalog
            starting full resync of recovery catalog
            full resync complete

            RMAN> report obsolete;
            RMAN retention policy will be applied to the command
            RMAN retention policy is set to redundancy 1
            Report of obsolete backups and copies
            Type                 Key    Completion Time    Filename/Handle
            -------------------- ------ ------------------ --------------------
            Backup Set           58     12-APR-07
              Backup Piece       59     12-APR-07          C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-01
            Backup Set           74     12-APR-07
              Backup Piece       75     12-APR-07          C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-02
            Backup Set           79     12-APR-07
              Backup Piece       80     12-APR-07          D:\DBBAK\08IEVO78_1_1
            Backup Set           88     12-APR-07
              Backup Piece       89     12-APR-07          C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-03
            Backup Set           104    12-APR-07
              Backup Piece       105    12-APR-07          C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-04

            RMAN> delete obsolete;
            RMAN retention policy will be applied to the command
            RMAN retention policy is set to redundancy 1
            allocated channel: ORA_DISK_1
            channel ORA_DISK_1: sid=12 devtype=DISK
            Deleting the following obsolete backups and copies:

            Type                 Key    Completion Time    Filename/Handle
            -------------------- ------ ------------------ --------------------
            Backup Set           58     12-APR-07
              Backup Piece       59     12-APR-07          C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-01
            Backup Set           74     12-APR-07
              Backup Piece       75     12-APR-07          C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-02
            Backup Set           79     12-APR-07
              Backup Piece       80     12-APR-07          D:\DBBAK\08IEVO78_1_1
            Backup Set           88     12-APR-07
              Backup Piece       89     12-APR-07          C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-03
            Backup Set           104    12-APR-07
              Backup Piece       105    12-APR-07          C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-04

            Do you really want to delete the above objects (enter YES or NO)? yes
            deleted backup piece
            backup piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-02 recid=5 stamp=619699773
            deleted backup piece

            backup piece handle=D:\DBBAK\08IEVO78_1_1 recid=6 stamp=619700457
            deleted backup piece
            backup piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-03 recid=7 stamp=619700482
            deleted backup piece
            backup piece handle=C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-04 recid=9 stamp=619700492
            Deleted 4 objects

            RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due
            RMAN-06208:          to mismatched status.  Use CROSSCHECK command to fix status
            List of Mismatched objects

            ==========================
              Object Type   Filename/Handle
            --------------- ---------------------------------------------------
            Backup Piece    C:\SOFTWARE\ORACLE\ORA92\DATABASE\C-165830944-20070412-01

            RMAN>

        验证恢复结果
            SQL> connect perfstat/perfstat
            Connected.

            SQL> select * from test2;
            FIELD1         FIELD2
            ---------- ----------
            name1              10
            name2              20
         
            SQL> select * from test1;
            select * from test1
                          *
            ERROR at line 1:
            ORA-00942: table or view does not exist

            SQL> 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

        导入test1
            C:\Documents and Settings\jason>imp perfstat/perfstat file=d:\dbbak\test1.dmp log=d:\dbbak\test1_imp.log tables=(test1)
            Import: Release 9.2.0.1.0 - Production on Thu Apr 12 12:07:03 2007
            Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
            Connected to: 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
            Export file created by EXPORT:V09.02.00 via conventional path
            import done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
            . importing PERFSTAT's objects into PERFSTAT
            . . importing table                        "TEST1"          0 rows imported
            Import terminated successfully without warnings.

            C:\Documents and Settings\jason>sqlplus /nolog
            SQL*Plus: Release 9.2.0.1.0 - Production on Thu Apr 12 12:07:08 2007
            Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

            SQL> connect perfstat/perfstat
            Connected.

            SQL> select * from test1;
            no rows selected

            SQL>

  • 相关阅读:
    Spring Cloud Hystrix Dashboard的使用 5.1.3
    Spring Cloud Hystrix 服务容错保护 5.1
    Spring Cloud Ribbon 客户端负载均衡 4.3
    Spring Cloud 如何实现服务间的调用 4.2.3
    hadoop3.1集成yarn ha
    hadoop3.1 hdfs的api使用
    hadoop3.1 ha高可用部署
    hadoop3.1 分布式集群部署
    hadoop3.1伪分布式部署
    KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
  • 原文地址:https://www.cnblogs.com/jasonsfu/p/1152784.html
Copyright © 2011-2022 走看看