亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle 閃回特性(FLASHBACK DATABASE)

系統 1935 0

--=====================================

-- Oracle 閃回特性 (FLASHBACK DATABASE)

--=====================================

?

??? 閃回技術通常用于快速簡單恢復數據庫中出現的認為誤操作等邏輯錯誤,從閃回的方式可以分為基于數據庫級別閃回、表級別閃回、事務

級別閃回,根據閃回對數據的影響程度又可以分為閃回恢復,閃回查詢。閃回恢復將修改數據,閃回點之后的數據將全部丟失。而閃回查詢則可

以查詢數據被 DML 的不同版本,也可以在此基礎之上確定是否進行恢復等。本文主要描述 flashback database 的使用。

???

一、 flashback database 特性

??? flashback data1base 閃回到過去的某一時刻

??? 閃回點之后的工作全部丟失

??? 使用 resetlogs 創建新的場景并打開數據庫 ( 一旦 resetlogs 之后,將不能再 flashback resetlogs 之前的時間點 )

???

??? 常用的場景 :truncate table 、多表發生意外錯誤等

??? 使用閃回日志來實現數據庫閃回,閃回點之后的數據將丟失

???

二、 flashback database 的組成

??? 閃回緩沖區 : 當啟用 flashback database, sga 中會開辟一塊新區域作為閃回緩沖區 , 大小由系統分配

??? 啟用新的 rvwr 進程 :rvwr 進程將閃回緩沖區的內容寫入到閃回日志中,注意閃回日志不同于聯機重做日志,閃回日志在聯機重做日志基礎之

??????? 上生成,是完整數據塊映像的日志。聯機日志則是變化的日志。閃回日志不能復用,也不能歸檔。閃回日志使用循環寫方式。

???????????

三、 flashback database 的配置

??? flashback database 要求數據庫必須處于歸檔模式,且閃回之后必須使用 resetlogs 打開數據庫

??? a . 查看數據庫的歸檔模式及閃回是否啟用

??????? SQL > ? select log_mode , open_mode , flashback_on from v$database ;

?

??????? LOG_MODE ???? OPEN_MODE ? FLASHBACK_ON

??????? ------------ ---------- ------------------

??????? ARCHIVELOG ?? READ WRITE NO ???????????? --FLASHBACK_ON NO ,則表示閃回特性尚未啟用

???

??? b . 查看及設置閃回目錄、閃回目錄空間大小等

??????? -- 下面查看恢復目錄及恢復目路分配的大小

??????? -- 可以使用 alter system set db_recovery_file_dest 來設置新路徑

??????? -- 可以使用 alter system set db_recovery_file_dest_size 來設定新的大小

??????? SQL > show parameter db_recovery ?

?

??????? NAME ???????????????????????????????? TYPE ??????? VALUE

??????? ------------------------------------ ----------- ------------------------------

??????? db_recovery_file_dest ??????????????? string ????? / u01 / app / oracle / flash_recovery

??????????????????????????????????????????????????????? ? _area

??????? db_recovery_file_dest_size ?????????? big integer 2G ???

???????

??? c . 設置閃回保留目標生存期

??????? SQL > show parameter db_flashback ????? -- 缺省為分鐘,即小時

?

??????? NAME ???????????????????????????????? TYPE ??????? VALUE

??????? ------------------------------------ ----------- ------------------------------

??????? db_flashback_retention_target ??????? integer ???? 1440

???????????????????

??????? SQL > alter system set db_flashback_retention_target = 30 ; -- 設定保留時間為半小時

???????

??? d . mount 狀態下來啟用 flashback ,如在 open 狀態下則出現下列錯誤提示

??????? SQL > alter database flashback on ;

??????? alter database flashback on

??????? *

??????? ERROR at line 1 :

??????? ORA - 38759 : Database must be mounted by only one instance and not open .

???????

??????? -- 一致性關閉數據庫后,在 mount 狀態下設置 flashback

??????? SQL > startup mount exclusive ;

???????

??????? SQL > select status from v$instance ;

?

??????? STATUS

??????? ------------

??????? MOUNTED ????????

?

??????? SQL > alter database flashback on ; ???? -- 開啟閃回數據庫功能

?

??????? SQL > ho ps - ef | grep rvw ???????????? -- 可以看到新增了后臺進程 rvwr

??????? oracle ??? 3563 ???? 1 ? 0 12 : 12 ? ??????? 00 : 00 : 00 ora_rvwr_orcl

?

