真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle數(shù)據(jù)如何閃回,數(shù)據(jù)庫表閃回命令

求教Oracle11g中的閃回技術(shù)

1、Flashback Database(利用閃回日志恢復(fù))

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了甘南免費建站歡迎大家使用!

Oracle Flashback Database特性允許通過SQL語句Flashback Database語句,讓數(shù)據(jù)庫前滾到當(dāng)前的前一個時間點或者SCN,而不需要做時間點的恢復(fù)。閃回數(shù)據(jù)庫可以迅速將數(shù)據(jù)庫回到誤操作或人為錯誤的前一個時間點,如Word中的"撤消"操作,可以不利用備份就快速的實現(xiàn)基于時間點的恢復(fù)。Oracle通過創(chuàng)建新的Flashback Logs(閃回日志),記錄數(shù)據(jù)庫的閃回操作。如果希望能閃回數(shù)據(jù)庫,需要設(shè)置如下參數(shù):DB_RECOVER_FILE_DEST日志的存放位置,DB_RECOVER_FILE_DEST_SIZE恢復(fù)區(qū)的大小。在創(chuàng)建數(shù)據(jù)庫的時候,Oracle將自動創(chuàng)建恢復(fù)區(qū),但默認是關(guān)閉的,需要執(zhí)行alter database flashback on命令。

例:執(zhí)行Flashback Database命令格式。

SQLflashback database to time to_timestamp(xxx);

SQLflashback database to scn xxx

2、Flashback Table(利用UNDO保留信息恢復(fù))

Oracle Flashback Table特性允許利用Flashback Table語句,確保閃回到表的前一個時間點。與Oracle 9i中的Flashback Query相似,利用回滾段信息來恢復(fù)一個或一些表到以前的一個時間點(一個快照)。要注意的是,F(xiàn)lashback Table不等于Flashback Query,F(xiàn)lashback Query僅僅是查詢以前的一個快照點而已,并不改變當(dāng)前表的狀態(tài),而Flashback Table將改變當(dāng)前表及附屬對象一起回到以前的時間點。

語法:

flashback table tablename to timestamp xxx或

flashback table tablename to scn xxx

注意:如果需要閃回一個表,需要以下條件:

需要有flashback any table的系統(tǒng)權(quán)限或者是該表的flashback對象權(quán)限;

需要有該表的select,insert,delete,alter權(quán)限;

必須保證該表row movement。

例:執(zhí)行將test表閃回到2011年5月7日下午3點。

SQLflashback table test to timestamp to_timestamp(’2011-05-07 15:00:00’,’yyyy-mm-dd hh24:mi:ss’);

3、Flashback Drop(利用回收站功能恢復(fù))

注:由于目前的環(huán)境為了實現(xiàn)OGG的DDL同步,關(guān)閉了回收站功能,故這個功能不可用。

4、Flash Version Query(利用UNDO保留信息恢復(fù))

Oracle Flashback Version Query特性,利用保存的回滾信息,可以看到特定的表在時間段內(nèi)的任何修改,如電影的回放一樣,可以了解表在該期間的任何變化。Flashback version query一樣依賴于AUM,提供了一個查看行改變的功能,能找到所有已經(jīng)提交了的行的記錄,分析出過去時間都執(zhí)行了什么操作。Flashback version query采用VERSIONS BETWEEN語句來進行查詢,常用的方法:

·VERSIONS_SCN - 系統(tǒng)改變號

·VERSIONS_TIMESTAMP - 時間

例如:在test表中,時間1插入一條記錄,時間2刪除了這條記錄,對于時間3執(zhí)行select * from test當(dāng)然查詢不到這條記錄,只能看到該表最后的提交記錄。這時如果利用Flash Table或者是Flash Query,只能看到過去的某一時間點的一個快照,而利用Flashback Version Query,能夠把時間1、時間2的操作給記錄下來,并詳細的查詢出對表進行的任何操作。

基于SCN的閃回查詢:

SQL select count(*) from lm_mtrp_syn_channelinfo as of scn 708000000;

COUNT(*)

----------

21

基于時間段的閃回查詢:

SQLselect versions_starttime,versions_endtime, versions_xid,versions_operation,id

from test versions

between timestamp minvalue and maxvalue

order by versions_starttime;

