Oracle中定位資料表的最近DML時間
由於時間久,資料庫中的表太多,前後很多人操作過,也不知道哪些表有用哪些沒用,於是,想透過判斷資料表的最後DML時間,來確定哪些資料表最近沒操作過。
SQL> create table A as select id,name from t_employee;
Table created
SQL> select tb.table_name,tb.monitoring from user_tables tb where table_name='A';
TABLE_NAME MONITORING
------------------------------ ----------
A YES
------------------------------ ----------
A YES
由此可以看到,資料表預設都是啟動了monitoring功能的。
下面,透過ORA_ROWSCN來定位表A的最後dml時間。
SQL> select max(ora_rowscn), scn_to_timestamp(max(ora_rowscn)) from mvs.A;
MAX(ORA_ROWSCN) SCN_TO_TIMESTAMP(MAX(ORA_ROWSC
--------------- --------------------------------------------------------------------------------
155220760 29-11月-11 11.25.50.000000000 上午
--------------- --------------------------------------------------------------------------------
155220760 29-11月-11 11.25.50.000000000 上午
有人說只要表為monitoring狀態,從檢視 user_tab_modifications 也可以看到,可實際上確什麼都沒查到。
SQL> select * from user_tab_modifications where table_name='A';
TABLE_NAME PARTITION_NAME SUBPARTITION_NAME INSERTS UPDATES DELETES TIMESTAMP TRUNCATED DROP_SEGMENTS
------------------------------ ------------------------------ ------------------------------ ---------- ---------- ---------- ----------- --------- -------------
------------------------------ ------------------------------ ------------------------------ ---------- ---------- ---------- ----------- --------- -------------
刪除A中的資料,只剩下一條。
SQL> select max(ora_rowscn), scn_to_timestamp(max(ora_rowscn)) from mvs.A;
MAX(ORA_ROWSCN) SCN_TO_TIMESTAMP(MAX(ORA_ROWSC
--------------- --------------------------------------------------------------------------------
155223006 29-11月-11 11.46.33.000000000 上午
--------------- --------------------------------------------------------------------------------
155223006 29-11月-11 11.46.33.000000000 上午
然後再插入一條記錄。
SQL> insert into a(id,name) values(1,'test');
1 row inserted
SQL> commit;
Commit complete
檢視記錄及對應的偽列ORA_ROWSCN值。
SQL> select id,name,ora_rowscn from a order by id;
ID NAME ORA_ROWSCN
---------- -------------------- ----------------------
1 test 155223032
1108 s11 155223006
---------- -------------------- ----------------------
1 test 155223032
1108 s11 155223006
SQL>
透過上面的偽列 ORA_ROWSCN 及函式SCN_TO_TIMESTAMP(ORA_ROWSCN)就可以獲得該行資料的最後DML時間。
SQL> insert into a(id,name) values(2,'test');
1 row inserted
SQL> insert into a(id,name) values(3,'test');
1 row inserted
SQL> commit;
Commit complete
SQL> select id,name,ora_rowscn from a order by id;
ID NAME ORA_ROWSCN
---------- -------------------- ----------
1 test 155226434
2 test 155226434
3 test 155226434
1108 s11 155223006
---------- -------------------- ----------
1 test 155226434
2 test 155226434
3 test 155226434
1108 s11 155223006
SQL> insert into a(id,name) values(4,'test');
1 row inserted
SQL> commit;
Commit complete
SQL> select id,name,ora_rowscn from a order by id;
ID NAME ORA_ROWSCN
---------- -------------------- ----------
1 test 155226448
2 test 155226448
3 test 155226448
4 test 155226448
1108 s11 155223006
---------- -------------------- ----------
1 test 155226448
2 test 155226448
3 test 155226448
4 test 155226448
1108 s11 155223006
SQL> insert into a(id,name) values(5,'test2');
1 row inserted
SQL> commit;
Commit complete
SQL> select id,name,ora_rowscn from a order by id;
ID NAME ORA_ROWSCN
---------- -------------------- ----------
1 test 155226463
2 test 155226463
3 test 155226463
4 test 155226463
5 test2 155226463
1108 s11 155223006
---------- -------------------- ----------
1 test 155226463
2 test 155226463
3 test 155226463
4 test 155226463
5 test2 155226463
1108 s11 155223006
6 rows selected
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2141347/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢某表最近5天內最後一次dml的時間
- oracle 表(table)上最後一次 DML時間、行(row)上最後DML時間Oracle
- mysql查詢最近時間的一組資料MySql
- 應用ROWDEPENDENCIES行級跟蹤,查詢oracle表中資料行上最後的DML時間Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- ORACLE資料庫中SCN與時間的轉換Oracle資料庫
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- Oracle 資料倉儲簡單時間維度表的建立Oracle
- oracle中的資料庫、使用者、方案、表空間、表物件之間的關係Oracle資料庫物件
- 用user_tab_modifications查詢表dml操作時間
- oracle的臨時表空間Oracle
- 查詢一個表插入資料的時間,按BLOCK時間BloC
- 【Oracle-資料庫維護】-刪除臨時表空間Oracle資料庫
- oracle 當前資料庫各種版本時間釋出表Oracle資料庫
- ORACLE資料庫版本的發行時間表 (文件 ID 1626244.1)Oracle資料庫
- Oracle兩表之間資料更新Oracle
- oracle清除資料庫表空間Oracle資料庫
- 對oracle資料表空間的計算Oracle
- 使用GoldenGate 實現Oracle for Oracle 單向資料同步(實現表的DML操作同步)GoOracle
- Oracle 臨時表空間的概念Oracle
- oracle 臨時表間重建的方法Oracle
- ORACLE臨時表空間的清理Oracle
- oracle 臨時表空間Oracle
- oracle臨時表空間Oracle
- 臨時表在Oracle資料庫與SQL Server資料庫中的異同Oracle資料庫SQLServer
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- oracle 回收表空間的資料檔案大小Oracle
- ORACLE 中SCHEMA的概念以及資料庫,表空間,資料檔案等的區別(轉)Oracle資料庫
- Oracle 表空間與資料檔案Oracle
- oracle 資料檔案表空間管理Oracle
- . 資料庫臨時表空間的資料檔案的丟失資料庫
- 查詢oracle 表的大小和表的建立時間Oracle
- 最近一段時間的總結
- ORACLE預設的臨時表空間Oracle
- oracle的臨時表空間temporary tablespaceOracle
- Oracle中檢視某個表的建立時間 - [Oracle]Oracle
- Oracle 臨時表空間概念Oracle