??????? -- 下面查看閃回區分配的大小為大約 M ,閃回分鐘以內的數據則需要 M 左右的空間

??????? -- 注意列 oldest_flashback_time 說明了允許返回的最早的時間點

??????? SQL > select oldest_flashback_scn old_flhbck_scn , oldest_flashback_time old_flhbck_tim ,

??????? ? 2 ? retention_target rete_trgt , flashback_size / 1024 / 1024 flhbck_siz ,

??????? ? 3 ? estimated_flashback_size / 1024 / 1024 est_flhbck_size

??????? ? 4 ? from v$flashback_database_log ;

?

??????? OLD_FLHBCK_SCN OLD_FLHBC ? RETE_TRGT FLHBCK_SIZ EST_FLHBCK_SIZE

??????? -------------- --------- ---------- ---------- ---------------

??????????????? 915137 24 - OCT - 10 ???????? 30 ???? 7.8125 ????? 11.2519531

?

??????? SQL > select * from v$flashback_database_stat ; ?? -- 查看閃回

?

??????? BEGIN_TIM END_TIME ? FLASHBACK_DATA ??? DB_DATA ? REDO_DATA ESTIMATED_FLASHBACK_SIZE

??????? --------- --------- -------------- ---------- ---------- ------------------------

??????? 24 - OCT - 10 24 - OCT - 10 ??????? 7905280 ?? 86802432 ?? 96329728 ??????????????????????? 0

?

??????? SQL > select * from v$sgastat where name like 'flashback%' ; ?????? -- 查看 sga 中分配的閃回空間大小

?

??????? POOL ???????? NAME ??????????????????????????? BYTES

??????? ------------ -------------------------- ----------

??????? shared pool ? flashback generation buff ???? 3981204

??????? shared pool ? flashback_marker_cache_si ??????? 9196

???????????????????????

??????? SQL > ho ls - hlt $ORACLE_BASE / flash_recovery_area / ORCL / flashback ? -- 查看生成的閃回日志

??????? total 7.9M

??????? - rw - r ----- 1 oracle oinstall 7.9M Oct 24 12:37 o1_mf_6d7dkogw_.flb

???????

四、使用 flashback database 閃回數據庫

??? 步驟 ( 前提歸檔日志可用 )

??????? 關閉數據庫

??????? 啟動數據庫到 mount 狀態 (exclusive 模式 )

??????? 閃回至某個時間點, SCN log sequence number

??????? 使用 resetlogs 打開數據庫

??? 1. 使用 sqlplus 實現閃回

??????? 可以接受一個時間標記或一個系統改變號實參

??????? sqlplus 幾種常用的閃回數據庫方法

??????????? FLASHBACK [STANDBY] DATABASE [<database_name>] ? TO [BEFORE] SCN <system_change_number> ?? -- 基于 SCN 閃回

??????????? FLASHBACK [STANDBY] DATABASE [<database_name>] ? TO [BEFORE] TIMESTMP <system_timestamp_value> -- 基于時間戳閃回

??????????? FLASHBACK [STANDBY] DATABASE [<database_name>] ? TO [BEFORE] RESTORE POINT <restore_point_name> -- 基于時點閃回

??????? 如下面的示例:

??????????? SQL > flashback database to timestamp ( '2010-10-24 13:04:30' , 'yyyy-mm-dd hh24:mi:ss' );

??????????? SQL > flashback database to scn 918987 ;

??????????? SQL > flashback database ro restore point b1_load ;

???????

??????? a . 基于時間戳閃回

??????????? SQL > select count ( 1 ) from usr1 . tb1 ; ?? -- 查詢用戶 usr1 下表 tb1 中的記錄數

?

??????????? ? COUNT ( 1 )

??????????? ----------

??????????????? 404944

???????????

??????????? SQL > select to_char ( sysdate , 'yyyy-mm-dd hh24:mi:ss' ) tm from dual ; ? -- 獲得系統當前的時間

?

??????????? TM

??????????? -------------------

??????????? 2010 - 10 - 24 13 : 04 : 30

?

??????????? SQL > drop user usr1 cascade ; ???? -- 刪除帳戶 usr1 ,同時帳戶 usr1 下的所有對象將被刪除

?

??????????? SQL > conn scott / tiger ; ?????????? -- 使用 scott 帳戶登陸

?

??????????? SQL > create table tb_emp as select * from emp ; ? -- 新創建表 tb_emp

?

??????????? SQL > shutdown immediate ; ??????? -- 關系系統

