一
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、集賢網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城網(wǎng)站制作、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為集賢等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
首先查看是否開啟閃回:
SQL select flashback_on from V$database;
FLASHBACK_ON
------------------
NO
二
如果已經(jīng)開啟了閃回,無須執(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;
三
再進行確認:
SQL select flashback_on from V$database;
FLASHBACK_ON
------------------
YES
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,查看日志信息,就可以了。
可按以下步驟配置閃回數(shù)據(jù)庫:(確保數(shù)據(jù)庫處于ARCHIVELOG 模式。)
1. 配置快速恢復區(qū)。
2. 使用初始化參數(shù)DB_FLASHBACK_RETENTION_TARGET 設(shè)置保留目標。可指定
一個上限(以分鐘為單位),指示數(shù)據(jù)庫能夠閃回到多長時間以前。本示例使用
了 2880 分鐘,相當于兩天。此參數(shù)只是一個目標,并不提供任何保證。閃回時間
間隔取決于快速恢復區(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ù)庫日志。
注:僅當在獨占模式下裝載(而不是打開)數(shù)據(jù)庫時才能啟用閃回數(shù)據(jù)庫。
1.確認當前模式
SYS AS SYSDBA on 29-MAR-05 select flashback_on from v$database;
FLA
---
NO
2.檢查/修改恢復區(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:指定閃回恢復區(qū)的位置
(2).db_recovery_file_dest_size:指定閃回恢復區(qū)的可用空間大小
(3).db_flashback_retention_target:指定數(shù)據(jù)庫可以回退的時間,單位為分鐘,默認1440分鐘,也就是一天。當然,實際上可回退的時間還決定于閃回恢復區(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.
查看回收站中表
select?object_name,original_name,partition_name,type,ts_name,createtime,droptime?from?recyclebin;
恢復表
SQLflashback?table?test_drop?to?before?drop;或
SQLflashback?table?"BIN$b+XkkO1RS5K10uKo9BfmuA==$0"?to?before?drop;
注:必須9i或10g以上版本支持,flashback無法恢復全文索引
以下為參考資料
使用 Oracle Database 10g 中的閃回表特性,可以毫不費力地恢復被意外刪除的表
以下是一個不該發(fā)生卻經(jīng)常發(fā)生的情況:用戶刪除了一個非常重要的表 ― 當然是意外地刪除 ― 并需要盡快地恢復。(在某些時候,這個不幸的用戶可能就是 DBA?。?/p>
Oracle9i Database 推出了閃回查詢選項的概念,以便檢索過去某個時間點的數(shù)據(jù),但它不能閃回 DDL 操作,如刪除表的操作。唯一的恢復方法是在另一個數(shù)據(jù)庫中使用表空間的時間點恢復,然后使用導出/導入或其他方法,在當前數(shù)據(jù)庫中重新創(chuàng)建表。這一過程需要 DBA 進行大量工作并且耗費寶貴的時間,更不用說還要使用另一個數(shù)據(jù)庫進行克隆。
請使用 Oracle Database 10g 中的閃回表特性,它使得被刪除表的恢復過程如同執(zhí)行幾條語句一樣簡單。讓我們來看該特性是如何工作的。
刪除那個表!
首先,讓我們查看當前模式中的表。
SQL?select?*?from?tab;
TNAME
TABTYPE
CLUSTERID
---------------------?-?--?--?---?------
RECYCLETEST
TABLE
現(xiàn)在,我們意外地刪除了該表:
SQL?drop?table?recycletest;
Table?dropped.
現(xiàn)在讓我們來查看該表的狀態(tài)。
SQL?select?*?from?tab;
TNAME
TABTYPE
CLUSTERID
---------------------------?-?--?--?---?------
BIN$04LhcpndanfgMAAAAAANPw==$0?TABLE
表 RECYCLETEST 已不存在,但是請注意出現(xiàn)新表 BIN$04LhcpndanfgMAAAAAANPw==$0。這就是所發(fā)生的事情:被刪除的表 RECYCLETEST 并沒有完全消失,而是重命名為一個由系統(tǒng)定義的名稱。它存在于同一個表空間中,具有與原始表相同的結(jié)構(gòu)。如果在該表上定義了索引或觸發(fā)器,則它們也被重命名,使用與表相同的命名規(guī)則。任何相關(guān)源(如過程)都失效;原始表的觸發(fā)器和索引被改為放置在重命名的表 BIN$04LhcpndanfgMAAAAAANPw==$0 上,保持被刪除表的完整對象結(jié)構(gòu)。
表及其相關(guān)對象被放置在一個稱為"回收站"的邏輯容器中,它類似于您 PC 機中的回收站。但是,對象并沒有從它們原先所在的表空間中刪除;它們?nèi)匀徽加媚抢锏目臻g?;厥照局皇且粋€列出被刪除對象目錄的邏輯結(jié)構(gòu)。在 SQL*Plus 提示符處使用以下命令來查看其內(nèi)容(您需要使用 SQL*Plus 10.1 來進行此操作):
SQL?show?recyclebin
ORIGINAL?NAME
RECYCLEBIN?NAME
OBJECT?TYPE
DROP?TIME
-------------?-?--?-----------------------?-?--?-----?-?--?--------------
RECYCLETEST
BIN$04LhcpndanfgMAAAAAANPw==$0?TABLE
2004-02-16:21:13:31
結(jié)果顯示了表的原始名稱 RECYCLETEST,并顯示了回收站中的新名稱,該名稱與我們看到的刪除后所創(chuàng)建的新表名稱相同。(注意:確切的名稱可能因平臺不同而不同。)為恢復該表,您所需要做的就是使用 FLASHBACK TABLE 命令:
SQL?FLASHBACK?TABLE?RECYCLETEST?TO?BEFORE?DROP;
FLASHBACK?COMPLETE.
SQL?SELECT?*?FROM?TAB;
TNAME
TABTYPE
CLUSTERID
---------------------------?-?--?--?---?------
RECYCLETEST
TABLE
瞧!表毫不費力地恢復了。如果現(xiàn)在查看回收站,它將是空的。
記住,將表放在回收站里并不在原始表空間中釋放空間。要釋放空間,您需要使用以下命令清空回收站:
PURGE?RECYCLEBIN;
但是如果您希望完全刪除該表而不需要使用閃回特性,該怎么辦?在這種情況下,可以使用以下命令永久刪除該表:
DROP?TABLE?RECYCLETEST?PURGE;
此命令不會將表重命名為回收站中的名稱,而是永久刪除該表,就象 10g 之前的版本一樣。
管理回收站
如果在該過程中沒有實際刪除表 ― 因而沒有釋放表空間 ― 那么當被刪除的對象占用了所有空間時,會發(fā)生什么事?
答案很簡單:這種情況根本不會出現(xiàn)。當表空間被回收站數(shù)據(jù)完全占滿,以至于必須擴展數(shù)據(jù)文件來容納更多數(shù)據(jù)時,可以說表空間處于"空間壓力"情況下。此時,對象以先進先出的方式從回收站中自動清除。在刪除表之前,相關(guān)對象(如索引)被刪除。
同樣,空間壓力可能由特定表空間定義的用戶限額而引起。表空間可能有足夠的空余空間,但用戶可能將其在該表空間中所分配的部分用完了。在這種情況下,Oracle 自動清除該表空間中屬于該用戶的對象。
此外,有幾種方法可以手動控制回收站。如果在刪除名為 TEST 的特定表之后需要從回收站中清除它,可以執(zhí)行
PURGE?TABLE?TEST;
或者使用其回收站中的名稱:
PURGE?TABLE?"BIN$04LhcpndanfgMAAAAAANPw==$0";
此命令將從回收站中刪除表 TEST 及所有相關(guān)對象,如索引、約束等,從而節(jié)省了空間。但是,如果要從回收站中永久刪除索引,則可以使用以下命令來完成工作:
purge?index?in_test1_01;
此命令將僅僅刪除索引,而將表的拷貝留在回收站中。
有時在更高級別上進行清除可能會有用。例如,您可能希望清除表空間 USERS 的回收站中的所有對象??梢詧?zhí)行:
PURGE?TABLESPACE?USERS;
您也許希望只為該表空間中特定用戶清空回收站。在數(shù)據(jù)倉庫類型的環(huán)境中,用戶創(chuàng)建和刪除許多臨時表,此時這種方法可能會有用。您可以更改上述命令,限定只清除特定的用戶:
PURGE?TABLESPACE?USERS?USER?SCOTT;
諸如 SCOTT 等用戶可以使用以下命令來清空自己的回收站
PURGE?RECYCLEBIN;
DBA 可以使用以下命令清除任何表空間中的所有對象
PURGE?DBA_RECYCLEBIN;
可以看到,可以通過多種不同方法來管理回收站,以滿足特定的需要。
表版本和閃回功能
用戶可能會經(jīng)常多次創(chuàng)建和刪除同一個表,如:
CREATE?TABLE?TEST?(COL1?NUMBER);
INSERT?INTO?TEST?VALUES?(1);
commit;
DROP?TABLE?TEST;
CREATE?TABLE?TEST?(COL1?NUMBER);
INSERT?INTO?TEST?VALUES?(2);
commit;
DROP?TABLE?TEST;
CREATE?TABLE?TEST?(COL1?NUMBER);
INSERT?INTO?TEST?VALUES?(3);
commit;
DROP?TABLE?TEST;
此時,如果您要對表 TEST 執(zhí)行閃回操作,那么列 COL1 的值應(yīng)該是什么?常規(guī)想法可能認為從回收站取回表的第一個版本,列 COL1 的值是 1。實際上,取回的是表的第三個版本,而不是第一個。因此列 COL1 的值為 3,而不是 1。
此時您還可以取回被刪除表的其他版本。但是,表 TEST 的存在不允許出現(xiàn)這種情況。您有兩種選擇:
使用重命名選項:
FLASHBACK?TABLE?TEST?TO?BEFORE?DROP?RENAME?TO?TEST2;
FLASHBACK?TABLE?TEST?TO?BEFORE?DROP?RENAME?TO?TEST1;
這些語句將表的第一個版本恢復到 TEST1,將第二個版本恢復到 TEST2。 TEST1 和 TEST2 中的列 COL1 的值將分別是 1 和 2?;蛘撸?/p>
使用表的特定回收站名稱進行恢復。為此,首先要識別表的回收站名稱,然后執(zhí)行:
FLASHBACK?TABLE?"BIN$04LhcpnoanfgMAAAAAANPw==$0"?TO?BEFORE?DROP?RENAME?TO?TEST2;
FLASHBACK?TABLE?"BIN$04LhcpnqanfgMAAAAAANPw==$0"?TO?BEFORE?DROP?RENAME?TO?TEST1;
這些語句將恢復被刪除表的兩個版本。
警告......
取消刪除特性使表恢復其原始名稱,但是索引和觸發(fā)器等相關(guān)對象并沒有恢復原始名稱,它們?nèi)匀皇褂没厥照镜拿Q。在表上定義的源(如視圖和過程)沒有重新編譯,仍然保持無效狀態(tài)。必須手動得到這些原有名稱并應(yīng)用到閃回表。
信息保留在名為 USER_RECYCLEBIN 的視圖中。在對表進行閃回操作前,請使用以下查詢來檢索原有名稱。
SELECT?OBJECT_NAME,?ORIGINAL_NAME,?TYPE
FROM?USER_RECYCLEBIN
WHERE?BASE_OBJECT?=?(SELECT?BASE_OBJECT?FROM?USER_RECYCLEBIN
WHERE?ORIGINAL_NAME?=?'RECYCLETEST')
AND?ORIGINAL_NAME?!=?'RECYCLETEST';
OBJECT_NAME
ORIGINAL_N?TYPE
---------------------------?-?--?---?-?--?----
BIN$04LhcpnianfgMAAAAAANPw==$0?IN_RT_01
INDEX
BIN$04LhcpnganfgMAAAAAANPw==$0?TR_RT
TRIGGER
在表進行閃回操作后,表 RECYCLETEST 上的索引和觸發(fā)器將按照 OBJECT_NAME 列中所示進行命名。根據(jù)以上查詢,可以使用原始名稱重新命名對象,如下所示:
ALTER?INDEX?"BIN$04LhcpnianfgMAAAAAANPw==$0"?RENAME?TO?IN_RT_01;
ALTER?TRIGGER?"BIN$04LhcpnganfgMAAAAAANPw==$0"?RENAME?TO?TR_RT;
一個值得注意的例外情況是位圖索引。當刪除位圖索引時,它們并不放置在回收站中 ― 因此無法檢索它們。約束名稱也無法從視圖中檢索。必須從其他來源對它們進行重命名。
閃回表的其他用途
閃回刪除表功能不僅限于恢復表的刪除操作。與閃回查詢類似,您還可以使用它將表恢復到不同的時間點,形如flashback table tmm2076 TO TIMESTAMP to_timestamp('2007-05-22
12:00:00','yyyy-mm-dd hh24:mi:ss')
彈出ORA-08189錯誤,需要執(zhí)行以下命令先:
alter table tmm2076 enable row movement這個命令的作用是,允許oracle修改分配給行的rowid。
然后再flashback,數(shù)據(jù)被恢復完畢。
當前名稱:oracle如何閃回 oracle 閃回 保留多久
分享鏈接:http://www.rwnh.cn/article6/hicpig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、外貿(mào)建站、靜態(tài)網(wǎng)站、網(wǎng)站策劃、企業(yè)網(wǎng)站制作、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)