backupdatabaseplusarchivelogdeleteallinput;insertintotestselect*fromtest;SQL>altersystem" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

ORACLE跨越時間點的恢復

系統 2726 0

在oracle10g之前使用resetlogs打開數據庫之后,之前的的備份就不能用于恢復了。即不能進行跨resetlogs時間點的恢復。所以要求執行完之后馬上進行全庫備份。

Oracle10g以后允許跨越resetlogs時間點進行完全或者不完全恢復。實驗如下:

  1. 執行全庫備份。

    RMAN> backup database plus archivelog delete all input;

    insert into test select * from test;

    SQL> alter system switch logfile;

    SQL> commit;

    Commit complete.

    SQL> alter system switch logfile;

    System altered.

    SQL> truncate table test;

    Table truncated.

    SQL> alter system switch logfile;

    System altered.

    SQL> select * from v$log_history;

    SQL> select recid,stamp,sequence#,first_change#,first_time,next_change# from v$log_history

    2 where recid >80;

    RECIDSTAMP FIRST_CHANGE# FIRST_TIME NEXT_CHANGE#

    ---------- ---------- ------------- ------------ ------------

    81 856723148 2130643 27-AUG-14 2130889

    82 856752323 2130889 27-AUG-14 2155374

    83 856753004 2155375 28-AUG-14 2175380

    84 856753636 2175380 28-AUG-14 2176030

    85 856754916 2176030 28-AUG-14 2177334

    86 856754945 2177334 28-AUG-14 2177347

    87 856755046 2177347 28-AUG-14 2178414

    88 856755142 2178414 28-AUG-14 2178471

    89 856755199 2178471 28-AUG-14 2178508

    90 856755243 2178508 28-AUG-14 2178543

    91 856755424 2178543 28-AUG-14 2178823

    RECIDSTAMP FIRST_CHANGE# FIRST_TIME NEXT_CHANGE#

    ---------- ---------- ------------- ------------ ------------

    92 856755456 2178823 28-AUG-14 2178836

    93 856755483 2178836 28-AUG-14 2178940

    13 rows selected.

  2. 關閉數據庫、刪除數據模擬故障

    刪除之后,執行如下

    RMAN> startup mount;

    Oracle instance started

    database mounted

    Total System Global Area 599785472 bytes

    Fixed Size 2022600 bytes

    Variable Size 268436280 bytes

    Database Buffers 322961408 bytes

    Redo Buffers 6365184 bytes

    RMAN> run{

    set until sequence 12 thread 1;

    restore database;

    recover database;

    }

    這里判斷具體到那個sequence,當前查詢如下,歷史查看v$log_history的sequence#:

    Sql>archive log list;

    如果出現這個錯誤:

    SQL> recover database until cancel;

    ORA-00283: recovery session canceled due to errors

    ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

    SQL> recover database BACKUP CONTROLFILE

    ORA-00905: missing keyword

    解決:

    recover database using backup controlfile until cancel;

    RMAN> alter database open resetlogs;

    查看序號是否復位:

    SQL> archive log list;

    Database log mode Archive Mode

    Automatic archival Enabled

    Archive destination USE_DB_RECOVERY_FILE_DEST

    Oldest online log sequence 0

    Next log sequence to archive 1

    Current log sequence 1

    SQL> create conn xzsp create tt able tt as select * from dba_users;

    Table created.

    SQL> alter system switch logfile;

    System altered.

    SQL> select count(*) from tt;

    COUNT(*)

    ----------

    26

    SQL> inert in sert into tt select * from tt;

    26 rows created.

    SQL> /

    52 rows created.

    SQL> /

    104 rows created.

    SQL> commit

    2 ;

    Commit complete.

    SQL> alter system switch logfile;

    System altered.

    SQL> select recid,stamp,first_change#,first_time,next_change# from v$log_history;

    RECID STAMP SEQUENCE# FIRST_CHANGE# FIRST_TIME NEXT_CHANGE#

    ---------- ---------- ---------- ------------- ------------ ------------

    100 856759449 1 2179277 28-AUG-14 2179707

    101 856759476 2 2179707 28-AUG-14 2179788

    102 856761071 1 2179621 28-AUG-14 2179920

    103 856761108 2 2179920 28-AUG-14 2179945

    103 rows selected.

    Oracle保留了resetlogs之前的日志序列號,并且日志recid繼續增長,控制文件也保留了歸檔日志的序列。所以可以跨RESETLOGS進行恢復。10g以前 是不能夠使用當前控制文件恢復之前的備份的。

    RMAN> run {

    2> restore database;

    3> recover database;

    4> }

    SQL> select count(*) from tt;

    COUNT(*)

    ----------

    208

    恢復能夠完成,還有log_archive_format有關系。

    Sql>show parameter log_archive_format

    log_archive_format string archive_%t_%s_%r.log

    這里的%R是oracle新增的參數,是resetlogs的標志號.這一歸檔日志格式可以是不同Incarnation的數據庫歸檔日志避免相互覆蓋,從而跨越resetlogs恢復的日志基礎得以保證。

    ?

    ?

    思考:這里看到rman備份只有一次,是在resetlogs之前,第二次完全恢復是基于之前的備份。這里看到oracle10確實是越過了resetlog執行了恢復。

ORACLE跨越時間點的恢復


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論