?

??????????? SQL > startup mount ; ???????????? -- 重新到 mount 狀態

?

??????????? SQL > flashback database to timestamp ? -- 實施閃回

??????????? ? 2 ? to_timestamp ( '2010-10-24 13:04:30' , 'yyyy-mm-dd hh24:mi:ss' ) ; ?????????

???????????

??????????? SQL > alter database open resetlogs ;

???????????

??????????? SQL > select count ( 1 ) from usr1 . tb1 ; ??? -- 帳戶 usr1 及其對象 tb1 被成功閃回

?

??????????? ? COUNT ( 1 )

??????????? ----------

??????????????? 404944

?

??????????? SQL > select count ( 1 ) from scott . tb_emp ; ?? -- 閃回成功后,在閃回點之后修改的數據全部丟失

??????????? select count ( 1 ) from scott . tb_emp

??????????????????????????????????? ?? *

??????????? ERROR at line 1 :

??????????? ORA - 00942 : table or view does not exist ????????

???????????

??????? b . 基于 SCN 號閃回 ????????

??????????? SQL > select current_scn from v$database ; ?? -- 獲得當前的 SCN

?

??????????? CURRENT_SCN

??????????? -----------

??????????????? 918987

?

??????????? SQL > drop table usr1 . tb1 ; ?? -- 刪除用戶 usr1 下的表 tb1

???????

??????????? SQL > alter system checkpoint ; ??? -- 手動執行檢查點

?

??????????? SQL > ? select file# , checkpoint_change# from v$datafile ;

?

??????????????? ? FILE# CHECKPOINT_CHANGE#

??????????? ---------- ------------------

??????????????????? ? 5 ???????????? 921478

?

??????????? SQL > shutdown abort ; ???

???????????

??????????? SQL > startup mount ;

?

??????????? SQL > flashback database to scn 918987 ;

?

??????????? SQL > select count ( 1 ) from usr1 . tb1 ;

?

??????????? ? COUNT ( 1 )

??????????? ----------

??????????????? 404944

?

??????? c . 基于時點閃回

??????????? SQL > create table t ( id int , col varchar2 ( 20 )); ?? -- 創建表 t

?

??????????? SQL > insert into t values ( 1 , 'ABC' );

?

??????????? SQL > insert into t values ( 2 , 'DEF' );

?

??????????? SQL > commit ;

?

??????????? SQL > create restore point bef_damage ; ??? -- 創建閃回點

?

??????????? SQL > insert into t values ( 3 , 'GHI' );

?

??????????? SQL > select ora_rowscn , id , col from t ; ?? -- 查看表 t 的記錄

?

??????????? ORA_ROWSCN ???????? ID COL

??????????? ---------- ---------- --------------------

??????????? ?? 1874406 ????????? 1 ABC

??????????? ?? 1874406 ????????? 2 DEF

??????????? ?? 1874406 ????????? 3 GHI ??????????

???????

??????????? SQL > shutdown immediate ;

???????????

??????????? SQL > startup mount exclusive ;

???????????

??????????? SQL > flashback database to restore point bef_damage ; ? -- 實施時點閃回

???????????

??????????? SQL > alter database open resetlogs ;

???????????

??????????? SQL > select * from t ; ?? -- 閃回成功后,閃回點之后的數據丟失

?

??????????????????? ID COL

??????????? ---------- --------------------

??????????????????? ? 1 ABC

??????????????????? ? 2 DEF

??????????????????? ?

??? 2. 使用 RMAN 進行 flashback database

??????? 使用 RMAN 進行閃回數據庫的幾種常用辦法

??????????? RMAN > flashback database to scn = 918987 ;

??????????? RMAN > flashback database to sequence = 85 ? thread = 1 ;

??????? SQL > create table scott . tb_emp as select * from scott . emp ;

?

??????? SQL > select count ( 1 ) from scott . tb_emp ;

?

??????? ? COUNT ( 1 )

??????? ----------

??????????????? 14

?

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

?

??????? TM

??????? -------------------

??????? 2010 - 10 - 24 13 : 59 : 38

?

??????? SQL > drop table scott . tb_emp ;

?

??????? SQL > shutdown abort ;

???

??????? SQL > startup mount ;

?

??????? RMAN > ? flashback database

??????? 2 > to time = "to_date('2010-10-24 13:59:00','yyyy-mm-dd hh24:mi:ss')" ;

?

??????? SQL > select count ( 1 ) from scott . tb_emp ;

