亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

講解Oracle數據庫10g新特性中的閃回查詢

2024-08-29 13:52:44
字體:
來源:轉載
供稿:網友
這篇論壇文章(賽迪網技術社區)深入探討了Oracle數據庫10g新特性中的閃回查詢,更多相關內容請參考下文。

不需要設置,立即識別對行的所有更改

在 Oracle9i Database 中,我們看到它推出了以閃回查詢形式表示的“時間機器”。該特性允許 DBA 看到特定時間的列值,只要在還原段中提供該數據塊此前鏡像的拷貝即可。但是,閃回查詢只提供某時刻數據的固定快照,而不是在兩個時間點之間被更改數據的運行狀態表示。某些應用程序,如涉及到外幣管理的應用程序,可能需要了解一段時期內數值數據的變化,而不僅僅是兩個時間點的數值。由于閃回版本查詢特性,Oracle Database 10g 能夠更方便高效地執行該任務。

查詢對表的更改

在本示例中,我使用了一個銀行外幣管理應用程序。其數據庫含有一個名稱為 RATES 的表,用于記錄特定時間的匯率。

  SQL> desc rates

  Name       Null?Type

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

  CURRENCY          VARCHAR2(4)

  RATE            NUMBER(15,10)

 

 

該表顯示 US$ 與各種其他貨幣的匯率,在 CURRENCY 列中顯示。在金融服務行業中,匯率不但在變更時進行更新,而且被記錄在歷史中。需要這種方式的原因是銀行交易可能在“過去時間”生效,以便適應由于匯款而耗費的時間。例如,對于一項在上午 10:12 發生但在上午 9:12 生效的交易,其有效匯率是上午 9:12 的匯率,而不是現在的匯率。

直到現在,唯一的選擇是創建一個匯率歷史表來存儲匯率的變更,然后查詢該表是否提供歷史記錄。另一種選擇是在 RATES 表本身中記錄特定匯率適用性的開始和結束時間。當發生變更時,現有行中的 END_TIME 列被更新為 SYSDATE,并插入一個具有新匯率的新行,其 END_TIME 為 NULL。

但是在 Oracle Database 10g 中,閃回版本查詢特性不需要維護歷史表或存儲開始和結束時間。使用該特性,您不必進行額外的設置,即可獲得某行在過去特定時間的值。

例如,假定該 DBA 在正常業務過程中數次更新匯率 — 甚至刪除了某行并重新插入該行:

  insert into rates values ('EURO',1.1012);

  commit;

  update rates set rate = 1.1014;

  commit;

  update rates set rate = 1.1013;

  commit;

  delete rates;

  commit;

  insert into rates values ('EURO',1.1016);

  commit;

  update rates set rate = 1.1011;

  commit;

  

在進行了這一系列操作后,DBA 將通過以下命令獲得 RATE 列的當前提交值:

  SQL> select * from rates;

  

  CURR    RATE

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

  EURO   1.1011

 

 

此輸出顯示 RATE 的當前值,沒有顯示從第一次創建該行以來發生的所有變更。這時使用閃回查詢,您可以找出給定時間點的值;但我們對構建變更的審計線索更感興趣 — 有些類似于通過便攜式攝像機來記錄變更,而不只是在特定點拍攝一系列快照。

以下查詢顯示了對表所做的更改:

select versions_starttime, versions_endtime, versions_xid,

versions_Operation, rate

from rates versions between timestamp minvalue and maxvalue

order by VERSIONS_STARTTIME

/

VERSIONS_STARTTIME   VERSIONS_ENDTIME    VERSIONS_XID   V    RATE

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

01-DEC-03 03.57.12 PM 01-DEC-03 03.57.30 PM 0002002800000C61 I   1.1012

01-DEC-03 03.57.30 PM 01-DEC-03 03.57.39 PM 000A000A00000029 U   1.1014

01-DEC-03 03.57.39 PM 01-DEC-03 03.57.55 PM 000A000B00000029 U   1.1013

01-DEC-03 03.57.55 PM             000A000C00000029 D   1.1013

01-DEC-03 03.58.07 PM 01-DEC-03 03.58.17 PM 000A000D00000029 I   1.1016

01-DEC-03 03.58.17 PM             000A000E00000029 U   1.1011

注意,此處顯示了對該行所作的所有更改,甚至包括該行被刪除和重新插入的情況。VERSION_OPERATION 列顯示對該行執行了什么操作 (Insert/Update/Delete)。所做的這些工作不需要歷史表或額外的列。

