-- 20141105 XXX

--========================================================================

-- 1.ALL_OBJECT

--========================================================================

select object_type, object_name, subobject_name, status 

from user_objects 

order by 1, 2, 3;



--========================================================================

-- 2.SCHEMA_TABLE

--========================================================================

select  c.table_name

    , tm.comments TAB_COMMENTS

    , (select max(object_type) from user_objects obj where obj.object_name = t.table_name) as TABLE_TYPE

    , c.column_id, c.column_name, cm.comments COL_COMMENTS, c.data_type

    , 

    case c.data_type when 'VARCHAR2' then to_char(data_length   ) 

                     when 'CHAR'     then to_char(data_length   ) 

                     when 'NUMBER'   then to_char(data_precision) 

                     when 'BLOB'     then 'BLOB'

    end as DATA_LENGTH

    , 

    case c.data_type when 'VARCHAR2' then '' 

                     when 'CHAR'     then '' 

                     when 'NUMBER'   then to_char(data_scale) 

                     when 'BLOB'     then ''

    end as DATA_SCALE

    , NULLABLE

    , DATA_DEFAULT

from tabs t, user_tab_cols c, user_tab_comments tm, user_col_comments cm

where t.table_name = c.table_name

  and t.table_name = tm.table_name(+)

  and c.table_name  = cm.table_name(+)

  and c.column_name = cm.column_name(+)

order by c.table_name, c.column_id;



--========================================================================

-- 3.SCHEMA_INDEX

--========================================================================

select i.table_name

    , i.index_name

    , (select max(object_type) from user_objects obj where obj.object_name = i.index_name) as INDEX_TYPE

    , ic.column_name, ic.column_position, ic.column_length, ic.char_length

from user_indexes i, user_ind_columns ic

where i.index_name = ic.index_name

order by i.table_name, i.index_name, ic.column_position;



--========================================================================

-- 4.SIZE_TABLE

--========================================================================

select t.table_name, s.segment_name, s.partition_name, 

       s.segment_type, s.tablespace_name, 

       t.num_rows row_count, bytes

from user_segments s, user_tables t

where s.segment_name = t.table_name

  and s.segment_type like 'TABLE%'

order by s.segment_name, s.partition_name;



--========================================================================

-- 5.SIZE_INDEX

--========================================================================

select i.table_name, i.index_name, s.segment_name, s.partition_name, 

       s.segment_type, s.tablespace_name, i.num_rows row_count, bytes

from user_segments s, user_indexes i

where s.segment_name = i.index_name

  and s.segment_type like 'INDEX%'

order by s.segment_name, s.partition_name; 



--========================================================================

-- 6.CODE_COUNT

--========================================================================

-- 이건 코드테이블이 많아서, 고치기 귀찮아서 생략했다.....