select u.name owner, o.name table_name, c.name column_name,
c.scale, c.precision#, c.charsetform, c.type#,
(case when bitand(t.property, 128) = 128
then 'IOT with Overflow'
when bitand(t.property, 262208) = 262208
then 'IOT with LOB' /* user lob */
when bitand(t.flags, 536870912) = 536870912
then 'Mapping table for physical rowid of IOT'
when bitand(t.property, 2112) = 2112
then 'IOT with LOB' /* internal lob */
when (bitand(t.property, 64) = 64
and bitand(t.flags, 131072) = 131072)
then 'IOT with row movement'
when bitand(nvl(s.spare1,0), 2048) = 2048
then 'Table Compression'
when bitand(t.property, 1) = 1
then 'Object Table' /* typed table/object table */
when bitand(t.property, 131072) = 131072
then 'AQ queue table'
else null end) attributes,
(case
/* The following are tables that are system maintained */
when bitand(o.flags,
2 /* temporary object */
+ 16 /* secondary object */
+ 32 /* in-memory temp table */
+ 128 /* dropped table (RecycleBin) */
) != 0
or bitand(t.flags,
262144 /* 0x00040000 Summary Container Table, MV */
+ 134217728 /* 0x08000000 in-memory temporary table */
+ 536870912 /* 0x20000000 Mapping Tab for Phys rowid of IOT */
) != 0
or bitand(t.property,
512 /* 0x00000200 iot OVeRflow segment */
+ 8192 /* 0x00002000 nested table */
+ 4194304 /* 0x00400000 global temporary table */
+ 8388608 /* 0x00800000 session-specific temporary table */
+ 33554432 /* 0x02000000 Read Only Materialized View */
+ 67108864 /* 0x04000000 Materialized View table */
+ 134217728 /* 0x08000000 Is a Sub object */
+ 2147483648 /* 0x80000000 eXternal TaBle */
) != 0
or bitand(t.trigflag,
536870912 /* 0x20000000 DDLs autofiltered */
) != 0
or exists /* MVLOG table */
(select 1
from sys.mlog$ ml where ml.mowner = u.name and ml.log = o.name)
or exists (select 1 from sys.secobj$ so /* ODCI storage table */
where o.obj# = so.secobj#)
then -1
/* The following tables are data tables in internal schemata *
* that are not secondary objects */
when (exists (select 1 from system.logstdby$skip_support s
where s.name = u.name and action = 0))
then -2
/* The following tables are user visible tables that we choose to
* skip because of some unsupported attribute of the table or column */
when bitand(t.property,
1 /* 0x00000001 typed table */
+ 128 /* 0x00000080 IOT2 with row overflow */
+ 256 /* 0x00000100 IOT with row clustering */
+ 131072 /* 0x00020000 table is used as an AQ queue table */
) != 0
or bitand(t.property, 262208) = 262208 /* 0x40+0x40000 IOT + user LOB */
or bitand(t.property, 2112) = 2112 /* 0x40+0x800 IOT + internal LOB */
or /* IOT with "Row Movement" */
(bitand(t.property, 64) = 64 and bitand(t.flags, 131072) = 131072)
or (bitand(t.property, 32) = 32)
and exists (select 1 from partobj$ po
where po.obj#=o.obj#
and (po.parttype in (3, /* System partitioned */
5))) /* Reference partitioned */
or /* Compression */
(bitand(nvl(s.spare1,0), 2048) = 2048 and bitand(t.property, 32) != 32)
or o.oid$ is not null
or
(c.type# not in (
1, /* VARCHAR2 */
2, /* NUMBER */
8, /* LONG */
12, /* DATE */
24, /* LONG RAW */
96, /* CHAR */
100, /* BINARY FLOAT */
101, /* BINARY DOUBLE */
112, /* CLOB and NCLOB */
113, /* BLOB */
180, /* TIMESTAMP (..) */
181, /* TIMESTAMP(..) WITH TIME ZONE */
182, /* INTERVAL YEAR(..) TO MONTH */
183, /* INTERVAL DAY(..) TO SECOND(..) */
231) /* TIMESTAMP(..) WITH LOCAL TIME ZONE */
and (c.type# != 23 /* RAW not RAW OID */
or (c.type# = 23 and bitand(c.property, 2) = 2)))
----------------------------------------------------------
/* longs must have a scalar column to use as the id key */
or (c.type# in (8,24,112,113)
and 0 = (select count(*) from sys.col$ c2
where t.obj# = c2.obj#
and bitand(c2.property, 32) != 32 /* Not hidden */
and (c2.type# in ( 1, /* VARCHAR2 */
2, /* NUMBER */
12, /* DATE */
23, /* RAW */
96, /* CHAR */
100, /* BINARY FLOAT */
101, /* BINARY DOUBLE */
180, /* TIMESTAMP (..) */
181, /* TIMESTAMP(..) WITH TIME ZONE */
182, /* INTERVAL YEAR(..) TO MONTH */
183, /* INTERVAL DAY(..) TO SECOND(..) */
231) /* TIMESTAMP(..) WITH LOCAL TIME ZONE */
)))
----------------------------------------------------------
then 0 else 1 end) gensby
from sys.obj$ o, sys.user$ u, sys.tab$ t, sys.seg$ s, sys.col$ c
where o.owner# = u.user#
and o.obj# = t.obj#
and o.obj# = c.obj#
and t.file# = s.file# (+)
and t.ts# = s.ts# (+)
and t.block# = s.block# (+)
and t.obj# = o.obj#
and bitand(c.property, 32) != 32 /* Not hidden */
SELECT U.NAME OWNER
, O.NAME TABLE_NAME
, C.NAME COLUMN_NAME
,
C.SCALE
, C.PRECISION#
, C.CHARSETFORM
, C.TYPE#
,
(CASE WHEN BITAND(T.PROPERTY
, 128) = 128
THEN 'IOT WITH OVERFLOW'
WHEN BITAND(T.PROPERTY
, 262208) = 262208
THEN 'IOT WITH LOB' /* USER LOB */
WHEN BITAND(T.FLAGS
, 536870912) = 536870912
THEN 'MAPPING TABLE FOR PHYSICAL ROWID OF IOT'
WHEN BITAND(T.PROPERTY
, 2112) = 2112
THEN 'IOT WITH LOB' /* INTERNAL LOB */
WHEN (BITAND(T.PROPERTY
, 64) = 64
AND BITAND(T.FLAGS
, 131072) = 131072)
THEN 'IOT WITH ROW MOVEMENT'
WHEN BITAND(NVL(S.SPARE1
, 0)
, 2048) = 2048
THEN 'TABLE COMPRESSION'
WHEN BITAND(T.PROPERTY
, 1) = 1
THEN 'OBJECT TABLE' /* TYPED TABLE/OBJECT TABLE */
WHEN BITAND(T.PROPERTY
, 131072) = 131072
THEN 'AQ QUEUE TABLE'
ELSE NULL END) ATTRIBUTES
,
(CASE
/* THE FOLLOWING ARE TABLES THAT ARE SYSTEM MAINTAINED */
WHEN BITAND(O.FLAGS
,
2 /* TEMPORARY OBJECT */
+ 16 /* SECONDARY OBJECT */
+ 32 /* IN-MEMORY TEMP TABLE */
+ 128 /* DROPPED TABLE (RECYCLEBIN) */
) != 0
OR BITAND(T.FLAGS
,
262144 /* 0X00040000 SUMMARY CONTAINER TABLE
, MV */
+ 134217728 /* 0X08000000 IN-MEMORY TEMPORARY TABLE */
+ 536870912 /* 0X20000000 MAPPING TAB FOR PHYS ROWID OF IOT */
) != 0
OR BITAND(T.PROPERTY
,
512 /* 0X00000200 IOT OVERFLOW SEGMENT */
+ 8192 /* 0X00002000 NESTED TABLE */
+ 4194304 /* 0X00400000 GLOBAL TEMPORARY TABLE */
+ 8388608 /* 0X00800000 SESSION-SPECIFIC TEMPORARY TABLE */
+ 33554432 /* 0X02000000 READ ONLY MATERIALIZED VIEW */
+ 67108864 /* 0X04000000 MATERIALIZED VIEW TABLE */
+ 134217728 /* 0X08000000 IS A SUB OBJECT */
+ 2147483648 /* 0X80000000 EXTERNAL TABLE */
) != 0
OR BITAND(T.TRIGFLAG
,
536870912 /* 0X20000000 DDLS AUTOFILTERED */
) != 0
OR EXISTS /* MVLOG TABLE */
(SELECT 1
FROM SYS.MLOG$ ML
WHERE ML.MOWNER = U.NAME
AND ML.LOG = O.NAME)
OR EXISTS (SELECT 1
FROM SYS.SECOBJ$ SO /* ODCI STORAGE TABLE */
WHERE O.OBJ# = SO.SECOBJ#)
THEN -1
/* THE FOLLOWING TABLES ARE DATA TABLES IN INTERNAL SCHEMATA *
* THAT ARE NOT SECONDARY OBJECTS */
WHEN (EXISTS (SELECT 1
FROM SYSTEM.LOGSTDBY$SKIP_SUPPORT S
WHERE S.NAME = U.NAME
AND ACTION = 0))
THEN -2
/* THE FOLLOWING TABLES ARE USER VISIBLE TABLES THAT WE CHOOSE TO
* SKIP BECAUSE OF SOME UNSUPPORTED ATTRIBUTE OF THE TABLE OR COLUMN */
WHEN BITAND(T.PROPERTY
,
1 /* 0X00000001 TYPED TABLE */
+ 128 /* 0X00000080 IOT2 WITH ROW OVERFLOW */
+ 256 /* 0X00000100 IOT WITH ROW CLUSTERING */
+ 131072 /* 0X00020000 TABLE IS USED AS AN AQ QUEUE TABLE */
) != 0
OR BITAND(T.PROPERTY
, 262208) = 262208 /* 0X40+0X40000 IOT + USER LOB */
OR BITAND(T.PROPERTY
, 2112) = 2112 /* 0X40+0X800 IOT + INTERNAL LOB */
OR /* IOT WITH "ROW MOVEMENT" */
(BITAND(T.PROPERTY
, 64) = 64
AND BITAND(T.FLAGS
, 131072) = 131072)
OR (BITAND(T.PROPERTY
, 32) = 32)
AND EXISTS (SELECT 1
FROM PARTOBJ$ PO
WHERE PO.OBJ#=O.OBJ#
AND (PO.PARTTYPE IN (3
, /* SYSTEM PARTITIONED */
5))) /* REFERENCE PARTITIONED */
OR /* COMPRESSION */
(BITAND(NVL(S.SPARE1
, 0)
, 2048) = 2048
AND BITAND(T.PROPERTY
, 32) != 32)
OR O.OID$ IS NOT NULL
OR
(C.TYPE# NOT IN (
1
, /* VARCHAR2 */
2
, /* NUMBER */
8
, /* LONG */
12
, /* DATE */
24
, /* LONG RAW */
96
, /* CHAR */
100
, /* BINARY FLOAT */
101
, /* BINARY DOUBLE */
112
, /* CLOB
AND NCLOB */
113
, /* BLOB */
180
, /* TIMESTAMP (..) */
181
, /* TIMESTAMP(..) WITH TIME ZONE */
182
, /* INTERVAL YEAR(..) TO MONTH */
183
, /* INTERVAL DAY(..) TO SECOND(..) */
231) /* TIMESTAMP(..) WITH LOCAL TIME ZONE */
AND (C.TYPE# != 23 /* RAW NOT RAW OID */
OR (C.TYPE# = 23
AND BITAND(C.PROPERTY
, 2) = 2)))
----------------------------------------------------------
/* LONGS MUST HAVE A SCALAR COLUMN TO USE AS THE ID KEY */
OR (C.TYPE# IN (8
, 24
, 112
, 113)
AND 0 = (SELECT COUNT(*)
FROM SYS.COL$ C2
WHERE T.OBJ# = C2.OBJ#
AND BITAND(C2.PROPERTY
, 32) != 32 /* NOT HIDDEN */
AND (C2.TYPE# IN ( 1
, /* VARCHAR2 */
2
, /* NUMBER */
12
, /* DATE */
23
, /* RAW */
96
, /* CHAR */
100
, /* BINARY FLOAT */
101
, /* BINARY DOUBLE */
180
, /* TIMESTAMP (..) */
181
, /* TIMESTAMP(..) WITH TIME ZONE */
182
, /* INTERVAL YEAR(..) TO MONTH */
183
, /* INTERVAL DAY(..) TO SECOND(..) */
231) /* TIMESTAMP(..) WITH LOCAL TIME ZONE */
)))
----------------------------------------------------------
THEN 0 ELSE 1 END) GENSBY
FROM SYS.OBJ$ O
, SYS.USER$ U
, SYS.TAB$ T
, SYS.SEG$ S
, SYS.COL$ C
WHERE O.OWNER# = U.USER#
AND O.OBJ# = T.OBJ#
AND O.OBJ# = C.OBJ#
AND T.FILE# = S.FILE# (+)
AND T.TS# = S.TS# (+)
AND T.BLOCK# = S.BLOCK# (+)
AND T.OBJ# = O.OBJ#
AND BITAND(C.PROPERTY
, 32) != 32 /* NOT HIDDEN */
|
|
|