在上述查詢中,列 versions_starttime、versions_endtime、versions_xid、versions_operation 是偽列,與 ROWNUM、LEVEL 等其他熟悉的偽列相類似。其他偽列 — 如 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN — 顯示了該時刻的系統更改號。列 versions_xid 顯示了更改該行的事務標識符。有關該事務的更多詳細信息可在視圖 FlashBACK_TRANSACTION_QUERY 中找到,其中列 XID 顯示事務 id。例如,使用上述的 VERSIONS_XID 值 000A000D00000029,UNDO_SQL 值顯示了實際的語句。

  SELECT UNDO_SQL

  FROM FLASHBACK_TRANSACTION_QUERY

  WHERE XID = '000A000D00000029';

  

  UNDO_SQL

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

  insert into "ANANDA"."RATES"("CURRENCY","RATE")

values ('EURO','1.1013');

 

 

除了實際語句之外,該視圖還顯示提交操作的時間標記和 SCN、查詢開始時的 SCN 和時間標記以及其他信息。

找出一段時期中的變更

現在,讓我們來看如何有效地使用這些信息。假設我們需要找出下午 3:57:54 時 RATE 列的值。我們可以執行:

  select rate, versions_starttime, versions_endtime

  from rates versions

  between timestamp

  to_date('12/1/2003 15:57:54','mm/dd/yyyy hh24:mi:ss')

  and to_date('12/1/2003 16:57:55','mm/dd/yyyy hh24:mi:ss')

  /

  

  RATE VERSIONS_STARTTIME   VERSIONS_ENDTIME

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

    1.1011

 

 

此查詢與閃回查詢類似。在以上的示例中,開始和結束時間為空,表示匯率在該時間段中沒有更改,而是包含一個時間段。還可以使用 SCN 來找出過去的版本值。可以從偽列 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN 中獲得 SCN 號。以下是一個示例:

  select rate, versions_starttime, versions_endtime

  from rates versions

  between scn 1000 and 1001

  /

 

 

使用關鍵詞 MINVALUE 和 MAXVALUE,可以顯示還原段中提供的所有變更。您甚至可以提供一個特定的日期或 SCN 值作為范圍的一個端點,而另一個端點是文字 MAXVALUE 或 MINVALUE。例如,以下查詢提供那些只從下午 3:57:52 開始的變更,而不是全部范圍的變更:

select versions_starttime, versions_endtime, versions_xid,

versions_operation, rate

from rates versions between timestamp

to_date('12/11/2003 15:57:52', 'mm/dd/yyyy hh24:mi:ss')

and maxvalue

order by VERSIONS_STARTTIME

/

VERSIONS_STARTTIME   VERSIONS_ENDTIME    VERSIONS_XID   V    RATE

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

01-DEC-03 03.57.55 PM             000A000C00000029 D   1.1013

01-DEC-03 03.58.07 PM 01-DEC-03 03.58.17 PM 000A000D00000029 I   1.1016

01-DEC-03 03.58.17 PM             000A000E00000029 U   1.1011

 

最終的分析

閃回版本查詢隨取隨用地復制表變更的短期易變數值審計。這一優點使得 DBA 能夠獲得過去時間段中的所有變更而不是特定值,只要還原段中提供數據,就可以盡情使用。因此,最大的可用版本依賴于 UNDO_RETENTION 參數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
人妖精品videosex性欧美| 欧美电影免费观看电视剧大全| 国产女人精品视频| 国产一区二区三区精品久久久| 亚洲国内精品在线| 亚洲va欧美va国产综合剧情| 成人免费看片视频| 亚洲成色777777在线观看影院| 日本中文字幕成人| 国产又爽又黄的激情精品视频| 久久久www成人免费精品张筱雨| 欧美激情欧美激情在线五月| 丁香五六月婷婷久久激情| 亚洲综合日韩在线| 欧美午夜精品在线| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品极品尤物在线观看| 97欧美精品一区二区三区| 欧美大荫蒂xxx| 中文字幕在线日韩| 日韩成人久久久| 欧美精品久久一区二区| 亚洲综合一区二区不卡| 日韩欧美在线播放| 最近日韩中文字幕中文| 国产精品老牛影院在线观看| 在线观看国产成人av片| 97久久精品人人澡人人爽缅北| 国产玖玖精品视频| 欧美精品一本久久男人的天堂| 亚洲高清色综合| 色噜噜国产精品视频一区二区| 国产91色在线| 亚洲第一男人天堂| 欧美亚洲成人xxx| 一夜七次郎国产精品亚洲| 国产乱人伦真实精品视频| 国产va免费精品高清在线观看| 欧美精品18videosex性欧美| 国产精品成人免费电影| 国产精品一区专区欧美日韩| 最新国产精品亚洲| 蜜臀久久99精品久久久无需会员| 欧美日韩视频免费播放| 在线观看久久av| 38少妇精品导航| 国产精品video| 欧美日韩国产精品一区二区不卡中文| 日韩的一区二区| 亚洲欧美日韩另类| 97超视频免费观看| 国产综合在线视频| 亚洲精品中文字幕有码专区| 中文字幕无线精品亚洲乱码一区| 国产成人一区二区三区| 欧美色视频日本高清在线观看| 自拍视频国产精品| 91精品国产九九九久久久亚洲| 久久久这里只有精品视频| 欧美午夜片在线免费观看| 在线观看免费高清视频97| 亚洲精品国产精品久久清纯直播| 亚洲精品日韩久久久| 国产精品久久久久久久久久久久久| 欧美怡春院一区二区三区| 成人国产精品久久久久久亚洲| 亚洲区免费影片| 日本精品视频在线播放| 91精品综合久久久久久五月天| 国产香蕉97碰碰久久人人| 欧洲美女免费图片一区| 欧美精品久久久久久久久| 国产成人涩涩涩视频在线观看| 欧美插天视频在线播放| 97香蕉超级碰碰久久免费的优势| 久久免费少妇高潮久久精品99| 中文字幕久热精品视频在线| 亚洲美女中文字幕| 美日韩精品免费观看视频| 日韩**中文字幕毛片| 国产精品国产三级国产aⅴ9色| 欧美亚洲另类制服自拍| 亚洲欧美日韩天堂一区二区| 97精品伊人久久久大香线蕉| 日韩hd视频在线观看| 日韩精品丝袜在线| 国产欧美一区二区三区久久| 欧美一区二粉嫩精品国产一线天| 欧美性猛交xxxx富婆| 69久久夜色精品国产69| 欧美性黄网官网| 欧美日韩国产一区在线| 欧美乱大交xxxxx另类电影| 亚洲色图av在线| 国产成人一区二区三区| 久久久免费av| 久久久久久久999| 久久久噜久噜久久综合| 亚洲另类xxxx| 亚洲国产成人精品久久久国产成人一区| 欧美一级电影免费在线观看| 国内成人精品视频| 国产香蕉精品视频一区二区三区| 91精品国产综合久久香蕉922| 91成人免费观看网站| 日韩一级裸体免费视频| 成人有码在线播放| 色悠久久久久综合先锋影音下载| 成人性生交大片免费看视频直播| 亚洲精品国偷自产在线99热| 国产精品免费小视频| 最近中文字幕日韩精品| 日韩高清电影好看的电视剧电影| 国产精品视频中文字幕91| 国产剧情日韩欧美| 成人免费视频网| 日本高清视频精品| 欧美性猛交丰臀xxxxx网站| 91伊人影院在线播放| 国内外成人免费激情在线视频网站| 日韩中文有码在线视频| 久久久av一区| 色yeye香蕉凹凸一区二区av| 亚洲一区二区三区在线免费观看| 久久91精品国产91久久跳| 97超碰国产精品女人人人爽| 亚洲精品之草原avav久久| 欧美黑人xxxⅹ高潮交| 91精品视频专区| 久久视频免费在线播放| 欧美日韩国产一区二区三区| 亚洲三级av在线| 欧美极度另类性三渗透| 久国内精品在线| 午夜精品久久久久久久99黑人| 久久成人免费视频| 亚洲无亚洲人成网站77777| 欧美多人乱p欧美4p久久| 成人国产精品一区| 欧美日韩成人免费| 日韩成人激情在线| 亚洲加勒比久久88色综合| 福利视频导航一区| 日韩中文字幕视频在线| 亚洲**2019国产| 国产精品成av人在线视午夜片| 九九九久久久久久| 成人性教育视频在线观看| 精品香蕉一区二区三区| 亚洲国产天堂久久综合| 国产精品网站视频| 日韩欧美一区二区三区| 欧美日韩成人黄色| 亚洲片在线观看| 一区二区国产精品视频| 91精品国产乱码久久久久久久久| 久久中国妇女中文字幕| www.欧美免费| 91久久久久久久久久久久久| 俺去了亚洲欧美日韩| 国产精品入口尤物| 亚洲精品之草原avav久久| 日韩一区二区欧美| 久久夜色精品亚洲噜噜国产mv|