5,Flashback Transaction Query(利用UNDO保留信息恢復(fù))

Oracle Flashback Transaction Query特性確保檢查數(shù)據(jù)庫的任何改變在一個事務(wù)級別,可以利用此功能進行診斷問題、性能分析和審計事務(wù)。它其實是Flashback Version Query查詢的一個擴充,F(xiàn)lashback Version Query說明了可以審計一段時間內(nèi)表的所有改變,但是也僅僅是能發(fā)現(xiàn)問題,對于錯誤的事務(wù),沒有好的處理辦法。而Flashback Transaction Query提供了從FLASHBACK_TRANSACTION_QUERY視圖中獲得事務(wù)的歷史以及Undo_sql(回滾事務(wù)對應(yīng)的sql語句),也就是說審計一個事務(wù)到底做了什么,甚至可以回滾一個已經(jīng)提交的事務(wù)。

例:Flashback Transaction Query的操作實例。

(1)在test表中刪除記錄,獲得事務(wù)的標(biāo)識XID,然后提交。

SQLdelete from test where id=2;

SQLselect xid from v$transaction;

XID

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

04001200AE010000

SQLcommit;

在測試中方便起見,在事務(wù)沒有提交的時候,獲得事務(wù)的XID為04001F0035000000。實際情況下,不可能去跟蹤每個事務(wù),想要獲得已提交事務(wù)的XID,就必須通過上面的Flashback Version Query。

(2)進行Flashback Transaction Query

SQLselect * from FLASHBACK_TRANSACTION_QUERY

where xid=’04001F0035000000’;

UNDO_SQL

insert into "FLASHTEST"."TEST"("ID") values (’2’);

注意:這個刪除語句對應(yīng)的是1個Insert語句,如果想回滾這個事務(wù),執(zhí)行這個Insert語句即可。

可以看到,F(xiàn)lashback Transaction Query主要用于審計一個事務(wù),并可以回滾一個已經(jīng)提交的事務(wù)。如果確定出錯的事務(wù)是最后一個事務(wù),我們利用Flashback Table或者Flashback Query就可以解決問題。但是,如果執(zhí)行了一個錯誤的事務(wù)之后,又執(zhí)行了一系列正確的事務(wù),那么上面的方法就無能為力,利用Flashback Transaction Query可以查看或回滾這個錯誤的事務(wù)。

另:ORACLE 11G還多了一個閃回數(shù)據(jù)歸檔的功能,即可將UNDO的信息進行歸檔,這個功能對于一些比較重要的表,

oracle 怎樣利用閃回功能恢復(fù)數(shù)據(jù)?

1,只需要執(zhí)行以下個腳本即可。

2,查看utl_file_dir設(shè)置

3, 可以通過命令行修改此參數(shù),也可以通過修改pfile文件設(shè)置此參數(shù)。

4,該參數(shù)為靜態(tài)參數(shù),需重啟數(shù)據(jù)庫后生效,創(chuàng)建LOGMNR數(shù)據(jù)字典。

5,添加需要分析的歸檔日志。

6,開始日志挖掘,分析日志。

7,查看日志信息,就可以了。

如何執(zhí)行Oracle數(shù)據(jù)庫閃回查詢

可按以下步驟配置閃回數(shù)據(jù)庫:(確保數(shù)據(jù)庫處于ARCHIVELOG 模式。)

1. 配置快速恢復(fù)區(qū)。

2. 使用初始化參數(shù)DB_FLASHBACK_RETENTION_TARGET 設(shè)置保留目標(biāo)??芍付?/p>

一個上限(以分鐘為單位),指示數(shù)據(jù)庫能夠閃回到多長時間以前。本示例使用

了 2880 分鐘,相當(dāng)于兩天。此參數(shù)只是一個目標(biāo),并不提供任何保證。閃回時間

間隔取決于快速恢復(fù)區(qū)中保留的閃回數(shù)據(jù)量的大小。

3. 使用以下命令啟用閃回數(shù)據(jù)庫:

ALTER DATABASE FLASHBACK ON;

必須先配置數(shù)據(jù)庫以進行歸檔,且必須在 MOUNT EXCLUSIVE 模式下啟動數(shù)據(jù)庫

后,才能發(fā)出此命令來啟用閃回數(shù)據(jù)庫。

