ORACLE Flashback Query偽列
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
標準Flashback Query的功能是查詢過去某個時間點物件中儲存的記錄資訊,在當前時間與指定的過去某個時間點之間,物件可能做過多次修改,如果希望看到這期間的每一次修改,Oracle提供了Flashback Version Query。
</p>
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
Flashback Version Query也是以SELECT子句的形式呼叫,其用法並不比AS OF複雜,與其類似,只需要在標準SELECT查詢後面附加<b style="background-color:inherit;">VERSIONS BETWEEN TIMESTAMP[/SCN] START AND END</b>子句即可。透過VERSIONS BETWEEN能夠檢視指定時間段內UNDO表空間中記錄的不同版本(<b style="background-color:inherit;">注意,只包括被提交的記錄</b>)。記錄在Version Query中可能會是一對多的關係,如某些記錄如果被修改過多次並分別提交,那麼在查詢的時候,如果修改的操作是在指定的時間段(或SCN)內進行的,則記錄每次修改的結果都會被顯示出來,這倒是比較有利於我們對資料的修改進行對比,檢視資料究竟是如何變化的。
</p>
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
<br />
</p>
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
Version Query中提供了多個偽列,如表所示。
</p>
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
表 Flashback Query中Version Query的偽列說明
</p>
<div style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
<table border="1" cellpadding="2" cellspacing="0" style="font-size:inherit;margin-top:10px;margin-bottom:10px;width:607px;background-color:inherit;">
<tbody style="background-color:inherit;">
<tr style="background-color:inherit;">
<td style="word-break:break-all;border:1px solid #999999;padding:5px 16px 5px 12px;min-height:25px;min-width:25px;height:25px;background-color:inherit;width:164px;">
<p style="background-color:inherit;">
<span lang="EN-US" style="background-color:inherit;"><span style="background-color:inherit;">VERSIONS_STARTSCN<br style="background-color:inherit;" />
VERSIONS_STARTTIME</span></span>
</p>
</td>
<td style="word-break:break-all;border:1px solid #999999;padding:5px 16px 5px 12px;min-height:25px;min-width:25px;height:25px;background-color:inherit;width:401px;">
<p style="background-color:inherit;">
<span style="background-color:inherit;">該條記錄操作時的<span lang="EN-US" style="background-color:inherit;">SCN</span>或時間,如果為空,表示該行記錄是在查詢範圍外建立的</span>
</p>
</td>
</tr>
<tr style="background-color:inherit;">
<td style="word-break:break-all;border:1px solid #999999;padding:5px 16px 5px 12px;min-height:25px;min-width:25px;height:25px;background-color:inherit;width:164px;">
<p style="background-color:inherit;">
<span lang="EN-US" style="background-color:inherit;"><span style="background-color:inherit;">VERSIONS_ENDSCN</span></span>
</p>
<p style="background-color:inherit;">
<span lang="EN-US" style="background-color:inherit;"><span style="background-color:inherit;">VERSIONS_ENDTIME</span></span>
</p>
</td>
<td style="word-break:break-all;border:1px solid #999999;padding:5px 16px 5px 12px;min-height:25px;min-width:25px;height:25px;background-color:inherit;width:401px;">
<p style="background-color:inherit;">
<span style="background-color:inherit;">該條記錄失效時的<span lang="EN-US" style="background-color:inherit;">SCN</span>或時間,如果為空,說明記錄當前時間在當前表內不存在,或者已經被刪除了,可以配合著<span lang="EN-US" style="background-color:inherit;">VERSIONS_OPERATION</span>列來看,如果<span lang="EN-US" style="background-color:inherit;">VERSIONS_OPERATION</span>列值為<span lang="EN-US" style="background-color:inherit;">D</span>,說明該列已被刪除,如果該列為空,則說明記錄在這段時間無操作</span>
</p>
</td>
</tr>
<tr style="background-color:inherit;">
<td style="word-break:break-all;border:1px solid #999999;padding:5px 16px 5px 12px;min-height:25px;min-width:25px;height:25px;background-color:inherit;width:164px;">
<p style="background-color:inherit;">
<span lang="EN-US" style="background-color:inherit;"><span style="background-color:inherit;">VERSIONS_XID</span></span>
</p>
</td>
<td style="word-break:break-all;border:1px solid #999999;padding:5px 16px 5px 12px;min-height:25px;min-width:25px;height:25px;background-color:inherit;width:401px;">
<p style="background-color:inherit;">
<span style="background-color:inherit;">該操作的事務<span lang="EN-US" style="background-color:inherit;">ID</span></span>
</p>
</td>
</tr>
<tr style="background-color:inherit;">
<td style="word-break:break-all;border:1px solid #999999;padding:5px 16px 5px 12px;min-height:25px;min-width:25px;height:25px;background-color:inherit;width:164px;">
<p style="background-color:inherit;">
<span lang="EN-US" style="background-color:inherit;"><span style="background-color:inherit;">VERSIONS_OPERATION</span></span>
</p>
</td>
<td style="word-break:break-all;border:1px solid #999999;padding:5px 16px 5px 12px;min-height:25px;min-width:25px;height:25px;background-color:inherit;width:401px;">
<p style="background-color:inherit;">
<span style="background-color:inherit;">對該行執行的操作:<span lang="EN-US" style="background-color:inherit;">I</span>表示<span lang="EN-US" style="background-color:inherit;">INSERT</span>,<span lang="EN-US" style="background-color:inherit;">D</span>表示<span lang="EN-US" style="background-color:inherit;">DELETE</span>,<span lang="EN-US" style="background-color:inherit;">U</span>表示<span lang="EN-US" style="background-color:inherit;">UPDATE</span></span>
</p>
<p style="background-color:inherit;">
<span style="background-color:inherit;">提示:對於索引鍵的<span lang="EN-US" style="background-color:inherit;">update</span>操作,版本查詢可能會將其識別成兩個操作:<span lang="EN-US" style="background-color:inherit;">DELETE</span>和<span lang="EN-US" style="background-color:inherit;">INSERT</span></span>
</p>
</td>
</tr>
</tbody>
</table>
</div>
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
<br />
</p>
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
相關知識點:
</p>
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
什麼是偽列?<span style="background-color:inherit;line-height:1.5;">我們都知道在建立表時必須指定列名、列型別等資訊,這些顯式指定的列就是標準的列,在查詢時這些列能夠被SELECT語句顯示出來。除此之外,還有一種列型別,這些列並不存在於表定義中,如你透過DESC TBLNAME檢視時看不到這些列的定義,但透過SELECT語句卻可以查詢這些列的內容,這種列就是Oracle提供的偽列(如SYSDATE之類系統函式不是偽列)。</span>
</p>
<p style="font-family:微軟雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;background-color:#FFFFFF;">
偽列也並不是在任何查詢時都適用,有些列只有特殊的查詢語句中才能夠顯示,如上述表格中提供的6列就僅在使用Versions Query時才能夠呼叫。除此之外還有一些比較常用的ROWNUM、LEVEL等。
</p>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31520497/viewspace-2156734/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 10g flashback version query 和 flashback transaction query實驗Oracle 10g
- Overview of Oracle Flashback Query I (366)ViewOracle
- Overview of Oracle Flashback Query II (367)ViewOracle
- oracle10g之flashback version query 和flashback transaction query 實驗Oracle
- Oracle10g的Flashback之Flashback Transaction QueryOracle
- oracle檢視flashback_transaction_query中列operation為unknownOracle
- ORACLE 11G Flashback Versions QueryOracle
- flashback version query in oracle 10gOracle 10g
- Oracle閃回技術--Flashback Version QueryOracle
- Oracle Flashback query查詢的侷限Oracle
- Oracle10g的Flashback version QueryOracle
- 【Flashback】Flashback Query功能實踐
- flashback技術之---flashback query
- flashback version query和 flashback transaction query簡單應用
- flashback技術之---flashback Transaction Query
- flashback技術之---flashback version query
- Flashback Query Benefits (368)
- flashback總結四之Flashback_Query
- oracle偽列rownumOracle
- Oracle level偽列Oracle
- flashback總結六之Flashback_Transaction_Query
- 【實驗】【Flashback】Flashback Transaction Query功能實踐
- oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- 閃回之 Flashback Query (dml表、過程、函式、包等)、Flashback version Query函式
- flashback總結五之Flashback_Query_Version(上)
- flashback query閃回資料
- flashback drop/query/table/database/archiveDatabaseHive
- Flashback Query閃回查詢
- 關於Oracle偽列rownumOracle
- Flashback Query的應用(轉帖)
- Oracle OCP 1Z0 053 Q704(Flashback Versions Query)Oracle
- Oracle OCP 1Z0-053 Q252(Flashback Version Query)Oracle
- flashback總結五之Flashback_Query_Version(下)_補充
- Oracle OCP 1Z0 053 Q387(FLASHBACK_TRANSACTION_QUERY)Oracle
- Oracle OCP 1Z0 053 Q63(flashback_transaction_query)Oracle
- 全面學習oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- Oracle OCP 1Z0 053 Q677(Flashback Transaction Query)Oracle
- 使用flashback query巧妙抽取指定資料