select u.name owner, o.name name, o.type#, o.obj#,
decode(bitand(t.flags, 1073741824), 1073741824, 1, 0) current_sby,
(case
/* The following are tables that are system maintained */
when ( exists (select 1 from system.logstdby$skip_support s
where s.name = u.name and action = 0))
or 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 */
+ 4294967296 /* 0x100000000 Cube */
+ 8589934592 /* 0x200000000 FBA Internal */
) != 0
or bitand(t.trigflag,
536870912 /* 0x20000000 DDLs autofiltered */
) != 0
or exists (select 1 from sys.mlog$ ml /* MVLOG table */
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 user visible tables that we choose to
* skip because of some unsupported attribute of the table or column */
when (bitand(t.property, 1 ) = 1 /* 0x00000001 typed table */
AND not exists /* Only XML Typed Tables Are Supported */
(select 1
from sys.col$ cc, sys.opqtype$ opq
where cc.name = 'SYS_NC_ROWINFO$' and cc.type# = 58 and
opq.obj# = cc.obj# and opq.intcol# = cc.intcol# and
opq.type = 1 and cc.obj# = t.obj#
and bitand(opq.flags,4) = 4 /* stored as lob */
and bitand(opq.flags,64) = 0 /* not stored as binary */
and bitand(opq.flags,512) = 0 /* not hierarch enab */
and not exists (select 1 from logstdby_support_11lob lb
where lb.obj# = o.obj#
and lb.securefile = 1)))
or (bitand(nvl(s.spare1,0), 2048) = 2048 /* Compression */
and bitand(t.property, 32) != 32)
or (bitand(t.property, 32) = 32) /* Partitioned */
and exists (select 1 from partobj$ po
where po.obj#=o.obj#
and (po.parttype in (3, /* System partitioned */
5))) /* Reference partitioned */
or bitand(t.property,
/* This clause is only for performance; they could be
excluded by the column datatype checks below */
4 /* 0x00000004 has nested-TABLE columns */
+ 8 /* 0x00000008 has REF columns */
+ 16 /* 0x00000010 has array columns */
+ 32768 /* 0x00008000 has FILE columns */
+ 131072 /* 0x00020000 table is used as an AQ queue table */
) != 0
-----------------------------------------
/* unsupp view joins col$, here we subquery it */
or exists (select 1 from sys.col$ c
where t.obj# = c.obj#
-----------------------------------------
/* ignore any hidden columns in this subquery */
and bitand(c.property, 32) != 32 /* Not hidden */
-----------------------------------------
/* table has an unsupported datatype */
and ((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))
and (c.type# != 58 /* OPAQUE */
or (c.type# = 58 /* XMLTYPE as CLOB */
and not exists
(select 1 from opqtype$ opq
where opq.type=1
and bitand(opq.flags, 4) = 4
and bitand(opq.flags,64) = 0
and bitand(opq.flags,512) = 0
and opq.obj#=c.obj#
and opq.intcol#=c.intcol#
and not exists
(select 1
from logstdby_support_11lob lb
where lb.obj# = c.obj#
and lb.col# = c.col#
and lb.securefile = 1)))))
-----------------------------------------
/* table doesn't have at least one scalar column */
or (c.type# in (8,24,58,112,113)
and bitand(t.property, 1) = 0 /* typed table has an OID */
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 */
)))
-----------------------------------------
/* table has a securefile column */
or (c.type# in (112, 113)
and exists (select 1 from logstdby_support_11lob lb
where lb.obj# = o.obj#
and lb.col# = c.col#
and lb.securefile = 1))
-----------------------------------------
/* table has a virtual column candidate key */
or (bitand(c.property, 65544) != 0 /* Virtual Column */
and bitand(c.property, 256) = 0 /* Sys Generated */
and c.obj# = t.obj#
and exists (select 1 from icol$ ic, ind$ i
where ic.bo# = t.obj# and ic.col# = c.col#
and i.bo# = t.obj# and i.obj# = ic.obj#
and bitand(i.property, 1) = 1))) /* Unique Index */
) /* end col$ exists subquery */
----------------------------------------------
then 0 else 1 end) gensby
from sys.obj$ o, sys.user$ u, sys.tab$ t, sys.seg$ s
where o.owner# = u.user#
and o.obj# = t.obj#
and t.file# = s.file# (+)
and t.block# = s.block# (+)
and t.ts# = s.ts# (+)
and t.obj# = o.obj#
SELECT U.NAME OWNER
, O.NAME NAME
, O.TYPE#
, O.OBJ#
,
DECODE(BITAND(T.FLAGS
, 1073741824)
, 1073741824
, 1
, 0) CURRENT_SBY
,
(CASE
/* THE FOLLOWING ARE TABLES THAT ARE SYSTEM MAINTAINED */
WHEN ( EXISTS (SELECT 1
FROM SYSTEM.LOGSTDBY$SKIP_SUPPORT S
WHERE S.NAME = U.NAME
AND ACTION = 0))
OR 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 */
+ 4294967296 /* 0X100000000 CUBE */
+ 8589934592 /* 0X200000000 FBA INTERNAL */
) != 0
OR BITAND(T.TRIGFLAG
,
536870912 /* 0X20000000 DDLS AUTOFILTERED */
) != 0
OR EXISTS (SELECT 1
FROM SYS.MLOG$ ML /* MVLOG TABLE */
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 USER VISIBLE TABLES THAT WE CHOOSE TO
* SKIP BECAUSE OF SOME UNSUPPORTED ATTRIBUTE OF THE TABLE OR COLUMN */
WHEN (BITAND(T.PROPERTY
, 1 ) = 1 /* 0X00000001 TYPED TABLE */
AND NOT EXISTS /* ONLY XML TYPED TABLES ARE SUPPORTED */
(SELECT 1
FROM SYS.COL$ CC
, SYS.OPQTYPE$ OPQ
WHERE CC.NAME = 'SYS_NC_ROWINFO$'
AND CC.TYPE# = 58 AND
OPQ.OBJ# = CC.OBJ#
AND OPQ.INTCOL# = CC.INTCOL# AND
OPQ.TYPE = 1
AND CC.OBJ# = T.OBJ#
AND BITAND(OPQ.FLAGS
, 4) = 4 /* STORED AS LOB */
AND BITAND(OPQ.FLAGS
, 64) = 0 /* NOT STORED AS BINARY */
AND BITAND(OPQ.FLAGS
, 512) = 0 /* NOT HIERARCH ENAB */
AND NOT EXISTS (SELECT 1
FROM LOGSTDBY_SUPPORT_11LOB LB
WHERE LB.OBJ# = O.OBJ#
AND LB.SECUREFILE = 1)))
OR (BITAND(NVL(S.SPARE1
, 0)
, 2048) = 2048 /* COMPRESSION */
AND BITAND(T.PROPERTY
, 32) != 32)
OR (BITAND(T.PROPERTY
, 32) = 32) /* PARTITIONED */
AND EXISTS (SELECT 1
FROM PARTOBJ$ PO
WHERE PO.OBJ#=O.OBJ#
AND (PO.PARTTYPE IN (3
, /* SYSTEM PARTITIONED */
5))) /* REFERENCE PARTITIONED */
OR BITAND(T.PROPERTY
,
/* THIS CLAUSE IS ONLY FOR PERFORMANCE; THEY COULD BE
EXCLUDED BY THE COLUMN DATATYPE CHECKS BELOW */
4 /* 0X00000004 HAS NESTED-TABLE COLUMNS */
+ 8 /* 0X00000008 HAS REF COLUMNS */
+ 16 /* 0X00000010 HAS ARRAY COLUMNS */
+ 32768 /* 0X00008000 HAS FILE COLUMNS */
+ 131072 /* 0X00020000 TABLE IS USED AS AN AQ QUEUE TABLE */
) != 0
-----------------------------------------
/* UNSUPP VIEW JOINS COL$
, HERE WE SUBQUERY IT */
OR EXISTS (SELECT 1
FROM SYS.COL$ C
WHERE T.OBJ# = C.OBJ#
-----------------------------------------
/* IGNORE ANY HIDDEN COLUMNS IN THIS SUBQUERY */
AND BITAND(C.PROPERTY
, 32) != 32 /* NOT HIDDEN */
-----------------------------------------
/* TABLE HAS AN UNSUPPORTED DATATYPE */
AND ((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))
AND (C.TYPE# != 58 /* OPAQUE */
OR (C.TYPE# = 58 /* XMLTYPE AS CLOB */
AND NOT EXISTS
(SELECT 1
FROM OPQTYPE$ OPQ
WHERE OPQ.TYPE=1
AND BITAND(OPQ.FLAGS
, 4) = 4
AND BITAND(OPQ.FLAGS
, 64) = 0
AND BITAND(OPQ.FLAGS
, 512) = 0
AND OPQ.OBJ#=C.OBJ#
AND OPQ.INTCOL#=C.INTCOL#
AND NOT EXISTS
(SELECT 1
FROM LOGSTDBY_SUPPORT_11LOB LB
WHERE LB.OBJ# = C.OBJ#
AND LB.COL# = C.COL#
AND LB.SECUREFILE = 1)))))
-----------------------------------------
/* TABLE DOESN'T HAVE AT LEAST ONE SCALAR COLUMN */
OR (C.TYPE# IN (8
, 24
, 58
, 112
, 113)
AND BITAND(T.PROPERTY
, 1) = 0 /* TYPED TABLE HAS AN OID */
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 */
)))
-----------------------------------------
/* TABLE HAS A SECUREFILE COLUMN */
OR (C.TYPE# IN (112
, 113)
AND EXISTS (SELECT 1
FROM LOGSTDBY_SUPPORT_11LOB LB
WHERE LB.OBJ# = O.OBJ#
AND LB.COL# = C.COL#
AND LB.SECUREFILE = 1))
-----------------------------------------
/* TABLE HAS A VIRTUAL COLUMN CANDIDATE KEY */
OR (BITAND(C.PROPERTY
, 65544) != 0 /* VIRTUAL COLUMN */
AND BITAND(C.PROPERTY
, 256) = 0 /* SYS GENERATED */
AND C.OBJ# = T.OBJ#
AND EXISTS (SELECT 1
FROM ICOL$ IC
, IND$ I
WHERE IC.BO# = T.OBJ#
AND IC.COL# = C.COL#
AND I.BO# = T.OBJ#
AND I.OBJ# = IC.OBJ#
AND BITAND(I.PROPERTY
, 1) = 1))) /* UNIQUE INDEX */
) /* END COL$ EXISTS SUBQUERY */
----------------------------------------------
THEN 0 ELSE 1 END) GENSBY
FROM SYS.OBJ$ O
, SYS.USER$ U
, SYS.TAB$ T
, SYS.SEG$ S
WHERE O.OWNER# = U.USER#
AND O.OBJ# = T.OBJ#
AND T.FILE# = S.FILE# (+)
AND T.BLOCK# = S.BLOCK# (+)
AND T.TS# = S.TS# (+)
AND T.OBJ# = O.OBJ#
|
|
|