oracle10g閃回實驗
一點介紹:
oracle從10g開始,提供了閃回功能,即flashbask
根據oracle官方文件,flashback功能又分為五種:
1:flashback database (利用閃回日誌)
2:flashback drop (利用回收站:recyclebin)
3:flashback table (利用undo)
4:flashback query (利用undo)
5:flashback version query (利用undo)
6:flashback transaction query (利用undo)
flashback drop 是針對資料庫表的操作
flashback table 是針對表裡的dml操作,即:insert、update、delete
flashback query 是針對select查詢操作
flashback version query和flashback transaction query聯合起來,可以檢視到某個事物在某個時間段內對行的操作,並記錄事物修改的sql語句,給管理員提供分析診斷資訊
下面先簡單測試一下 flashback table 和flashback query操作
OS: redhat linux as4 u2
DB: oracle10gr2
C:\>sqlplus
SQL*Plus: Release 10.1.0.2.0 - Production on 星期三 6月 29 16:59:24 2011
Copyright (c) 1982, 2004, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
SQL>
SQL>
SQL> show user;
USER 為 "SYSTEM"
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
SQL>
SQL> insert into scott.dept values(60,'k','c');
已建立 1 行。
SQL> commit;
提交完成。
SQL>
SQL>
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
60 k c
已選擇6行。
SQL>
SQL>
SQL>
SQL>
確定當前系統scn值,以便設定恢復的起點
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
829848
SQL>
此時模擬不小心刪掉表裡的一條資料,並已經做了提交
SQL> delete from scott.dept where deptno=60;
已刪除 1 行。
SQL> commit;
提交完成。
正常查詢的話,scott使用者下的dept表裡已經沒有了deptno為60的資料
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
此時利用資料庫的閃回查詢,即flashback query 功能,可以檢視到刪除之前的那個點上的值
SQL> select * from scott.dept as of scn 829848;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
60 k c
已選擇6行。
flashback table需要啟用行移動功能
SQL> flashback table scott.dept to scn 829848;
flashback table scott.dept to scn 829848
*
第 1 行出現錯誤:
ORA-08189: cannot flashback the table because row movement is not enabled
SQL> alter table scott.dept enable row movement;
表已更改。
flashback table
SQL> flashback table scott.dept to scn 829848;
閃回完成。
SQL>
SQL>
可以看到表已經閃回到了以前那個scn點上
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
60 k c
已選擇6行。
SQL>
總結: 對於oracle10g的版本而言,如果現網中不小心對錶進行了dml操作,並且事物已經提交,可以用flashback table功能進行恢復。閃回時,既可以用scn,也可以用timestamp
oracle從10g開始,提供了閃回功能,即flashbask
根據oracle官方文件,flashback功能又分為五種:
1:flashback database (利用閃回日誌)
2:flashback drop (利用回收站:recyclebin)
3:flashback table (利用undo)
4:flashback query (利用undo)
5:flashback version query (利用undo)
6:flashback transaction query (利用undo)
flashback drop 是針對資料庫表的操作
flashback table 是針對表裡的dml操作,即:insert、update、delete
flashback query 是針對select查詢操作
flashback version query和flashback transaction query聯合起來,可以檢視到某個事物在某個時間段內對行的操作,並記錄事物修改的sql語句,給管理員提供分析診斷資訊
下面先簡單測試一下 flashback table 和flashback query操作
OS: redhat linux as4 u2
DB: oracle10gr2
C:\>sqlplus
SQL*Plus: Release 10.1.0.2.0 - Production on 星期三 6月 29 16:59:24 2011
Copyright (c) 1982, 2004, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
SQL>
SQL>
SQL> show user;
USER 為 "SYSTEM"
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
SQL>
SQL> insert into scott.dept values(60,'k','c');
已建立 1 行。
SQL> commit;
提交完成。
SQL>
SQL>
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
60 k c
已選擇6行。
SQL>
SQL>
SQL>
SQL>
確定當前系統scn值,以便設定恢復的起點
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
829848
SQL>
此時模擬不小心刪掉表裡的一條資料,並已經做了提交
SQL> delete from scott.dept where deptno=60;
已刪除 1 行。
SQL> commit;
提交完成。
正常查詢的話,scott使用者下的dept表裡已經沒有了deptno為60的資料
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
此時利用資料庫的閃回查詢,即flashback query 功能,可以檢視到刪除之前的那個點上的值
SQL> select * from scott.dept as of scn 829848;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
60 k c
已選擇6行。
flashback table需要啟用行移動功能
SQL> flashback table scott.dept to scn 829848;
flashback table scott.dept to scn 829848
*
第 1 行出現錯誤:
ORA-08189: cannot flashback the table because row movement is not enabled
SQL> alter table scott.dept enable row movement;
表已更改。
flashback table
SQL> flashback table scott.dept to scn 829848;
閃回完成。
SQL>
SQL>
可以看到表已經閃回到了以前那個scn點上
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 xx xx
60 k c
已選擇6行。
SQL>
總結: 對於oracle10g的版本而言,如果現網中不小心對錶進行了dml操作,並且事物已經提交,可以用flashback table功能進行恢復。閃回時,既可以用scn,也可以用timestamp
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28373936/viewspace-1722301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實驗-閃回資料庫資料庫
- dg_閃回資料庫實驗資料庫
- Oracle10g閃回恢復區詳解--開啟,設定閃回區Oracle
- 兩種閃回查詢的使用實驗
- [Flashback]Flashback Database閃回資料庫實驗Database資料庫
- Oracle10g閃回恢復區詳解Oracle
- 學習Oracle10g:閃回版本查詢Oracle
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- (f)--閃回恢復區---實踐2---閃回表(閃回DML部分資料會用到閃回查詢)
- Oracle -- 閃回恢復區---實踐1---閃回庫Oracle
- 閃回資料庫之後匯入資料實驗資料庫
- 閃回表、閃回查詢
- oracle10g新特性:閃回恢復區(Flash recovery area)Oracle
- 閃回(關於閃回查詢)
- 閃回刪除、閃回查詢
- 閃回技術二:閃回表
- 【Oracle 12c資料庫支援閃回庫功能】實驗Oracle資料庫
- 【閃回特性之閃回查詢】使用閃回查詢(select as of)
- 閃回(關於閃回資料庫)資料庫
- 基本閃回查詢和閃回表
- 閃回技術一:閃回查詢
- DM7閃回與閃回查詢
- 閃回查詢之閃回版本查詢
- 閃回查詢之閃回表查詢
- oracle閃回Oracle
- oracle 閃回Oracle
- Oracle閃回技術之閃回資料庫Oracle資料庫
- [閃回特性之閃回版本查詢]Flashback Version Query
- Flashback Drop閃回刪除功能實踐
- oracle 閃回 flashbackOracle
- oracle閃回特性Oracle
- 閃回查詢
- (f)--閃回恢復區---實踐3---閃回查詢(基於AUM (auto undo managemet))
- 開閃回及閃迴歸檔
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- 【備份恢復】 閃回技術之閃回刪除
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- 【Flashback】Flashback Drop閃回刪除功能實踐