亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        oracle中關(guān)于flashback閃回的介紹

        字號(hào):


            1、必須設(shè)定undo保留時(shí)間足夠大以能夠重構(gòu)需要閃回的數(shù)據(jù)
            ALTER SYSTEM SET UNDO_RETENTION=; seconds值是undo數(shù)據(jù)保持的秒數(shù)。
            Flashback view是由undo retention interval來限制的。
            2、包DBMS_FLASHBACK提供了需求接口
            call dbms_flashback.enable_at_time(‘2010-10-19:11:00:00’);
            call dbms_flashback.disable();
            -------------------------------------
            enable_at_time:會(huì)話級(jí)的enable flashback,映像時(shí)間被設(shè)定為最接近指定時(shí)間戳的scn
            enable_at_system_change_number:將數(shù)據(jù)庫閃回到指定的scn號(hào)。
            get_system_change_number:返回當(dāng)前的scn。
            disable:這個(gè)存儲(chǔ)過程允許我們?cè)谡麄€(gè)會(huì)話內(nèi)停止flashback并將你帶回當(dāng)前時(shí)間的數(shù)據(jù)狀態(tài)。
            ----------
            dbms_flashback.enable存儲(chǔ)過程不可以在有活動(dòng)事務(wù)的時(shí)候執(zhí)行,并且,這個(gè)包不能用sys身份執(zhí)行。
            在使用DBMS_FLASHBACK.ENABLE_AT_TIME前,你必須設(shè)定你的NLS_DATE_FORMAT的精確程度,Oracle默認(rèn)的是精確到天
            3、timestamp 與scn(系統(tǒng)改變號(hào)) 的對(duì)應(yīng)關(guān)系
            事實(shí)上,Oracle在內(nèi)部都是使用scn,即使你指定的是as of timestamp,oracle也會(huì)將其轉(zhuǎn)換成scn,系統(tǒng)時(shí)間標(biāo)記與scn之間存在一張表,即SYS下的SMON_SCN_TIME表。
            每隔5分鐘,系統(tǒng)產(chǎn)生一次系統(tǒng)時(shí)間標(biāo)記與scn的匹配并存入sys.smon_scn_time表,該表中記錄了最近1440個(gè)系統(tǒng)時(shí)間標(biāo)記與scn的匹配記錄,由于該表只維護(hù)了最近的1440條記錄,因此如果使用as of timestamp的方式則只能flashback最近5天內(nèi)的數(shù)據(jù)(假設(shè)系統(tǒng)是在持續(xù)不斷運(yùn)行并無中斷或關(guān)機(jī)重啟之類操作的話)。SYS.SMON_SCN_TIME最多擁有1440條記錄。這個(gè)最大記錄數(shù)是這樣計(jì)算出來的,ORACLE平均每5分鐘同步一次該表數(shù)據(jù),最大保存最近5天的記錄,因此就相當(dāng)于12(每小時(shí)更新次數(shù))*24*5=1440。
            可以用sql驗(yàn)證一下:
            Sql代碼
            select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss') from sys.smon_scn_time;
            10g中提供了兩個(gè)函數(shù)scn_to_timestamp() 和timestamp_to_scn() 用來執(zhí)行時(shí)間戳和SCN的轉(zhuǎn)換。
            下面使用閃回進(jìn)行演示一下:
            1、登陸到數(shù)據(jù)庫。
            Sql代碼
            C:>sqlplus tivan/tivan
            SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 19 22:24:03 2010
            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
            2、查看表的記錄。
            Sql代碼
            SQL> select count(*) from t1
            2 ;
            COUNT(*)
            ----------
            8302
            3、刪除所有的記錄提交。
            Sql代碼
            SQL> delete from t1
            2 ;
            已刪除8302行。
            SQL> commit;
            提交完成。
            4、獲得當(dāng)前SCN
            如果能夠確切知道刪除之前SCN最好,如果不知道,可以進(jìn)行閃回查詢嘗試。
            Sql代碼
            SQL> select dbms_flashback.get_system_change_number from dual;
            GET_SYSTEM_CHANGE_NUMBER
            ------------------------
            1482649
            SQL> select count(*) from t1 as of scn 1482600;
            COUNT(*)
            ----------
            8302
            SCN=1482600時(shí),t1表中的所有記錄都還在。
            5、利用閃回恢復(fù)數(shù)據(jù)。
            查看驗(yàn)證一下:
            Sql代碼
            SQL> insert into t1 select * from t1 as of scn 1482600;
            已創(chuàng)建8302行。
            SQL> commit;
            提交完成。
            結(jié)果OK
            或者還可以如下操作
            Sql代碼
            SQL>flashback table t1 to scn 1482600;
            SQL> commit;
            Commit complete.
            --對(duì)于drop table t1 的操作flashback
            SQL> drop table t1;
            SQL>COMMIT;
            SQL> flashback table t1to before drop;
            SQL>commit;
            對(duì)于怎么取的SCN可以使用timestamp_to_scn() 函數(shù),如:
            Sql代碼
            select timestamp_to_scn(to_timestamp('2010-10-19 21:00:00','YYYY-MM-DD HH:MI:SS')) from dual;