?

??????? ? COUNT ( 1 )

??????? ----------

??????????????? 14

?

??????? 查詢視圖: v$recovery_file_dest 將顯示閃回區的使用情況

??????? SQL > select name , space_limit / 1024 / 1024 sp_limt

??????? ? 2 ?? , space_used / 1024 / 1024 sp_usd , space_reclaimable / 1024 / 1024 sp_recl ,

??????? ? 3 ? number_of_files num_fils from v$recovery_file_dest ;

?

??????? NAME ???????????????????????????????????????????? SP_LIMT ???? SP_USD ??? SP_RECL ?? NUM_FILS

??????? --------------------------------------------- ---------- ---------- ---------- ----------

??????? / u01 / app / oracle / flash_recovery_area ???????????????? 2048 472.070313 380.671875 ???????? 18

?

??????? 可以將某些表空間排除在閃回之外

?

??????? SQL > alter tablespace users flashback off ;

?

??????? SQL > select name , flashback_on from v$tablespace where ts# = 4 ;

?

??????? NAME ??????????? FLA

??????? --------------- ---

??????? USERS ?????????? NO

?

??????? 如果需要對上述表空間啟用閃回功能,則需要在 mount 模式下對該表空間進行開啟該功能。

?

五、總結

閃回策略是針對 Oracle 撤銷功能的增強,為快速恢復數據庫提供了更多的便利。數據庫的閃回恢復的速度要快于 RMAN 以及基于用戶管理的備份與恢復,其主要原因是因為數據庫閃回使用的是閃回日志,而閃回日志中保存的是數據塊的完整鏡像。其次閃回能夠恢復的程度取決于閃回空間的大小以及閃回的保留策略,閃回空間大小會被循環使用,而閃回的保留策略則決定了閃回日志保留的時間長度。總之,合理的平衡恢復速度與可用空間依賴于具體服務要求。

???

六、 更多參考 ???

有關基于用戶管理的備份和備份恢復的概念請參考:

??????? Oracle 冷備份

??????? Oracle 熱備份

??????? Oracle 備份恢復概念

??????? Oracle 實例恢復

??????? Oracle 基于用戶管理恢復的處理 ( 詳細描述了介質恢復及其處理 )

???????

??? 有關 RMAN 的恢復與管理請參考:

??????? RMAN 概述及其體系結構

??????? RMAN 配置、監控與管理

??????? RMAN 備份詳解

??????? RMAN 還原與恢復

???????

??? 有關 Oracle 體系結構請參考:

??????? Oracle 實例和Oracle 數據庫(Oracle 體系結構)

??????? Oracle 表空間與數據文件

??????? Oracle 密碼文件

??????? Oracle 參數文件

Oracle 數據庫實例啟動關閉過程

??????? Oracle 聯機重做日志文件(ONLINE LOG FILE)

??????? Oracle 控制文件(CONTROLFILE)

??????? Oracle 歸檔日志

?

?

Oracle 閃回特性(FLASHBACK DATABASE)


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲免费在线观看 | 亚洲国产美女精品久久 | 国产成人精品午夜二三区 | 色综合久久中文字幕 | jizzjizz亚洲女人 | 99久久在线 | 久久青草免费免费91线频观看 | 中文字幕一区视频一线 | 91精品视频网 | 久久中文字幕网 | 久久中文字幕一区二区三区 | 国产精品一区久久精品 | 妖精视频一区二区三区 | 亚洲综合一区二区精品久久 | 亚洲国产香蕉视频欧美 | 国产精品久久久久久福利69堂 | 久青草视频97国内免费影视 | 国产日韩精品视频一区二区三区 | 女人18毛片a级毛片免费看一 | 久久国产欧美 | 欧美精品成人久久网站 | 免费国产一区二区三区 | 日本免费不卡一区 | 亚洲欧美网 | 国产精品国产欧美综合一区 | 亚洲成人在线免费视频 | 毛片网站大全 | 日韩欧美伊人久久大香线蕉 | 久久天天躁狠狠躁夜夜躁 | 深夜影院在线视频观看 | 亚洲精品 国产 日韩 | 精品中文字幕久久久久久 | 久久国产精品99久久久久久老狼 | 香蕉精品在线 | 人人爱操 | 欧美成人黄色网 | 九九热线精品视频6一 | 日韩精品一区二区三区四区 | 九九热在线视频免费观看 | 亚洲精品第一国产综合高清 | 羞羞网站在线看 |