可以使用以下查詢來確定是否已啟用閃回數(shù)據(jù)庫:

SELECT flashback_on FROM v$database;

可以使用ALTER DATABASE FLASHBACK OFF 命令禁用閃回數(shù)據(jù)庫。這樣,會自動刪

除所有現(xiàn)有的閃回數(shù)據(jù)庫日志。

注:僅當(dāng)在獨占模式下裝載(而不是打開)數(shù)據(jù)庫時才能啟用閃回數(shù)據(jù)庫。

1.確認當(dāng)前模式

SYS AS SYSDBA on 29-MAR-05 select flashback_on from v$database;

FLA

---

NO

2.檢查/修改恢復(fù)區(qū)設(shè)置

SYS AS SYSDBA on 29-MAR-05 show parameter db_recovery_file_dest

NAME TYPEVALUE

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

db_recovery_file_deststring /u01/app/oracle/flash_recovery_areadb_recovery_file_dest_size big integer 10G

SYS AS SYSDBA on 29-MAR-05 alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area';

SYS AS SYSDBA on 29-MAR-05 alter system set db_recovery_file_dest_size=15G;

3.檢查/修改閃回時間設(shè)置

SYS AS SYSDBA on 29-MAR-05 show parameter db_flashback_retention_target

NAME TYPEVALUE

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

db_flashback_retention_targetinteger 60

SYS AS SYSDBA on 29-MAR-05 alter system set db_flashback_retention_target=1440;--分鐘

System altered.

如何設(shè)置flash recovery area

(1).db_recovery_file_dest:指定閃回恢復(fù)區(qū)的位置

(2).db_recovery_file_dest_size:指定閃回恢復(fù)區(qū)的可用空間大小

(3).db_flashback_retention_target:指定數(shù)據(jù)庫可以回退的時間,單位為分鐘,默認1440分鐘,也就是一天。當(dāng)然,實際上可回退的時間還決定于閃回恢復(fù)區(qū)的大小,因為里面保存了回退所需要的 flash log。所以這個參數(shù)要和db_recovery_file_dest_size配合修改。

alter system set db_flashback_retention_target=1440;

alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area';

alter system set db_recovery_size=15G;

4.重新啟動數(shù)據(jù)庫到Mount狀態(tài)

啟動flashback database選項。

SYS AS SYSDBA on 29-MAR-05 shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS AS SYSDBA on 29-MAR-05 startup mount exclusive;

ORACLE instance started.

Total System Global Area 314572800 bytes

Fixed Size 1301704 bytes

Variable Size 261890872 bytes

Database Buffers 50331648 bytes

Redo Buffers1048576 bytes

Database mounted.

SYS AS SYSDBA on 29-MAR-05 alter database flashback on;

Database altered.

SYS AS SYSDBA on 29-MAR-05 alter database open;

Database altered.

oracle數(shù)據(jù)庫執(zhí)行腳步出錯,怎么恢復(fù)數(shù)據(jù)庫

數(shù)據(jù)恢復(fù)方法是利用oracle提供的閃回方法進行數(shù)據(jù)恢復(fù),適用于delete刪除(一條記錄)方式:

首先需要知道是什么時間進行的刪除操作,如果不能確定具體時間點則選擇盡量準(zhǔn)確的刪除數(shù)據(jù)前的時間。然后利用

select * from 表名 as of timestamp to_timestamp('刪除時間點','yyyy-mm-dd hh24:mi:ss')

語句可以找回刪除的數(shù)據(jù)。利用

insert into 表名 (select * from 表名 as of timestamp to_timestamp('刪除時間點','yyyy-mm-dd hh24:mi:ss'));

語句就可以將恢復(fù)出來的數(shù)據(jù)插入原表中(注意要保證主鍵不重復(fù))。

另一種方法可以通過閃回整個表來恢復(fù)誤刪除的數(shù)據(jù),但僅適用于表結(jié)構(gòu)沒有發(fā)生改變且用戶有flash any table權(quán)限的情況下,語句如下:

·alter table 表名 enable row movement


網(wǎng)站題目:oracle數(shù)據(jù)如何閃回,數(shù)據(jù)庫表閃回命令
網(wǎng)站地址:http://weahome.cn/article/hojpdo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部