【问题标题】:command to get metadata for all the tables of oracle?获取oracle所有表的元数据的命令?
【发布时间】:2016-10-18 15:27:38
【问题描述】:

谁能帮助我使用 SQL Developer 命令获取有关表中的行数、每个表中的列数以及特定模式的每个表的最新更新日期的信息?

【问题讨论】:

    标签: oracle oracle11g oracle-sqldeveloper


    【解决方案1】:

    获取架构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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-22
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      相关资源
      最近更新 更多