gdufo

           

          在歸檔模式下的基于時間點的不完全恢復

          在歸檔模式下的基于時間點的不完全恢復
          sql>shutdown immediate

          ==
            對數據進行全備份  full backup database
          ==
          sql> startup

          ==
            修改數據
            update test2 set.. 10:44:01
            drop table test1 10:45:05 ==>錯誤操作
          ==
          sql>shutdown immediate

          ==
            備份事故現場
          注意:
            在實際生產環境中,在做恢復的之前,一定要全備份目前的數據庫,即:保存現場
            因為在恢復的過程不一定是一次可以恢復到我想得到狀態。
          ==
            restore datafile
            現將之前全備份的所有數據文件(*.dbf)Copy回,不要恢復control file, redo logs等
          ==
          sql>startup mount
          sql>recover database until time '2009-11-27:10:45:01'
             Media recovery complete.
          sql>alter database open resetlogs;
              Database altered
          sql>conn test/test
          sql>select table_name from user_tables;
              TABLE_NAME
              ----------
               TEST           
               TEST1          
               TEST2    
          ==
             這里發現之前drop 掉的table test1沒有被刪除了。

             接下來又要對整個數據進行一次全備份,因為以前的歸檔日志和數據都沒有用了。
          ==     


          在歸檔模式下的基于Cancel的不完全恢復,當前在線日志損壞

          sql>shutdown immediate

          ==
            對數據進行全備份  full backup database
          ==
          sql> startup

          ==
          當前狀態
          ==
          sql> select table_name from user_tables

               TABLE_NAME
               ----------
               TEST

          sql> select * from v$log;

              GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRS
          ---------- ---------- ---------- ---------- ---------- --- ---------------- ----
                   1          1          0  104857600          1 YES UNUSED
                   2          1          0  104857600          1 YES UNUSED
                   3          1          1  104857600          1 NO  CURRENT          26-N

          sql> alter system switch logfile;
          sql> select * from v$log;

              GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRS
          ---------- ---------- ---------- ---------- ---------- --- ---------------- ----
                   1          1          2  104857600          1 NO  CURRENT          27-N
                   2          1          0  104857600          1 YES UNUSED
                   3          1          1  104857600          1 YES ACTIVE           26-N

          sql> create table test2 as select * from test;
          sql> select table_name from user_tables
          TABLE_NAME
          ----------
          TEST
          TEST2

          sql> alter system switch logfile;
          sql> select * from v$log;
              GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRS
          ---------- ---------- ---------- ---------- ---------- --- ---------------- ----
                   1          1          2  104857600          1 YES ACTIVE           27-N
                   2          1          3  104857600          1 NO  CURRENT          27-N
                   3          1          1  104857600          1 YES INACTIVE         26-N

          sql> create table test3 as select * from test;
          sql> select table_name from user_tables;
          TABLE_NAME
          -----------
          TEST
          TEST2
          TEST3

          sql> alter system switch logfile;
          sql> select * from v$log;  ==>日志正好走完一個循環
              GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRS
          ---------- ---------- ---------- ---------- ---------- --- ---------------- ----
                   1          1          2  104857600          1 YES INACTIVE         27-N
                   2          1          3  104857600          1 YES ACTIVE           27-N
                   3          1          4  104857600          1 NO  CURRENT          27-N

          sql> create table test4 as select * from test;
          sql> select table_name from user_tables;

          TABLE_NAME
          -----------
          TEST
          TEST2
          TEST3
          TEST4

          ==
            修改數據

          ==
          sql>shutdown immediate
          ==
            備份事故現場
          注意:
            在實際生產環境中,在做恢復的之前,一定要全備份目前的數據庫,即:保存現場
            因為在恢復的過程不一定是一次可以恢復到我想得到狀態。
          ==
            restore datafile
            現將之前全備份的所有數據文件(*.dbf)Copy回,不要恢復control file, redo logs等
            并模擬當前日志文件丟失,可以直接刪除
          ==
          sql>startup mount
          sql>recover database until cancel
          ORA-00279: change 220847 generated at 11/27/2009 08:28:25
          ORA-00289: suggestion : G:\ORACLE\ARC\ORCL_1_1.ARC
          ORA-00280: change 220847 for thread 1 is in sequence #1


          Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
          輸入:auto

          ORA-00279: change 221514 generated at 11/27/2009 13:29:04 needed for thread 1
          ORA-00289: suggestion : G:\ORACLE\ARC\ORCL_1_2.ARC
          ORA-00280: change 221514 for thread 1 is in sequence #2
          ORA-00278: log file 'G:\ORACLE\ARC\ORCL_1_1.ARC' no longer needed for this
          recovery


          ORA-00279: change 222100 generated at 11/27/2009 13:32:35 needed for thread 1
          ORA-00289: suggestion : G:\ORACLE\ARC\ORCL_1_3.ARC
          ORA-00280: change 222100 for thread 1 is in sequence #3
          ORA-00278: log file 'G:\ORACLE\ARC\ORCL_1_2.ARC' no longer needed for this
          recovery


          ORA-00279: change 222367 generated at 11/27/2009 13:34:18 needed for thread 1
          ORA-00289: suggestion : G:\ORACLE\ARC\ORCL_1_4.ARC
          ORA-00280: change 222367 for thread 1 is in sequence #4
          ORA-00278: log file 'G:\ORACLE\ARC\ORCL_1_3.ARC' no longer needed for this
          recovery


          ORA-00308: cannot open archived log 'G:\ORACLE\ARC\ORCL_1_4.ARC'
          ORA-27041: unable to open file
          OSD-04002: unable to open file
          O/S-Error: (OS 2) 靠靠靠靠靠

          SQL> recover database until cancel #再次輸入
          ORA-00279: change 222367 generated at 11/27/2009 13:34:18 needed for thread 1
          ORA-00289: suggestion : G:\ORACLE\ARC\ORCL_1_4.ARC
          ORA-00280: change 222367 for thread 1 is in sequence #4


          Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
          cancel #選Cancel因為此處ORCL_1_4.ARC沒有歸檔
          Media recovery cancelled.
          SQL> alter database open resetlogs; #一定要 open resetlogs 重新生成log文件

          Database altered.


          sql>conn test/test
          sql>select table_name from user_tables;
              TABLE_NAME
              ----------
               TEST           
               TEST1          
               TEST2   
               TEST3
          ==
             這里發現在恢復前當前日志的操作沒有辦法救回。TEST4沒有辦法找回了。

             接下來又要對整個數據進行一次全備份,因為以前的歸檔日志和數據都沒有用了。
          ==     

          posted on 2009-12-01 14:53 gdufo 閱讀(510) 評論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宣城市| 光泽县| 永定县| 新河县| 桂阳县| 林周县| 乌兰县| 白河县| 马山县| 太谷县| 大同市| 平塘县| 四子王旗| 呼图壁县| 百色市| 稷山县| 长岛县| 察雅县| 五常市| 连城县| 武隆县| 会宁县| 平山县| 星子县| 高青县| 平果县| 灌阳县| 会东县| 莎车县| 通道| 尼勒克县| 樟树市| 延吉市| 吉林省| 垣曲县| 石棉县| 抚顺市| 定州市| 琼海市| 东海县| 塔城市|