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建立臨時表空間和資料表空間以及刪除Oracle
- mysql查詢最近時間的一組資料MySql
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- 關於Oracle資料庫的時間查詢Oracle資料庫
- Oracle中刪除表中的重複資料Oracle
- Oracle Parallel DMLOracleParallel
- oracle臨時表空間相關Oracle
- oracle單表按時間匯出Oracle
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- oracle 普通表空間資料檔案壞塊Oracle
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- Oracle 中定位重要(消耗資源多)的SQLOracleSQL
- Oracle資料庫表設計時的注意事項Oracle資料庫
- oracle快速定位資料庫瓶頸Oracle資料庫
- oracle 臨時表空間的增刪改查Oracle
- Sqlserver如何大概推算一張表最後一次發生DML的時間SQLServer
- Mysql DML 新增資料MySql
- Oracle時間資訊特性(轉)Oracle
- PostgreSQL Page頁結構解析(4)- 執行DML時表佔用空間解析SQL
- [轉] Oracle資料庫中建立表時怎樣考慮列順序Oracle資料庫
- oracle表空間的整理Oracle
- [20201106]瞭解oracle資料庫啟動時間.txtOracle資料庫
- MyBatis-plus框架下資料庫表中的建立時間(create_time)、修改時間(update_time)的處理MyBatis框架資料庫
- oracle 表空間Oracle
- Oracle表空間Oracle
- MYSQL造資料佔用臨時表空間MySql
- 遷移Oracle資料庫時如何減小停機時間AAOracle資料庫
- 檢視oracle臨時表空間佔用率的檢視Oracle
- ORACLE資料庫基於時間點的不完全恢復Oracle資料庫
- oracle 觸發器,當一個表更新或插入時將資料同步至另個庫中的某個表中Oracle觸發器
- Oracle資料表碎片整理Oracle
- 聊聊Oracle表空間Offline的三種引數(中)Oracle
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- MySQL實現當前資料表的所有時間都增加或減少指定的時間間隔(推薦)MySql
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- 清理oracle資料庫空間Oracle資料庫
- oracle temp 表空間Oracle