zoukankan      html  css  js  c++  java
  • 6. 用户管理的不完全恢复

    不完全恢复只适用于ARCHIVELOG 模式。

    6.1 不完全恢复简介

    6.1.1 不完全恢复分类

    1. 基于时间恢复

    将数据库恢复到备份点与失败点之间某个特定时间点的状态。主要适用于以下情况:

    • 误删除表
    • 误截断表
    • 提交了错误数据

    2. 基于取消恢复

    将数据库恢复到备份点与失败点之间某个日志序列号之前的状态。主要适用于以下情况:

    • 归档日志丢失导致完全恢复失败
    • 丢失了数据文件和未归档的重做日志

    3. 基于SCN 恢复

    将数据库恢复到备份点与失败点之间特定SCN 值的状态。主要适用于以下情况:

    • 分布式数据库的不完全恢复

    4. 基于备份控制文件恢复

    使用备份控制文件将数据库恢复到备份点与失败点之间某个时刻的状态。主要适用于以下情况:

    • 表空间被意外删除。
    • 所有控制文件全部损坏。

    6.1.2 不完全恢复命令

    1. RECOVER DATABASE UNTIL TIME

    用于执行基于时间的不完全恢复。日期格式:YYYY-MM-DD HH24:MI:SS。时间点之间的所有归档日志和重做日志全部存在。

    2. RECOVER DATABASE UNTIL CHANGE

    用于执行基于SCN 的不完全恢复。SCN 之间的所有归档日志和重做日志全部存在。

    3. RECOVER DATABASE UNTIL CANCEL

    用于执行基于取消的不完全恢复。如果发现所需的归档日志和重做日志不存在,那么指定CANCEL 选项取消恢复。

    4. RECOVER DATABASE ...USING BACKUP CONTROLFILE

    用于执行基于备份控制文件的不完全恢复。通过查看ALERT 文件可以确定误操作的时间点和SCN 值,然后可以根据时间点或SCN 值进行恢复。

    6.2 基于时间恢复

    (1) 关闭数据库。

    (2) 装载数据库。

    (3) 复制所有数据文件备份。

    (4) 执行RECOVER DATABASE UNTIL TIME 命令。

    (5) 以RESETLOGS 方式打开数据库,并检查恢复结果。

    (6) 备份数据库所有数据文件和控制文件,并归档当前日志组。


    SQL> conn / as sysdba
    已连接到空闲例程。
    SQL> startup
    ORACLE 例程已经启动。

    Total System Global Area  167772160 bytes                                      
    Fixed Size                  1247900 bytes                                      
    Variable Size              67110244 bytes                                      
    Database Buffers           96468992 bytes                                      
    Redo Buffers                2945024 bytes                                      
    数据库装载完毕。
    数据库已经打开。
    SQL> create table test_recover_time(col1 int) tablespace users;

    表已创建。

    SQL> insert into test_recover_time values(1);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_time values(2);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_time values(3);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_time values(4);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_time values(5);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_time values(6);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

    TO_CHAR(SYSDATE,'YY                                                            
    -------------------                                                            
    2008-09-14 16:56:04                                                            

    SQL> truncate table test_recover_time;

    表被截断。
    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup force mount
    ORACLE 例程已经启动。

    Total System Global Area  167772160 bytes                                      
    Fixed Size                  1247900 bytes                                      
    Variable Size              67110244 bytes                                      
    Database Buffers           96468992 bytes                                      
    Redo Buffers                2945024 bytes                                      
    数据库装载完毕。
    SQL> host copy d:\0914\SYSAUX01.DBF d:\demo

    SQL> host copy d:\0914\system01.dbf d:\demo

    SQL> host copy d:\0914\UNDOTBS01.DBF d:\demo

    SQL> host copy d:\0914\users01.dbf d:\demo

    SQL> desc v$recover_file;
    名称                                      是否为空? 类型
    ----------------------------------------- -------- ----------------------------
    FILE#                                              NUMBER
    ONLINE                                             VARCHAR2(7)
    ONLINE_STATUS                                      VARCHAR2(7)
    ERROR                                              VARCHAR2(18)
    CHANGE#                                            NUMBER
    TIME                                               DATE

    SQL> select file#,to_char(time,'yyyy-mm-dd hh24:mi:ss') from v$recover_file;

         FILE# TO_CHAR(TIME,'YYYY-                                                 
    ---------- -------------------                                                 
             1 2008-09-14 16:24:02                                                 
             2 2008-09-14 16:24:02                                                 
             3 2008-09-14 16:24:02                                                 
             4 2008-09-14 16:24:02                                                 

    SQL> recover database until time '2008-09-14 16:56:04'
    ORA-00279: 更改 952594 (在 09/14/2008 16:24:02 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\48_1_664374623.LOG
    ORA-00280: 更改 952594 (用于线程 1) 在序列 #48 中

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
    auto
    ORA-00279: 更改 952780 (在 09/14/2008 16:47:08 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\1_1_665426828.LOG
    ORA-00280: 更改 952780 (用于线程 1) 在序列 #1 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\48_1_664374623.LOG'

    ORA-00279: 更改 953350 (在 09/14/2008 16:53:08 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\2_1_665426828.LOG
    ORA-00280: 更改 953350 (用于线程 1) 在序列 #2 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\1_1_665426828.LOG'

    ORA-00279: 更改 953361 (在 09/14/2008 16:53:34 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\3_1_665426828.LOG
    ORA-00280: 更改 953361 (用于线程 1) 在序列 #3 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\2_1_665426828.LOG'

    ORA-00279: 更改 953368 (在 09/14/2008 16:53:48 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\4_1_665426828.LOG
    ORA-00280: 更改 953368 (用于线程 1) 在序列 #4 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\3_1_665426828.LOG'

    已应用的日志。
    完成介质恢复。
    SQL> alter database open resetlogs;

    数据库已更改。

    SQL> select * from test_recover_time;

          COL1                                                                     
    ----------                                                                     
             1                                                                     
             2                                                                     
             3                                                                     
             4                                                                     
             5                                                                     
             6                                                                     

    已选择6行。
    SQL> archive log list
    数据库日志模式            存档模式
    自动存档             启用
    存档终点            d:\demo\archive
    最早的联机日志序列     1
    下一个存档日志序列   1
    当前日志序列           1
    SQL> select name from v$datafile;

    NAME                                                                           
    --------------------------------------------------------------------------------
    D:\DEMO\SYSTEM01.DBF                                                           
    D:\DEMO\UNDOTBS01.DBF                                                          
    D:\DEMO\SYSAUX01.DBF                                                           
    D:\DEMO\USERS01.DBF                                                            

    SQL> alter database begin backup;

    数据库已更改。

    SQL> host copy D:\DEMO\SYSTEM01.DBF d:\backup

    SQL> host copy D:\DEMO\UNDOTBS01.DBF d:\backup

    SQL> host copy D:\DEMO\SYSAUX01.DBF d:\backup

    SQL> host copy D:\DEMO\USERS01.DBF d:\backup

    SQL> alter database end backup;

    数据库已更改。

    SQL> alter database backup controlfile to 'd:\backup\demo.ctl' reuse;

    数据库已更改。

    SQL> alter system archive log current;

    系统已更改。

    6.3 基于SCN 恢复

    (1) 关闭数据库。

    (2) 装载数据库。

    (3) 复制所有数据文件备份。

    (4) 执行RECOVER DATABASE UNTIL CHANGE 命令。

    (5) 以RESETLOGS 方式打开数据库,并检查恢复结果。

    (6) 备份数据库所有数据文件和控制文件,并归档当前日志组。

    SQL> conn / as sysdba
    已连接。
    SQL> create table test_recover_change(col int) tablespace users;

    表已创建。
    SQL> insert into test_recover_change values(1);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。
    SQL> insert into test_recover_change values(2);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_change values(3);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL>  alter system switch logfile;

    系统已更改。

    SQL>  insert into test_recover_change values(4);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_change values(50);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> select current_scn from v$database;

    CURRENT_SCN                                                                    
    -----------                                                                    
         954557                                                                    

    SQL> drop table test_recover_change;

    表已删除。

    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup mount
    ORACLE 例程已经启动。

    Total System Global Area  167772160 bytes                                      
    Fixed Size                  1247900 bytes                                      
    Variable Size              67110244 bytes                                      
    Database Buffers           96468992 bytes                                      
    Redo Buffers                2945024 bytes                                      
    数据库装载完毕。
    SQL> host copy D:\backup\SYSAUX01.DBF d:\demo

    SQL> host copy D:\backup\system01.dbf d:\demo

    SQL> host copy D:\backup\UNDOTBS01.DBF d:\demo

    SQL> host copy D:\backup\users01.dbf d:\demo

    SQL> desc v$recover_file;
    名称                                      是否为空? 类型
    ----------------------------------------- -------- ----------------------------
    FILE#                                              NUMBER
    ONLINE                                             VARCHAR2(7)
    ONLINE_STATUS                                      VARCHAR2(7)
    ERROR                                              VARCHAR2(18)
    CHANGE#                                            NUMBER
    TIME                                               DATE

    SQL> select file#,change# from v$recover_file;

         FILE#    CHANGE#                                                          
    ---------- ----------                                                          
             1     953716                                                          
             2     953716                                                          
             3     953716                                                          
             4     953716                                                          

    SQL> recover database until change 954557
    ORA-00279: 更改 953716 (在 09/14/2008 17:09:26 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\1_1_665427937.LOG
    ORA-00280: 更改 953716 (用于线程 1) 在序列 #1 中

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
    auto
    ORA-00279: 更改 953833 (在 09/14/2008 17:14:27 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\2_1_665427937.LOG
    ORA-00280: 更改 953833 (用于线程 1) 在序列 #2 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\1_1_665427937.LOG'

    ORA-00279: 更改 954476 (在 09/14/2008 17:29:22 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\3_1_665427937.LOG
    ORA-00280: 更改 954476 (用于线程 1) 在序列 #3 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\2_1_665427937.LOG'

    ORA-00279: 更改 954488 (在 09/14/2008 17:29:51 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\4_1_665427937.LOG
    ORA-00280: 更改 954488 (用于线程 1) 在序列 #4 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\3_1_665427937.LOG'

    已应用的日志。
    完成介质恢复。
    SQL> alter database open resetlogs;

    数据库已更改。

    SQL> select * from test_recover_change;

           COL                                                                     
    ----------                                                                     
             1                                                                     
             2                                                                     
             3                                                                     
             4                                                                     
            50                                                                     

    SQL> select name from v$datafile;

    NAME                                                                           
    --------------------------------------------------------------------------------
    D:\DEMO\SYSTEM01.DBF                                                           
    D:\DEMO\UNDOTBS01.DBF                                                          
    D:\DEMO\SYSAUX01.DBF                                                           
    D:\DEMO\USERS01.DBF                                                            

    SQL> alter database begin backup;

    数据库已更改。

    SQL> host copy D:\DEMO\SYSTEM01.DBF D:\backup

    SQL> host copy D:\DEMO\UNDOTBS01.DBF  D:\backup

    SQL> host copy D:\DEMO\SYSAUX01.DBF  D:\backup

    SQL>  host copy D:\DEMO\USERS01.DBF d:\backup

    SQL> alter database end backup;

    数据库已更改。

    SQL> alter database backup controlfile to 'D:\backup\demo.ctl' reuse;

    数据库已更改。

    SQL> alter system archive log current;

    系统已更改。

    6.4 基于取消恢复

    (1) 关闭数据库。

    (2) 装载数据库。

    (3) 提制所有数据文件备份。

    (4) 执行RECOVER DATABASE UNTIL CANCEL 命令。

    (5) 以RESETLOGS 方式打开数据库。

    (6) 备份所有数据文件和控制文件。

    SQL> conn / as sysdba
    已连接。
    SQL> create table test_recover_cancel(col int) tablespace users;

    表已创建。

    SQL> insert into test_recover_cancel values(1);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_cancel values(2);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_cancel values(3);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_cancel values(4);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_cancel values(4);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> insert into test_recover_cancel values(6);

    已创建 1 行。

    SQL> commit;

    提交完成。

    SQL> alter system switch logfile;

    系统已更改。

    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> host del d:\demo\archive\5_1_665430886.LOG

    SQL> host del d:\demo\users01.dbf

    SQL> startup mount;
    ORACLE 例程已经启动。

    Total System Global Area  167772160 bytes                                      
    Fixed Size                  1247900 bytes                                      
    Variable Size              67110244 bytes                                      
    Database Buffers           96468992 bytes                                      
    Redo Buffers                2945024 bytes                                      
    数据库装载完毕。
    SQL> alter database open;
    alter database open
    *
    第 1 行出现错误:
    ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
    ORA-01110: 数据文件 4: 'D:\DEMO\USERS01.DBF'

    SQL> select file# from v$recover_file;

         FILE#                                                                     
    ----------                                                                     
             4       

    SQL> host copy d:\backup\users01.dbf d:\demo

    SQL> recover datafile 4;
    ORA-00279: 更改 954874 (在 09/14/2008 18:00:00 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\1_1_665430886.LOG
    ORA-00280: 更改 954874 (用于线程 1) 在序列 #1 中

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
    auto
    ORA-00279: 更改 955132 (在 09/14/2008 18:10:18 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\2_1_665430886.LOG
    ORA-00280: 更改 955132 (用于线程 1) 在序列 #2 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\1_1_665430886.LOG'

    ORA-00279: 更改 955761 (在 09/14/2008 18:25:42 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\3_1_665430886.LOG
    ORA-00280: 更改 955761 (用于线程 1) 在序列 #3 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\2_1_665430886.LOG'

    ORA-00279: 更改 955767 (在 09/14/2008 18:25:53 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\4_1_665430886.LOG
    ORA-00280: 更改 955767 (用于线程 1) 在序列 #4 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\3_1_665430886.LOG'

    ORA-00279: 更改 955772 (在 09/14/2008 18:26:02 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\5_1_665430886.LOG
    ORA-00280: 更改 955772 (用于线程 1) 在序列 #5 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\4_1_665430886.LOG'

    ORA-00308: 无法打开归档日志 'D:\DEMO\ARCHIVE\5_1_665430886.LOG'
    ORA-27041: 无法打开文件
    OSD-04002: 无法打开文件
    O/S-Error: (OS 2) 系统找不到指定的文件。                                   

    SQL> select status from v$instance;

    STATUS                                                                         
    ------------                                                                   
    MOUNTED                                                                        

    SQL> host copy D:\backup\SYSAUX01.DBF d:\demo

    SQL> host copy d:\backup\system01.dbf d:\demo

    SQL> host copy D:\backup\UNDOTBS01.DBF d:\demo

    SQL> host copy D:\backup\users01.dbf d:\demo

    SQL> select file#,change# from v$recover_file;

         FILE#    CHANGE#                                                          
    ---------- ----------                                                          
             1     954874                                                          
             2     954874                                                          
             3     954874                                                          
             4     954874                                                          

    SQL> desc v$log_history
    名称                                      是否为空? 类型
    ----------------------------------------- -------- ----------------------------
    RECID                                              NUMBER
    STAMP                                              NUMBER
    THREAD#                                            NUMBER
    SEQUENCE#                                          NUMBER
    FIRST_CHANGE#                                      NUMBER
    FIRST_TIME                                         DATE
    NEXT_CHANGE#                                       NUMBER
    RESETLOGS_CHANGE#                                  NUMBER
    RESETLOGS_TIME                                     DATE

    SQL> select max(first_change#) from v$log_history where sequence#=5;

    MAX(FIRST_CHANGE#)                                                             
    ------------------                                                             
                955772                                                             

    SQL> recover database until cancel
    ORA-00279: 更改 954874 (在 09/14/2008 18:00:00 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\1_1_665430886.LOG
    ORA-00280: 更改 954874 (用于线程 1) 在序列 #1 中

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

    ORA-00279: 更改 955132 (在 09/14/2008 18:10:18 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\2_1_665430886.LOG
    ORA-00280: 更改 955132 (用于线程 1) 在序列 #2 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\1_1_665430886.LOG'

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

    ORA-00279: 更改 955761 (在 09/14/2008 18:25:42 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\3_1_665430886.LOG
    ORA-00280: 更改 955761 (用于线程 1) 在序列 #3 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\2_1_665430886.LOG'

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

    ORA-00279: 更改 955767 (在 09/14/2008 18:25:53 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\4_1_665430886.LOG
    ORA-00280: 更改 955767 (用于线程 1) 在序列 #4 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\3_1_665430886.LOG'

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

    ORA-00279: 更改 955772 (在 09/14/2008 18:26:02 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\5_1_665430886.LOG
    ORA-00280: 更改 955772 (用于线程 1) 在序列 #5 中
    ORA-00278: 此恢复不再需要日志文件 'D:\DEMO\ARCHIVE\4_1_665430886.LOG'

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
    cancel
    介质恢复已取消。
    SQL> alter database open resetlogs;

    数据库已更改。

    SQL> select * from test_recover_cancel;

           COL                                                                     
    ----------                                                                     
             1                                                                     
             2                                                                     
             3                                                                     

    SQL> select name from v$datafile;

    NAME                                                                           
    --------------------------------------------------------------------------------
    D:\DEMO\SYSTEM01.DBF                                                           
    D:\DEMO\UNDOTBS01.DBF                                                          
    D:\DEMO\SYSAUX01.DBF                                                           
    D:\DEMO\USERS01.DBF                                                            

    SQL> alter database begin backup;

    数据库已更改。

    SQL> host copy D:\DEMO\SYSTEM01.DBF d:\backup

    SQL> host copy D:\DEMO\UNDOTBS01.DBF d:\backup

    SQL> host copy D:\DEMO\SYSAUX01.DBF d:\backup

    SQL> host copy D:\DEMO\USERS01.DBF d:\backup

    SQL> alter database end backup;

    数据库已更改。

    SQL> alter database backup controlfile to 'd:\backup\demo.ctl' reuse;

    数据库已更改。

    SQL> alter system archive log current;

    系统已更改。

    6.5 基于备份控制文件恢复

    (1) 关闭数据库。

    (2) 复制所有数据文件和控制文件备份。

    (3) 装载数据库。

    (4) 执行RECOVER DATABASE ... USING BACKUP CONTROLFILE 命令。

    (5) 以RESETLOGS 方式打开数据库。

    (6) 备份数据库所有数据文件和控制文件。

    SQL> conn / as sysdba
    已连接。                                                                      

    SQL> select * from test;

           COL                                                                     
    ----------                                                                     
             3                                                                     

    SQL> drop tablespace user01 including contents;

    表空间已删除。

    SQL> select * from test;
    select * from test
                  *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在

    SQL> show parameter background_dump_dest

    NAME                                 TYPE        VALUE                         
    ------------------------------------ ----------- ------------------------------
    background_dump_dest                 string      D:\ORACLE\PRODUCT\10.2.0\ADMIN
                                                     \DEMO\BDUMP                   

    Sun Sep 14 19:22:50 2008
    drop tablespace user01 including contents
    Sun Sep 14 19:22:53 2008
    Completed: drop tablespace user01 including contents
     

    SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。


    SQL> host copy D:\backup\SYSAUX01.DBF d:\demo

    SQL>  host copy d:\backup\system01.dbf d:\demo

    SQL> host copy d:\backup\UNDOTBS01.DBF d:\demo

    SQL> host copy d:\backup\users01.dbf d:\demo

    SQL> host copy d:\backup\USER01.DBF d:\demo

    SQL>  host copy d:\backup\demo.ctl d:\demo\CONTROL01.CTL

    SQL>  host copy d:\backup\demo.ctl c:\demo\CONTROL02.CTL

    SQL> startup mount
    ORACLE 例程已经启动。

    Total System Global Area  167772160 bytes                                      
    Fixed Size                  1247900 bytes                                      
    Variable Size              67110244 bytes                                      
    Database Buffers           96468992 bytes                                      
    Redo Buffers                2945024 bytes                                      
    数据库装载完毕。
    SQL> select file#,to_char(time,'yyyy-mm-dd hh24:mi:ss') from v$recover_file;

         FILE# TO_CHAR(TIME,'YYYY-                                                 
    ---------- -------------------                                                 
             1 2008-09-14 19:15:31                                                 
             2 2008-09-14 19:15:31                                                 
             3 2008-09-14 19:15:31                                                 
             4 2008-09-14 19:15:31                                                 
             5 2008-09-14 19:15:31                                                 

    SQL> recover database until time '2008-09-14 19:22:53' using backup controlfile;
    ORA-00279: 更改 981545 (在 09/14/2008 19:15:31 生成) 对于线程 1 是必需的
    ORA-00289: 建议: D:\DEMO\ARCHIVE\6_1_665433709.LOG
    ORA-00280: 更改 981545 (用于线程 1) 在序列 #6 中

    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
    auto
    已应用的日志。
    完成介质恢复。
    SQL> alter database open resetlogs;

    数据库已更改。

    SQL> select * from test;

           COL                                                                     
    ----------                                                                     
             3                                                                     

    SQL> select name from v$datafile;

    NAME                                                                           
    --------------------------------------------------------------------------------
    D:\DEMO\SYSTEM01.DBF                                                           
    D:\DEMO\UNDOTBS01.DBF                                                          
    D:\DEMO\SYSAUX01.DBF                                                           
    D:\DEMO\USERS01.DBF                                                            
    D:\DEMO\USER01.DBF                                                             

    SQL> alter database begin backup;

    数据库已更改。

    SQL> host copy D:\DEMO\SYSTEM01.DBF d:\backup

    SQL> host copy D:\DEMO\UNDOTBS01.DBF d:\backup

    SQL> host copy D:\DEMO\SYSAUX01.DBF d:\backup

    SQL> host copy D:\DEMO\USERS01.DBF d:\backup

    SQL> host copy D:\DEMO\USER01.DBF d:\backup

    SQL> alter database end backup;

    数据库已更改。

    SQL> alter database backup controlfile to 'd:\backup\demo.ctl';
    alter database backup controlfile to 'd:\backup\demo.ctl'
    *
    第 1 行出现错误:
    ORA-01580: 创建控制备份文件 d:\backup\demo.ctl 时出错
    ORA-27038: 所创建的文件已存在
    OSD-04010: 指定了 <create> 选项, 但文件已经存在

    SQL> alter database backup controlfile to 'd:\backup\demo.ctl' reuse;

    数据库已更改。

    SQL> alter system archive log current;

    系统已更改。

    E-MAIL:yiwuya@hotmail.com
    MSN:yiwuya@hotmail.com
    QQ:304899972
    纺织软件
  • 相关阅读:
    OpenStack对象存储——Swift
    使用ssh对服务器进行登录
    在MacOs上配置Hadoop和Spark环境
    DOTA与面向对象的编程思想(3)——英雄的生命周期
    DOTA与面向对象的编程思想(2)——三层架构,让游戏跑起来
    DOTA与面向对象编程思想(1)——分述DOTA和面向对象思想
    再谈面向对象
    linux C 列出目录中的文件列表 包含文件的相关信息
    在Ubuntu 64位下搭建samba,实现linux与windows之间的资源共享,配置实现Ubuntu启动后samba服务与ssh服务开机自动启动
    LINUX下使用elasticsearch-jdbc工具实现MySQL同步到ElasticSearch 以及linux 64位centos系统安装jdk1.8
  • 原文地址:https://www.cnblogs.com/yiwuya/p/1291553.html
Copyright © 2011-2022 走看看