zoukankan      html  css  js  c++  java
  • 全自动 TSPITR基于RMANSCN

    1、创建测试表空间user02。这里我就不写创建语句了。
    2、创建测试表
       SQL>create table test (id number(5),name varchar2(5)) tablespace user02;
       SQL>insert into test values(1,'jason');
       SQL>commit;
    3、SQL>select current_scn,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from v$database; 
       1084809 2011-01-10 17:42:32
    4、模拟误drop表
       SQL> drop table test purge;
    5、下面需要借助TSPITR恢复user02这个表空间到2011-01-10 17:42:32这个时间点,从而找回我要的表test,下面我的恢复过程,我就执行了一条简单的命令:
    RMAN>RECOVER TABLESPACE user02 UNTIL scn 1084809 AUXILIARY DESTINATION 'E:\auxi';

    启动 recover 于 10-1月 -11
    使用目标数据库控制文件替代恢复目录
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: sid=142 devtype=DISK
    RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点

    表空间列表要求具有 UNDO 段
    表空间 SYSTEM
    表空间 UNDOTBS1

    使用 SID='ndlz' 创建自动实例

    供自动实例使用的初始化参数:
    db_name=ORCL
    compatible=10.2.0.1.0
    db_block_size=8192
    db_files=200
    db_unique_name=tspitr_ORCL_ndlz
    large_pool_size=1M
    shared_pool_size=110M
    #No auxiliary parameter file used
    db_create_file_dest=E:\auxi
    control_files=E:\auxi/cntrl_tspitr_ORCL_ndlz.f


    启动自动实例 ORCL

    Oracle 实例已启动

    系统全局区域总计     205520896 字节

    Fixed Size                     1248092 字节
    Variable Size                146801828 字节
    Database Buffers              50331648 字节
    Redo Buffers                   7139328 字节
    自动实例已创建

    内存脚本的内容:
    {
    # set the until clause
    set until  scn 1084809;
    # restore the controlfile
    restore clone controlfile;
    # mount the controlfile
    sql clone 'alter database mount clone database';
    # archive current online log for tspitr to a resent until time
    sql 'alter system archive log current';
    # avoid unnecessary autobackups for structural changes during TSPITR
    sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
    }
    正在执行内存脚本

    正在执行命令: SET until clause

    启动 restore 于 10-1月 -11
    分配的通道: ORA_AUX_DISK_1
    通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

    通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
    通道 ORA_AUX_DISK_1: 正在复原控制文件
    通道 ORA_AUX_DISK_1: 正在读取备份段 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA
    \ORCL\BACKUPSET\2011_01_10\O1_MF_NCSNF_TAG20110110T173638_6LONTCWS_.BKP
    通道 ORA_AUX_DISK_1: 已恢复备份段 1
    段句柄 = F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_01_10\
    O1_MF_NCSNF_TAG20110110T173638_6LONTCWS_.BKP 标记 = TAG20110110T173638
    通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:02
    输出文件名=E:\AUXI\CNTRL_TSPITR_ORCL_NDLZ.F
    完成 restore 于 10-1月 -11

    sql 语句: alter database mount clone database

    sql 语句: alter system archive log current

    sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
    释放的通道: ORA_DISK_1
    释放的通道: ORA_AUX_DISK_1

    内存脚本的内容:
    {
    # generated tablespace point-in-time recovery script
    # set the until clause
    set until  scn 1084809;
    plsql <<<-- tspitr_2
    declare
      sqlstatement       varchar2(512);
      offline_not_needed exception;
      pragma exception_init(offline_not_needed, -01539);
    begin
      sqlstatement := 'alter tablespace '||  'USER02' ||' offline for recover';
      krmicd.writeMsg(6162, sqlstatement);
      krmicd.execSql(sqlstatement);
    exception
      when offline_not_needed then
        null;
    end; >>>;
    # set an omf destination filename for restore
    set newname for clone datafile  1 to new;
    # set an omf destination filename for restore
    set newname for clone datafile  2 to new;
    # set an omf destination tempfile
    set newname for clone tempfile  1 to new;
    # set a destination filename for restore
    set newname for datafile  6 to
     "E:\ORADATA\ORCL\USER02.DBF";
    # rename all tempfiles
    switch clone tempfile all;
    # restore the tablespaces in the recovery set plus the auxilliary tablespaces
    restore clone datafile  1, 2, 6;
    switch clone datafile all;
    #online the datafiles restored or flipped
    sql clone "alter database datafile  1 online";
    #online the datafiles restored or flipped
    sql clone "alter database datafile  2 online";
    #online the datafiles restored or flipped
    sql clone "alter database datafile  6 online";
    # make the controlfile point at the restored datafiles, then recover them
    recover clone database tablespace  "USER02", "SYSTEM", "UNDOTBS1" delete archive
    log;
    alter clone database open resetlogs;
    # PLUG HERE the creation of a temporary tablespace if export fails due to lack
    # of temporary space.
    # For example in Unix these two lines would do that:
    #sql clone "create tablespace aux_tspitr_tmp
    #           datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
    }
    正在执行内存脚本

    正在执行命令: SET until clause

    sql 语句: alter tablespace USER02 offline for recover

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    临时文件 1 在控制文件中已重命名为 E:\AUXI\TSPITR_O\DATAFILE\O1_MF_TEMP_%U_.TMP

    启动 restore 于 10-1月 -11
    分配的通道: ORA_AUX_DISK_1
    通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

    通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
    通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
    正将数据文件00001恢复到E:\AUXI\TSPITR_O\DATAFILE\O1_MF_SYSTEM_%U_.DBF
    正将数据文件00002恢复到E:\AUXI\TSPITR_O\DATAFILE\O1_MF_UNDOTBS1_%U_.DBF
    正将数据文件00006恢复到E:\ORADATA\ORCL\USER02.DBF
    通道 ORA_AUX_DISK_1: 正在读取备份段 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA
    \ORCL\BACKUPSET\2011_01_10\O1_MF_NNNDF_TAG20110110T173638_6LONS77T_.BKP
    通道 ORA_AUX_DISK_1: 已恢复备份段 1
    段句柄 = F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_01_10\
    O1_MF_NNNDF_TAG20110110T173638_6LONS77T_.BKP 标记 = TAG20110110T173638
    通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:25
    完成 restore 于 10-1月 -11

    数据文件 1 已转换成数据文件副本
    输入数据文件副本 recid=5 stamp=740079991 文件名=E:\AUXI\TSPITR_O\DATAFILE\O1_MF_
    SYSTEM_6LOOBXTC_.DBF
    数据文件 2 已转换成数据文件副本
    输入数据文件副本 recid=6 stamp=740079991 文件名=E:\AUXI\TSPITR_O\DATAFILE\O1_MF_
    UNDOTBS1_6LOOBXVT_.DBF

    sql 语句: alter database datafile  1 online

    sql 语句: alter database datafile  2 online

    sql 语句: alter database datafile  6 online

    启动 recover 于 10-1月 -11
    使用通道 ORA_AUX_DISK_1

    正在开始介质的恢复

    存档日志线程 1 序列 21 已作为文件 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
    RCL\ARCHIVELOG\2011_01_10\O1_MF_1_21_6LONXM3F_.ARC 存在于磁盘上
    存档日志线程 1 序列 22 已作为文件 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
    RCL\ARCHIVELOG\2011_01_10\O1_MF_1_22_6LONYMB8_.ARC 存在于磁盘上
    存档日志线程 1 序列 23 已作为文件 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
    RCL\ARCHIVELOG\2011_01_10\O1_MF_1_23_6LOOBTH4_.ARC 存在于磁盘上
    通道 ORA_AUX_DISK_1: 正在启动到默认目标的存档日志恢复
    通道 ORA_AUX_DISK_1: 正在恢复存档日志
    存档日志线程 =1 序列=20
    通道 ORA_AUX_DISK_1: 正在读取备份段 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA
    \ORCL\BACKUPSET\2011_01_10\O1_MF_ANNNN_TAG20110110T173720_6LONTKLK_.BKP
    通道 ORA_AUX_DISK_1: 已恢复备份段 1
    段句柄 = F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_01_10\
    O1_MF_ANNNN_TAG20110110T173720_6LONTKLK_.BKP 标记 = TAG20110110T173720
    通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:02
    存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00020_0739204422.001 线程
     =1 序列 =20
    通道 clone_default: 正在删除存档日志
    存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00020_0739204422.001 记录
     ID=19 时间戳 =740079994
    存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\201
    1_01_10\O1_MF_1_21_6LONXM3F_.ARC 线程 =1 序列 =21
    存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\201
    1_01_10\O1_MF_1_22_6LONYMB8_.ARC 线程 =1 序列 =22
    存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\201
    1_01_10\O1_MF_1_23_6LOOBTH4_.ARC 线程 =1 序列 =23
    介质恢复完成, 用时: 00:00:04
    完成 recover 于 10-1月 -11

    数据库已打开

    内存脚本的内容:
    {
    # export the tablespaces in the recovery set
    host 'exp userid =\"/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0
    =oraclendlz)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'
    ORACLE_SID=ndlz^'))(CONNECT_DATA=(SID=ndlz))) as sysdba\" point_in_time_recover=
    y tablespaces=
     USER02 file=
    tspitr_a.dmp';
    # shutdown clone before import
    shutdown clone immediate
    # import the tablespaces in the recovery set
    host 'imp userid =\"/@ as sysdba\" point_in_time_recover=y file=
    tspitr_a.dmp';
    # online/offline the tablespace imported
    sql "alter tablespace  USER02 online";
    sql "alter tablespace  USER02 offline";
    # enable autobackups in case user does open resetlogs from RMAN after TSPITR
    sql 'begin dbms_backup_restore.AutoBackupFlag(TRUE); end;';
    }
    正在执行内存脚本


    Export: Release 10.2.0.1.0 - Production on 星期一 1月 10 17:46:48 2011

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.


    连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    注: 将不导出表数据 (行)

    即将导出表空间时间点恢复对象...
    对于表空间 USER02...
    . 正在导出簇定义
    . 正在导出表定义
    . . 正在导出表                            TEST
    . 正在导出引用完整性约束条件
    . 正在导出触发器
    . 终止时间点恢复
    成功终止导出, 没有出现警告。
    主机命令完成

    数据库已关闭
    数据库已卸载
    Oracle 实例已关闭


    Import: Release 10.2.0.1.0 - Production on 星期一 1月 10 17:47:05 2011

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.


    连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options

    经由常规路径由 EXPORT:V10.02.01 创建的导出文件
    即将导入表空间时间点恢复对象...
    已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
    . 正在将 SYS 的对象导入到 SYS
    . . 正在导入表                          "TEST"
    成功终止导入, 没有出现警告。
    主机命令完成

    sql 语句: alter tablespace  USER02 online

    sql 语句: alter tablespace  USER02 offline

    sql 语句: begin dbms_backup_restore.AutoBackupFlag(TRUE); end;

    删除自动实例
    自动实例已删除
    已删除辅助实例文件 E:\AUXI\CNTRL_TSPITR_ORCL_NDLZ.F
    已删除辅助实例文件 E:\AUXI\TSPITR_O\DATAFILE\O1_MF_SYSTEM_6LOOBXTC_.DBF
    已删除辅助实例文件 E:\AUXI\TSPITR_O\DATAFILE\O1_MF_UNDOTBS1_6LOOBXVT_.DBF
    已删除辅助实例文件 E:\AUXI\TSPITR_O\DATAFILE\O1_MF_TEMP_6LOOD3YR_.TMP
    已删除辅助实例文件 E:\AUXI\TSPITR_O\ONLINELOG\O1_MF_1_6LOOD02X_.LOG
    已删除辅助实例文件 E:\AUXI\TSPITR_O\ONLINELOG\O1_MF_2_6LOOD0X9_.LOG
    已删除辅助实例文件 E:\AUXI\TSPITR_O\ONLINELOG\O1_MF_3_6LOOD1RW_.LOG
    完成 recover 于 10-1月 -11

    6、RMAN> sql 'alter tablespace user02 online';
    sql 语句: alter tablespace user02 online
    7、SQL>select * from test;

           ID NAME
    --------- -----
            1 jason
    ok!到此为止实验已经做成功,怎么样? 很简单吧?最后别忘了备份user02表空间啊。
    RMAN>backup tablespace user02;
    启动 backup 于 10-1月 -11
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: sid=142 devtype=DISK
    通道 ORA_DISK_1: 启动全部数据文件备份集
    通道 ORA_DISK_1: 正在指定备份集中的数据文件
    输入数据文件 fno=00006 name=E:\ORADATA\ORCL\USER02.DBF
    通道 ORA_DISK_1: 正在启动段 1 于 10-1月 -11
    通道 ORA_DISK_1: 已完成段 1 于 10-1月 -11
    段句柄=F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_01_10\O1
    _MF_NNNDF_TAG20110110T180246_6LOPB65C_.BKP 标记=TAG20110110T180246 注释=NONE
    通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
    完成 backup 于 10-1月 -11



    over..................

  • 相关阅读:
    druid spring监控配置
    深入理解Java:SimpleDateFormat安全的时间格式化
    Thread.join()方法
    static 作用
    Java链接SqlServer,学生数据管理面板
    java巅峰作业
    2019.6.12Java/IO data
    Java常用类
    2019.6.5
    java求和运算窗口5.29
  • 原文地址:https://www.cnblogs.com/datalife/p/1985442.html
Copyright © 2011-2022 走看看