【DB筆試面試499】ORA_ROWSCN函數的作用是什麼?

  • 2019 年 10 月 11 日
  • 筆記

題目部分

在Oracle中,ORA_ROWSCN函數的作用是什麼?

答案部分

對於每一行數據,ORA_ROWSCN返回每一行最近被修改的大概時間,可用於查詢表最後一次被執行DML操作的時間。由於Oracle通過事務提交對行所在數據塊來進行SCN(System Change Number,系統改變號,一個由系統內部維護的序列號。當系統需要更新的時候自動增加,它是系統中維持數據的一致性和順序恢復的重要標誌)的跟蹤,所以,它不精確。可以通過在創建表時使用行級別的依賴跟蹤來獲得一個更加精確的SCN。

在對視圖進行查詢時,不能使用ORA_ROWSCN函數,但對於視圖的基表是可以使用ORA_ROWSCN函數的,也能在UPDATE或DELETE語句的WHERE子句中使用ORA_ROWSCN函數。ORA_ROWSCN雖然不能用於閃回查詢,但是可以用閃回版本查詢來代替ORA_ROWSCN。ORA_ROWSCN也不能用於外部表。

ORA_ROWSCN函數的使用示例如下所示:

SYS@lhrdb> CREATE TABLE AA (COL  VARCHAR2(255));  Table created.  SYS@lhrdb> INSERT INTO AA (COL) VALUES ('1');  1 row created.  SYS@lhrdb> INSERT INTO AA (COL) VALUES ('2');  1 row created.  SYS@lhrdb> COMMIT;  Commit complete.  SYS@lhrdb> SELECT COL,TO_CHAR(ORA_ROWSCN),TO_CHAR(SCN_TO_TIMESTAMP(ORA_ROWSCN),'YYYY-MM-DD HH24:MI:SS') CHR_DATE FROM  AA;  COL        TO_CHAR(ORA_ROWSCN)                      CHR_DATE  -------- -----------------------------       -------------------  1          5038627                                  2016-08-17 16:38:30  2          5038627                                  2016-08-17 16:38:30  

本文選自《Oracle程序員面試筆試寶典》,作者:李華榮。