日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 9i闪回schema,Oracle 9i闪回查询的新特性

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 9i闪回schema,Oracle 9i闪回查询的新特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從Oracle9i開始,Oracle開始提供閃回查詢特性(flashback query),允許將回滾段中的數據進行閃回。通過這個例子我們來看一下這個從Oracle9i開始提供的新特性。

首先我們注意到這里存在一個信息: ctl max scn: 0x0819.003f594b?,這個轉換為SCN值就是:SQL>?select?(to_number('819','xxxx')*power(2,32)?+?to_number('3f594b','xxxxxxxx'))?scn

2??from?dual;

SCN

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

8903471356235

可以查詢一下當前數據庫的SCN:SQL>?select?dbms_flashback.get_system_change_number?scn?from?dual;

SCN

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

8903471437610

通過特定的語法,我們可以將SCN為8903471356235的歷史狀態數據查詢出來:SQL>?select?*?from?emp?as?of?scn?8903471356235?where?empno?in?(7788,7782,7698);

EMPNO?ENAME??????JOB?????????????????MGR?HIREDATE?????????SAL???????COMM????DEPTNO

----------?----------?---------?----------?---------?----------?----------?----------

7698?BLAKE??????MANAGER?????????7839?01-MAY-81???????2850????????????????????30

7782?CLARK??????MANAGER?????????7839?09-JUN-81???????2450????????????????????10

7788?SCOTT??????ANALYST?????????7566?19-APR-87???????3000????????????????????20

在結果中,我們注意到3名員工的薪水恢復到了之前值。而在當前的查詢中,這個數值是變化后的4000:SQL>?select?*?from?emp?where?empno?in?(7788,7782,7698);

EMPNO?ENAME??????JOB??????????????MGR?HIREDATE?????????SAL???????COMM?????DEPTNO

----------?----------?---------?----------?---------?----------?----------?----------

7698?BLAKE??????MANAGER?????????7839?01-MAY-81???????4000????????????????????30

7782?CLARK??????MANAGER?????????7839?09-JUN-81???????4000????????????????????10

7788?SCOTT??????ANALYST??????????7566?19-APR-87???????4000????????????????????20

由于這個查詢需要從UNDO中獲取前鏡像信息,如果UNDO中的信息被覆蓋,則以上查詢將會失敗。為了模擬不同情況,創建一個新的UNDO表空間,切換數據庫使用新的?UNDO表空間,再將原表空間Offline:SQL>?create?undo?tablespace?undotbs?datafile?'/opt/oracle/oradata/conner/undotbs.dbf'?size?2M;

Tablespace?created.

SQL>?alter?system?set?undo_tablespace=undotbs;

System?altered.

SQL>?alter?tablespace?UNDOTBS1?offline;

Tablespace?altered.

SQL>?alter?session?set?events?=?'immediate?trace?name?flush_cache';

Session?altered.

再來查詢,此時出現錯誤,記錄該文件已經不可讀取:SQL>?select?*?from?emp?as?of?scn?8903471356235?where?empno?in?(7788,7782,7698);

select?*?from?emp?as?of?scn?8903471356235?where?empno?in?(7788,7782,7698)

*

ERROR?at?line?1:

ORA-00376:?file?2?cannot?be?read?at?this?time

ORA-01110:?data?file?2:?'/opt/oracle/oradata/conner/undotbs1.dbf'

將UNDOTBS1重新啟用,則此時前鏡像信息再次可以查詢:SQL>?alter?tablespace?UNDOTBS1?online;

Tablespace?altered.

SQL>?alter?system?set?undo_tablespace=UNDOTBS1;

System?altered.

在其他Session執行大量事務,使得前鏡像信息被覆蓋:SQL>?begin

2??for?i?in?1?..?2000?loop

3??update?emp?set?sal=4000;

4??rollback;

5??end?loop;

6??end;

7??/

PL/SQL?procedure?successfully?completed.

SQL>?/

PL/SQL?procedure?successfully?completed.

SQL>?/

觀察回滾段的使用:SQL>?select?usn,xacts,RSSIZE,HWMSIZE?from?v$rollstat?where?usn=6;

USN??????XACTS?????RSSIZE????HWMSIZE

----------?----------?----------?----------

6??????????1????7331840????7331840

那么再次查詢就可能收到如下錯誤:SQL>?select?*?from?emp?as?of?scn?8903471356235?where?empno?in?(7788,7782,7698);

select?*?from?emp?as?of?scn?8903471356235?where?empno?in?(7788,7782,7698)

*

ERROR?at?line?1:

ORA-01555:?snapshot?too?old:?rollback?segment?number?6?with?name?"_SYSSMU6$"?too?small

ORA-01555錯誤出現,說明要查詢的前鏡像信息已經失去。

總結

以上是生活随笔為你收集整理的oracle 9i闪回schema,Oracle 9i闪回查询的新特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。