RM新时代国际平台

  • <div id="r605l"></div>
      1. <th id="r605l"></th>
      2. Oracle flashback閃回技術(shù)

        閃回查詢(xún),由一個(gè)新的包DBMS_FLASH來(lái)實(shí)現(xiàn)。用戶使用閃回查詢(xún)可以及時(shí)取得誤操作DML(Delete、Update、Insert)前某一時(shí)間點(diǎn)數(shù)據(jù)庫(kù)的映像視圖,用戶可以利用系統(tǒng)時(shí)間或系統(tǒng)改變號(hào)(SCN:System Change Number)來(lái)指定這個(gè)只讀視圖,并可以針對(duì)錯(cuò)誤進(jìn)行相應(yīng)的恢復(fù)措施。閃回查詢(xún)功能完全依賴(lài)于自動(dòng)回滾段管理(AUM),對(duì)于Drop等誤操作不能恢復(fù)。

        閃回的本質(zhì)是利用空間來(lái)?yè)Q取過(guò)去的時(shí)間,將undo信息進(jìn)行整理和"歸檔",按照時(shí)間片進(jìn)行整理閃回日志,用戶閃回到相應(yīng)的時(shí)間點(diǎn),剩余的數(shù)據(jù)是由redo日志和歸檔日志文件進(jìn)行前滾,因而閃回提供了to before resetlogs選項(xiàng),開(kāi)啟閃回功能前數(shù)據(jù)庫(kù)必須運(yùn)行在歸檔模式,開(kāi)啟數(shù)據(jù)庫(kù)閃回后將會(huì)產(chǎn)生rvwr進(jìn)程.

        查看系統(tǒng)閃回功能

        SQL> select FLASHBACK_ON from v$database;

        (系統(tǒng)默認(rèn)沒(méi)有開(kāi)閃回功能)

        設(shè)置閃回

        38.png

        SQL> shutdown immediate

        SQL> startup mount;

        SQL> alter database archivelog;(閃回必須運(yùn)行在歸檔模式)

        SQL> alter database FLASHBACK on;(閃回啟動(dòng))

        SQL> alter database open;

        SQL> select FLASHBACK_ON from v$database;

        查看恢復(fù)路徑

        SQL> show parameter recover

        db_recovery_file_dest (恢復(fù)的路徑)

        db_recovery_file_dest_size (區(qū)域里的配額)

        閃回日志的位置

        [oracle@sq123 ~]$ cd /oracle/app/flash_recovery_area/TEST/flashback/

        閃回保留時(shí)間(默認(rèn)1天)

        SQL> show parameter flashback

        ============================================

        閃回?cái)?shù)據(jù)庫(kù)(恢復(fù)到時(shí)間點(diǎn),后的數(shù)據(jù)丟失)

        查看時(shí)間點(diǎn)

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

        2012-03-12 06:36:30

        SQL> drop user scott cascade;(刪除scott用戶)

        查看最早可以恢復(fù)到的時(shí)間點(diǎn)

        SQL> select to_char(OLDEST_FLASHBACK_TIME,'yyyy-mm-dd hh24:mi:ss') from v$flashback_database_log;

        2012-03-12 05:49:59

        SQL> shutdown abort

        SQL> startup mount

        恢復(fù)到刪除用戶前的時(shí)間點(diǎn)

        SQL> flashback database to timestamp to_timestamp('2012-04-24 05:40:51','yyyy-mm-dd hh24:mi:ss');

        SQL> alter database open resetlogs;

        scott用戶又可以登陸了

        ===================================================

        監(jiān)視flashback database

        最早可以恢復(fù)到那個(gè)時(shí)間點(diǎn)

        SQL> select to_char(OLDEST_FLASHBACK_TIME,'yyyy-mm-dd hh24-mi-ss') from v$flashback_database_log;

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

        使用 閃回?cái)?shù)據(jù)庫(kù)

        SQL> shutdown abort

        SQL> startup mount;

        SQL> flashback database to timestamp to_timestamp('2012-03-12 02:22:22','yyyy-mm-dd hh24:mi:ss');

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

        管理 閃回

        SQL> show parameter recover

        更改閃回目錄

        SQL> alter system set db_recovery_file_dest='/home/oracle/flash';

        ===============================

        flashback drop 使用

        drop表時(shí),等于把表放到回收站中(默認(rèn)情況下,Oracle是將此功能開(kāi)啟的。)

        查看回收站

        SQL> show parameter recyclebin

        SQL> show recyclebin; (沒(méi)有內(nèi)容,sysdba的drop操作是不會(huì)送到recyclebin)

        scott下

        SQL> create table ttttt(d int);

        SQL> drop table tt;

        SQL> commit;

        scott下

        SQL> show recyclebin;(有數(shù)據(jù)了)

        SQL> select object_name,original_name from recyclebin;

        scott下

        SQL> flashback table tt to before drop;

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

        什么時(shí)候是閃回不回來(lái)的

        SQL> create tablespace tbs_test01 datafile '/oracle/app/oradata/TEST/tbs_test01.dbf' size 10M;

        scott下

        SQL> create table tab_aaa tablespace tbs_test01

        2 as select * from emp;

        SQL> drop table tab_aaa;

        SQL> flashback table tab_aaa to before drop(現(xiàn)在還可以閃回,再次刪除)

        SQL> drop table tab_aaa;

        創(chuàng)建tab_bbb表大于 tab_aaa表

        SQL> create table tab_bbb tablespace tbs_test01

        2 as select * from emp;

        SQL> insert into tab_bbb select * from tab_bbb;

        SQL> / (多執(zhí)行幾次寫(xiě)滿表空間)

        閃回不了

        (只要這個(gè)表里有一個(gè)字節(jié)被覆蓋了,那么整個(gè)表也就恢復(fù)不會(huì)來(lái)了)

        (或 清空回收站也不能閃回)

        刪除表時(shí) 不放到回收站中

        SQL> drop table tab_bbb purge;

        (purge 為不放進(jìn)回收站)

        SQL> show recyclebin;(沒(méi)有刪除記錄)

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

        回收回收站

        SQL> purge recyclebin;

        SQL> show recyclebin;(沒(méi)內(nèi)容了)

        =============================================

        flashback query

        (Flashback Query 是利用多版本讀一致性的特性從UNDO 表空間讀取操作前的記錄數(shù)據(jù))

        SQL> create table t(id int);

        SQL> insert into t values(11);

        SQL> commit;

        SQL> drop table t;

        SQL> show recyclebin;

        閃回并重命名

        SQL> flashback table t to before drop rename to haha;

        SQL> select * from haha;

        SQL> delete from haha;

        SQL> commit;

        SQL> show recyclebin;(沒(méi)內(nèi)容,undo也不能恢復(fù))

        顯示當(dāng)前時(shí)間

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

        顯示38分這個(gè)時(shí)間點(diǎn)上的數(shù)據(jù)

        SQL> select * from haha as of timestamp to_timestamp('2012-03-12 01:38:00','yyyy-mm-dd hh24:mi:ss');

        no rows selected(沒(méi)有數(shù)據(jù))

        顯示36分這個(gè)時(shí)間點(diǎn)上的數(shù)據(jù)

        SQL> select * from haha as of timestamp to_timestamp('2012-03-12 01:36:00','yyyy-mm-dd hh24:mi:ss');

        ID

        ----------

        11

        (有數(shù)據(jù))

        創(chuàng)建個(gè)新表裝haha里的數(shù)據(jù)

        SQL> create table hehe as select * from haha as of timestamp to_timestamp('2012-03-12 01:36:00','yyyy-mm-dd hh24:mi:ss');


        下一篇:oracle RAC ASM以及DB維護(hù)
        RM新时代国际平台
      3. <div id="r605l"></div>
          1. <th id="r605l"></th>
          2. <div id="r605l"></div>
              1. <th id="r605l"></th>
              2. 新时代RM|国际平台 新时代软件下载 RM新时代官网网址 rm新时代是正规平台 新时代rm平台入口