【发布时间】:2016-10-18 15:27:38
【问题描述】:
谁能帮助我使用 SQL Developer 命令获取有关表中的行数、每个表中的列数以及特定模式的每个表的最新更新日期的信息?
【问题讨论】:
标签: oracle oracle11g oracle-sqldeveloper
谁能帮助我使用 SQL Developer 命令获取有关表中的行数、每个表中的列数以及特定模式的每个表的最新更新日期的信息?
【问题讨论】:
标签: oracle oracle11g oracle-sqldeveloper
获取架构TEST的每个表的最新SCN的行数和日期:
CREATE TYPE TEST.stringlist IS TABLE OF VARCHAR2(4000);
/
VARIABLE cur REFCURSOR;
DECLARE
t_sql TEST.stringlist;
v_sql CLOB;
v_scn NUMBER;
v_owner VARCHAR2(30) := 'TEST';
BEGIN
SELECT MIN(SCN)
INTO v_scn
FROM sys.smon_scn_time;
SELECT 'SELECT ''' || TABLE_NAME || ''' AS table_name, '
|| 'TRUNC( MAX( CASE WHEN ORA_ROWSCN >= ' || v_scn || ' THEN SCN_TO_TIMESTAMP( ORA_ROWSCN ) END ) ) AS last_update_day, '
|| 'COUNT(*) AS num_rows '
|| 'FROM ' || v_owner || '.' || table_name
BULK COLLECT INTO t_sql
FROM ALL_TABLES
WHERE OWNER = v_owner;
v_sql := t_sql(1);
FOR i IN 2 .. t_sql.COUNT LOOP
v_sql := v_sql || ' UNION ALL ' || t_sql(i);
END LOOP;
OPEN :cur FOR v_sql;
END;
/
PRINT cur;
获取架构TEST的每个表的列数:
SELECT TABLE_NAME,
COUNT(*) AS num_columns
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'TEST'
GROUP BY TABLE_NAME;
【讨论】: