資料庫flashback
[oracle@rhel5 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Nov 30 22:56:46 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
檢視資料庫能閃回到的最早的scn,如果資料庫沒有開閃回功能是沒有記錄返回的。
SQL> select oldest_flashback_scn from v$flashback_database_log;
no rows selected
檢視資料庫是否開閃回
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
資料庫open狀態嘗試開啟資料庫的閃回功能,返回報錯資訊說明需要在mount狀態下來操作。
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.
關閉資料庫
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
開啟資料庫到mount狀態
SQL> startup mount
ORACLE instance started.
Total System Global Area 184549376 bytes
Fixed Size 1218412 bytes
Variable Size 83888276 bytes
Database Buffers 96468992 bytes
Redo Buffers 2973696 bytes
Database mounted.
資料庫在mount狀態下再次嘗試開啟資料庫的閃回功能,又返回錯誤資訊說明資料庫在非歸檔狀態下不支援資料庫的閃回。
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38707: Media recovery is not enabled.
開歸檔
SQL> alter database archivelog;
Database altered.
開閃回成功
SQL> alter database flashback on;
Database altered.
開啟資料庫
SQL> alter database open;
Database altered.
開啟歸檔,預設的歸檔目錄:USE_DB_RECOVERY_FILE_DEST ,與9i不同10g開啟歸檔很要簡單一些。以後可以自行修改歸檔目錄的位置,在此暫時保留預設。
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 59
Next log sequence to archive 61
Current log sequence 61
檢驗資料庫閃回是否開啟
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
檢視閃回區資訊,預設安裝大小為2G,根據資料庫的具體情況作修改。
SQL> show parameter recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 20G
recovery_parallelism integer 0
資料庫可以恢復到多少分鐘以前,預設1440分鐘(一天)
SQL> show parameter flash
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
檢視資料庫能恢復到最早的scn,和最早的時間
SQL> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TIME
-------------------- ---------------------
1021372 20101130 23:07:18
檢視回收站:select * from recyclebin;
然後恢復物件:flashback table TABLENAME to before drop;
刪除不放回回收站:drop table TABLENAME purge;
1. 需要有flashback any table的系統許可權或者是flashback這個表的物件許可權;
2. 需要有對這個表的基本的dml,alter操作許可權;
3. 必須保證該表row movement(這主要是讓flashback記住表的rowid)
ORA-08189: cannot flashback the table because row movement is not enabled
但是丟擲了8189錯誤,原因就是因為表沒有row movement,改變下表的屬性:
SQL> alter table test_tablename enable row movement;
再執行閃回操作;
二,例項
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);
2.插入測試資料:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
例如:
FlashBack table TBL_TEST to timestamp to_timestamp('2009-8-1 16:59:36','yyyy-mm-dd
報錯:ORA-08189: cannot flashback the table because row movement is not enabled
FlashBack table TBL_TEST to timestamp to_timestamp('2009-8-1 16:59:36','yyyy-mm-dd
例如:
update TBL_TEST set pid=1 where id =5;
FlashBack table TBL_TEST to timestamp to_timestamp('2009-8-1 16:59:36','yyyy-mm-dd
(1)顯示回收站資訊
select * from RECYCLEBIN;
(2)確定被刪除表存在後,可以恢復誒刪除表,此時可以指定表明或者回收站物件名
flashback table TBL_TEST to before drop;
或 flashback table "BIN$zgwx7wCsQ92JRcrAVpABQg==$0" to before drop
6.恢復被刪除表的同時可以改變被刪除表的名稱
flashback table TBL_TEST to before drop rename to test_TBL_TEST
或 flashback table "BIN$zgwx7wCsQ92JRcrAVpABQg==$0" to before drop rename to test_TBL_TEST
7.刪除不放回回收站:
drop table TBL_TEST purge;
本文出自 “在路上” 部落格,請務必保留此出處http://yuwenhu.blog.**.com/672091/186601
================================flash back 閃回測試================================
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 146803588 bytes
Database Buffers 457179136 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
資料庫已更改。
資料庫已更改。
資料庫日誌模式 存檔模式
自動存檔 啟用
存檔終點 USE_DB_RECOVERY_FILE_DEST
最早的聯機日誌序列 773
下一個存檔日誌序列 775
當前日誌序列 775
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string C:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 2G
--閃回相關備份檔案及檔案大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
--預設支援閃回的時間,單位為分。
FLASHBACK_ON
------------------
YES
SQL> col pid format 99
SQL> select program,pid,spid,background,pga_used_mem,pga_alloc_mem,pga_freeable_mem,pga_max_mem
2 from v$process where program like '%RVWR%';
------------------ --- ------------ - ------------ ------------- ---------------- -----------
ORACLE.EXE (RVWR) 16 2924 1 206881 623853 0 623853
POOL NAME BYTES
------------ -------------------------- ----------
shared pool flashback generation buff 3981204
STATISTIC# NAME CLASS VALUE STAT_ID
---------- ---------------------------------------------------------------- ---------- ---------- ----------
168 flashback log writes 2 11 3123176560
表已建立。
COUNT(1)
----------
52511
會話已更改。
SYSDATE
-------------------
2009-06-04 11:06:12
SQL> truncate table yangxl;
表被截斷。
SQL> select * from yangxl;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 150997892 bytes
Database Buffers 452984832 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
閃回完成。
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01589: 要開啟資料庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
資料庫已更改。
COUNT(*)
----------
52511
--4. 閃回表測試
SQL> select object_name,original_name,type from user_recyclebin;
未選定行
表已刪除。
------------------------------ -------------------------------- -------------------------
BIN$93EgIpKgQb2UYDLGbvb7tQ==$0 YANGXL TABLE
BIN$9Bl7UGOgT36SmT9+7g7ijQ==$0 YANGXL TABLE
BIN$QlDzOZx8TWmM+YuaXYWIrA==$0 YANGXL TABLE
BIN$gr27sKM4T5imRUIE4Lu1eQ==$0 YANGXL TABLE
BIN$wSaMD+dxQxqEqR1RG/bJKA==$0 YANGXL TABLE
閃回完成。
COUNT(1)
----------
9
--閃回表都可以,閃回資料肯定是沒有問題的了。
SQL> select count(1) from yangxl;
COUNT(1)
----------
9
SQL> delete from yangxl where rownum = 1;
已刪除 1 行。
提交完成。
flashback table yangxl to timestamp to_timestamp('2009-06-04 13:07:01','yyyy-mm-dd hh24:mi:ss') *
第 1 行出現錯誤:
ORA-08189: 因為未啟用行移動功能, 不能閃回表
表已更改。
閃回完成。
COUNT(1)
----------
9
--6. 回收站
SQL> show parameter recyclebin
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
系統已更改。
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string OFF
系統已更改。
SQL> purge user_recyclebin;
回收站已清空。
未選定行
SQL> purge dba_recyclebin;
DBA 回收站已清空。
--清空本使用者回收站和所有使用者回收站(需SYS許可權)
purge table ;
SQL> purge table yangxl;
表已清除。
SQL> purge index ind_yxl;
索引已清除。
注:如果清除的物件在回收站中有同名的,那麼會清除在回收站中時間更久的那個物件
1. 使用者 SYS、SYSTEM 不支援閃回
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9390331/viewspace-694380/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Flashback]Flashback Database閃回資料庫實驗Database資料庫
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- 【Flashback】啟用Flashback Database閃回資料庫功能Database資料庫
- 【Flashback】Flashback Database閃回資料庫功能實踐Database資料庫
- Flashback Database 閃回資料庫Database資料庫
- [Flashback]開啟資料庫閃回資料庫功能資料庫
- 閃回資料庫(flashback database)知識分享資料庫Database
- 資料庫使用flashback進行快速回退資料庫
- 資料庫開啟了FLASHBACK後,如要關閉achivelog要先取消FLASHBACK資料庫Hive
- 閃回資料庫時間視窗(flashback database window)資料庫Database
- 一種快速恢復資料庫的方法——Flashback DB資料庫
- 第5章 閃回資料庫Understanding the Flashback Database資料庫Database
- 資料庫的FLASHBACK 與ARCHIVELOG模式的關係資料庫Hive模式
- flashback query閃回資料
- 【FLASHBACK】關於閃回資料庫的一點說明資料庫
- 升級失敗後,資料庫降級方案(flashback database)資料庫Database
- Oracle 12.2新特性: PDB級閃回資料庫(Flashback PDB)Oracle資料庫
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- 使用Flashback讓Failover資料庫重新加入DG環境AI資料庫
- flashback_area 區域溢位導致資料庫當機資料庫
- 利用flashback閃回表和資料
- 使用flashback query巧妙抽取指定資料
- flashback實現資料快速復原
- 使用Flashback Transaction方法來恢復資料表資料
- 【Flashback】使用檢視快速獲得Flashback Query閃回查詢資料
- 【Flashback】啟用閃回資料庫功能需要在歸檔模式下完成資料庫模式
- 整理有關Flashback的相關資料
- 閃回資料歸檔-- Flashback Data ArchiveHive
- flashback_transaction_query的資料來源!
- 【Flashback】使用Flashback Drop技術閃回被DROP表的指定版本資料
- 【DG】利用閃回資料庫(flashback)修復Failover後的DG環境資料庫AI
- flashback_transaction_query資料保留的時間
- Flashback Query恢復誤刪除資料(轉)
- 啟用Flashback Database閃回資料庫功能(閃回區滿解決辦法 )Database資料庫
- oracle9i使用flashback恢復資料(轉)Oracle
- 【Flashback】11g的閃回資料歸檔初探
- 巧用flashback database實現靈活的資料切換Database
- 巧用flashback database實現靈活的資料回滾Database