【发布时间】:2015-05-21 12:59:11
【问题描述】:
数据库 - Oracle 数据库 10g 版本 10.2.0.4.0 , 使用 Oracle SQL Developer
编辑 抱歉:Query-1 应该是:
SELECT TABLE_NAME FROM USER_TABLES;
之前是SELECT OWNER, TABLE_NAME FROM ALL_TABLES;
输出 1:我拥有的所有表
查询 2:
SELECT COUNT(*) FROM MYTABLE_1;
输出 2:特定表中的总行数 MYTABLE_1
查询 3: SELECT MAX(ORA_ROWSCN) FROM MYTABLE_1;
Query-3 的输出是一个数字 (493672033308),在 Query-4 中进一步使用
查询 4: SELECT SCN_TO_TIMESTAMP(493672033308) FROM DUAL;
Output-4 是特定表的最后更新时间MYTABLE_1
如何将所有这些结合起来以获得所有用户表的列表,该列表共有 3 列,列标题为 TABLE_NAME、TOTAL_ROWS、LAST_UPDATE_TIME
EDIT-2:最终查询:
SELECT t.TABLE_NAME
, m.TIMESTAMP
, t.NUM_ROWS
, ((NVL(t.NUM_ROWS,0) + m.INSERTS) - m.DELETES) AS TOT_ROWS
FROM USER_TABLES t
LEFT OUTER JOIN USER_TAB_MODIFICATIONS m
ON t.TABLE_NAME = m.TABLE_NAME
ORDER BY t.TABLE_NAME;
感谢 APC、StevieG、鲍勃·迪伦 :)
【问题讨论】:
-
如何处理从 query-1 返回的所有其他表?
-
更正了错误。我只需要查看“user_tables”而不是“all_tables”
-
问题仍然存在......
-
使用“user_tables”在 Query-1 中返回的表总数为 148。我想要所有 148 的时间戳和计数的详细信息。因此无需担心额外的表。