一
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括瑪曲網(wǎng)站建設(shè)、瑪曲網(wǎng)站制作、瑪曲網(wǎng)頁(yè)制作以及瑪曲網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,瑪曲網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到瑪曲省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
首先查看是否開(kāi)啟閃回:
SQL select flashback_on from V$database;
FLASHBACK_ON
------------------
NO
二
如果已經(jīng)開(kāi)啟了閃回,無(wú)須執(zhí)行下面的操作。
cd /u01
mkdir flashback(生成閃回目錄)
SQL alter system set db_recovery_file_dest_size=30G scope=both;
SQL alter system set db_recovery_file_dest='/u01/flashback' scope=both;
SQL shutdown immediate
SQL startup mount
SQL alter database archivelog;
SQL alter database flashback on;
SQL alter database open;
三
再進(jìn)行確認(rèn):
SQL select flashback_on from V$database;
FLASHBACK_ON
------------------
YES
1、Flashback Database(利用閃回日志恢復(fù))
Oracle Flashback Database特性允許通過(guò)SQL語(yǔ)句Flashback Database語(yǔ)句,讓數(shù)據(jù)庫(kù)前滾到當(dāng)前的前一個(gè)時(shí)間點(diǎn)或者SCN,而不需要做時(shí)間點(diǎn)的恢復(fù)。閃回?cái)?shù)據(jù)庫(kù)可以迅速將數(shù)據(jù)庫(kù)回到誤操作或人為錯(cuò)誤的前一個(gè)時(shí)間點(diǎn),如Word中的"撤消"操作,可以不利用備份就快速的實(shí)現(xiàn)基于時(shí)間點(diǎn)的恢復(fù)。Oracle通過(guò)創(chuàng)建新的Flashback Logs(閃回日志),記錄數(shù)據(jù)庫(kù)的閃回操作。如果希望能閃回?cái)?shù)據(jù)庫(kù),需要設(shè)置如下參數(shù):DB_RECOVER_FILE_DEST日志的存放位置,DB_RECOVER_FILE_DEST_SIZE恢復(fù)區(qū)的大小。在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,Oracle將自動(dòng)創(chuàng)建恢復(fù)區(qū),但默認(rèn)是關(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語(yǔ)句,確保閃回到表的前一個(gè)時(shí)間點(diǎn)。與Oracle 9i中的Flashback Query相似,利用回滾段信息來(lái)恢復(fù)一個(gè)或一些表到以前的一個(gè)時(shí)間點(diǎn)(一個(gè)快照)。要注意的是,F(xiàn)lashback Table不等于Flashback Query,F(xiàn)lashback Query僅僅是查詢以前的一個(gè)快照點(diǎn)而已,并不改變當(dāng)前表的狀態(tài),而Flashback Table將改變當(dāng)前表及附屬對(duì)象一起回到以前的時(shí)間點(diǎn)。
語(yǔ)法:
flashback table tablename to timestamp xxx或
flashback table tablename to scn xxx
注意:如果需要閃回一個(gè)表,需要以下條件:
需要有flashback any table的系統(tǒng)權(quán)限或者是該表的flashback對(duì)象權(quán)限;
需要有該表的select,insert,delete,alter權(quán)限;
必須保證該表row movement。
例:執(zhí)行將test表閃回到2011年5月7日下午3點(diǎn)。
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)境為了實(shí)現(xiàn)OGG的DDL同步,關(guān)閉了回收站功能,故這個(gè)功能不可用。
4、Flash Version Query(利用UNDO保留信息恢復(fù))
Oracle Flashback Version Query特性,利用保存的回滾信息,可以看到特定的表在時(shí)間段內(nèi)的任何修改,如電影的回放一樣,可以了解表在該期間的任何變化。Flashback version query一樣依賴于AUM,提供了一個(gè)查看行改變的功能,能找到所有已經(jīng)提交了的行的記錄,分析出過(guò)去時(shí)間都執(zhí)行了什么操作。Flashback version query采用VERSIONS BETWEEN語(yǔ)句來(lái)進(jìn)行查詢,常用的方法:
·VERSIONS_SCN - 系統(tǒng)改變號(hào)
·VERSIONS_TIMESTAMP - 時(shí)間
例如:在test表中,時(shí)間1插入一條記錄,時(shí)間2刪除了這條記錄,對(duì)于時(shí)間3執(zhí)行select * from test當(dāng)然查詢不到這條記錄,只能看到該表最后的提交記錄。這時(shí)如果利用Flash Table或者是Flash Query,只能看到過(guò)去的某一時(shí)間點(diǎn)的一個(gè)快照,而利用Flashback Version Query,能夠把時(shí)間1、時(shí)間2的操作給記錄下來(lái),并詳細(xì)的查詢出對(duì)表進(jìn)行的任何操作。
基于SCN的閃回查詢:
SQL select count(*) from lm_mtrp_syn_channelinfo as of scn 708000000;
COUNT(*)
----------
21
基于時(shí)間段的閃回查詢:
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ù)庫(kù)的任何改變?cè)谝粋€(gè)事務(wù)級(jí)別,可以利用此功能進(jìn)行診斷問(wèn)題、性能分析和審計(jì)事務(wù)。它其實(shí)是Flashback Version Query查詢的一個(gè)擴(kuò)充,F(xiàn)lashback Version Query說(shuō)明了可以審計(jì)一段時(shí)間內(nèi)表的所有改變,但是也僅僅是能發(fā)現(xiàn)問(wèn)題,對(duì)于錯(cuò)誤的事務(wù),沒(méi)有好的處理辦法。而Flashback Transaction Query提供了從FLASHBACK_TRANSACTION_QUERY視圖中獲得事務(wù)的歷史以及Undo_sql(回滾事務(wù)對(duì)應(yīng)的sql語(yǔ)句),也就是說(shuō)審計(jì)一個(gè)事務(wù)到底做了什么,甚至可以回滾一個(gè)已經(jīng)提交的事務(wù)。
例:Flashback Transaction Query的操作實(shí)例。
(1)在test表中刪除記錄,獲得事務(wù)的標(biāo)識(shí)XID,然后提交。
SQLdelete from test where id=2;
SQLselect xid from v$transaction;
XID
----------------
04001200AE010000
SQLcommit;
在測(cè)試中方便起見(jiàn),在事務(wù)沒(méi)有提交的時(shí)候,獲得事務(wù)的XID為04001F0035000000。實(shí)際情況下,不可能去跟蹤每個(gè)事務(wù),想要獲得已提交事務(wù)的XID,就必須通過(guò)上面的Flashback Version Query。
(2)進(jìn)行Flashback Transaction Query
SQLselect * from FLASHBACK_TRANSACTION_QUERY
where xid=’04001F0035000000’;
UNDO_SQL
insert into "FLASHTEST"."TEST"("ID") values (’2’);
注意:這個(gè)刪除語(yǔ)句對(duì)應(yīng)的是1個(gè)Insert語(yǔ)句,如果想回滾這個(gè)事務(wù),執(zhí)行這個(gè)Insert語(yǔ)句即可。
可以看到,F(xiàn)lashback Transaction Query主要用于審計(jì)一個(gè)事務(wù),并可以回滾一個(gè)已經(jīng)提交的事務(wù)。如果確定出錯(cuò)的事務(wù)是最后一個(gè)事務(wù),我們利用Flashback Table或者Flashback Query就可以解決問(wèn)題。但是,如果執(zhí)行了一個(gè)錯(cuò)誤的事務(wù)之后,又執(zhí)行了一系列正確的事務(wù),那么上面的方法就無(wú)能為力,利用Flashback Transaction Query可以查看或回滾這個(gè)錯(cuò)誤的事務(wù)。
另:ORACLE 11G還多了一個(gè)閃回?cái)?shù)據(jù)歸檔的功能,即可將UNDO的信息進(jìn)行歸檔,這個(gè)功能對(duì)于一些比較重要的表,
可按以下步驟配置閃回?cái)?shù)據(jù)庫(kù):(確保數(shù)據(jù)庫(kù)處于ARCHIVELOG 模式。)
1. 配置快速恢復(fù)區(qū)。
2. 使用初始化參數(shù)DB_FLASHBACK_RETENTION_TARGET 設(shè)置保留目標(biāo)??芍付?/p>
一個(gè)上限(以分鐘為單位),指示數(shù)據(jù)庫(kù)能夠閃回到多長(zhǎng)時(shí)間以前。本示例使用
了 2880 分鐘,相當(dāng)于兩天。此參數(shù)只是一個(gè)目標(biāo),并不提供任何保證。閃回時(shí)間
間隔取決于快速恢復(fù)區(qū)中保留的閃回?cái)?shù)據(jù)量的大小。
3. 使用以下命令啟用閃回?cái)?shù)據(jù)庫(kù):
ALTER DATABASE FLASHBACK ON;
必須先配置數(shù)據(jù)庫(kù)以進(jìn)行歸檔,且必須在 MOUNT EXCLUSIVE 模式下啟動(dòng)數(shù)據(jù)庫(kù)
后,才能發(fā)出此命令來(lái)啟用閃回?cái)?shù)據(jù)庫(kù)。
可以使用以下查詢來(lái)確定是否已啟用閃回?cái)?shù)據(jù)庫(kù):
SELECT flashback_on FROM v$database;
可以使用ALTER DATABASE FLASHBACK OFF 命令禁用閃回?cái)?shù)據(jù)庫(kù)。這樣,會(huì)自動(dòng)刪
除所有現(xiàn)有的閃回?cái)?shù)據(jù)庫(kù)日志。
注:僅當(dāng)在獨(dú)占模式下裝載(而不是打開(kāi))數(shù)據(jù)庫(kù)時(shí)才能啟用閃回?cái)?shù)據(jù)庫(kù)。
1.確認(rèn)當(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í)間設(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ù)庫(kù)可以回退的時(shí)間,單位為分鐘,默認(rèn)1440分鐘,也就是一天。當(dāng)然,實(shí)際上可回退的時(shí)間還決定于閃回恢復(fù)區(qū)的大小,因?yàn)槔锩姹4媪嘶赝怂枰?flash log。所以這個(gè)參數(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.重新啟動(dòng)數(shù)據(jù)庫(kù)到Mount狀態(tài)
啟動(dòng)flashback database選項(xiàng)。
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.
1,只需要執(zhí)行以下個(gè)腳本即可。
2,查看utl_file_dir設(shè)置
3, 可以通過(guò)命令行修改此參數(shù),也可以通過(guò)修改pfile文件設(shè)置此參數(shù)。
4,該參數(shù)為靜態(tài)參數(shù),需重啟數(shù)據(jù)庫(kù)后生效,創(chuàng)建LOGMNR數(shù)據(jù)字典。
5,添加需要分析的歸檔日志。
6,開(kāi)始日志挖掘,分析日志。
7,查看日志信息,就可以了。