oracle闪回保存多久,CSS_oracle 中关于flashback闪回的介绍, 1、必须设定undo保留时间足 - phpStudy...
oracle 中關(guān)于flashback閃回的介紹
1、必須設(shè)定undo保留時間足夠大以能夠重構(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:會話級的enable flashback,映像時間被設(shè)定為最接近指定時間戳的scn
enable_at_system_change_number:將數(shù)據(jù)庫閃回到指定的scn號。
get_system_change_number:返回當(dāng)前的scn。
disable:這個存儲過程允許我們在整個會話內(nèi)停止flashback并將你帶回當(dāng)前時間的數(shù)據(jù)狀態(tài)。
----------
dbms_flashback.enable存儲過程不可以在有活動事務(wù)的時候執(zhí)行,并且,這個包不能用sys身份執(zhí)行。
在使用DBMS_FLASHBACK.ENABLE_AT_TIME前,你必須設(shè)定你的NLS_DATE_FORMAT的精確程度,Oracle默認的是精確到天
3、timestamp 與scn(系統(tǒng)改變號) 的對應(yīng)關(guān)系
事實上,Oracle在內(nèi)部都是使用scn,即使你指定的是as of timestamp,oracle也會將其轉(zhuǎn)換成scn,系統(tǒng)時間標(biāo)記與scn之間存在一張表,即SYS下的SMON_SCN_TIME表。
每隔5分鐘,系統(tǒng)產(chǎn)生一次系統(tǒng)時間標(biāo)記與scn的匹配并存入sys.smon_scn_time表,該表中記錄了最近1440個系統(tǒng)時間標(biāo)記與scn的匹配記錄,由于該表只維護了最近的1440條記錄,因此如果使用as of timestamp的方式則只能flashback最近5天內(nèi)的數(shù)據(jù)(假設(shè)系統(tǒng)是在持續(xù)不斷運行并無中斷或關(guān)機重啟之類操作的話)。SYS.SMON_SCN_TIME最多擁有1440條記錄。這個最大記錄數(shù)是這樣計算出來的,ORACLE平均每5分鐘同步一次該表數(shù)據(jù),最大保存最近5天的記錄,因此就相當(dāng)于12(每小時更新次數(shù))*24*5=1440。
可以用sql驗證一下:
Sql代碼
select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss') from sys.smon_scn_time;
10g中提供了兩個函數(shù)scn_to_timestamp() 和timestamp_to_scn() 用來執(zhí)行時間戳和SCN的轉(zhuǎ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最好,如果不知道,可以進行閃回查詢嘗試。
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時,t1表中的所有記錄都還在。
5、利用閃回恢復(fù)數(shù)據(jù)。
查看驗證一下:
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.
--對于drop table t1 的操作flashback
SQL> drop table t1;
SQL>COMMIT;
SQL> flashback table t1to before drop;
SQL>commit;
對于怎么取的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;相關(guān)閱讀:
vb.net入門——ColorDialog 組件的使用
Oracle Spatial數(shù)據(jù)加密問題的研究
IIS的安全性全解析
如何減小數(shù)據(jù)庫的尺寸?
Oracle數(shù)據(jù)庫幾種場景使用ODU恢復(fù)分析
PHP程序加速探索之緩存輸出
Oracle SQL最佳實踐
win2003 server 定時自動重啟命令
PHP 開發(fā)環(huán)境配置(測試開發(fā)環(huán)境)
多瀏覽器支持的右下角浮動窗口
用好Windows任務(wù)管理器熟練操作系統(tǒng)
VBS教程:VBScript 基礎(chǔ)-使用條件語句
php將會員數(shù)據(jù)導(dǎo)入到ucenter的代碼
Coolite Cool Study 3 MVC + Coolite 的實現(xiàn)代碼
總結(jié)
以上是生活随笔為你收集整理的oracle闪回保存多久,CSS_oracle 中关于flashback闪回的介绍, 1、必须设定undo保留时间足 - phpStudy...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle中的存在函数吗,Oracle
- 下一篇: navicat运行db文件_使用 YAM