[Home] [Help]
select
0 as logmnr_uid,
o.obj#,
o.spare2,
lc.segcol#,
lc.intcol#,
lc.col#,
lc.name,
lc.type#,
lc.length,
lc.precision#,
lc.scale,
lc.spare2, /* INTERVAL_LEADING_PRECISION */
lc.spare1, /* INTERVAL_TRAILING_PRECISION */
lc.property,
lc.charsetid,
lc.charsetform,
NULL LogmnrColFlags, /* THIS IS BEING SET IN C */
case lc.type#
when 1 /* DTYCHR */ then NULL /* shortcut for most common */
when 2 /* DTYNUM */ then NULL
when 12 /* DTYDAT */ then NULL
when 58 /* DTYOPQ - XMLType, ANYDATA, etc. */ then
(select lv.data_type_owner
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 121 /* DTYADT */ then
(select lv.data_type_owner
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 122 /* DTYNTB */ then
(select lv.data_type_owner
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 123 /* DTYNAR */ then
(select lv.data_type_owner
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 111 /* DTYIREF */ then /* needed? copied from dba_tab_cols */
(select lv.data_type_owner
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
else NULL end XTypeSchemaName,
case lc.type#
when 1 /* DTYCHR */ then NULL /* shortcut for most common */
when 2 /* DTYNUM */ then NULL
when 12 /* DTYDAT */ then NULL
when 58 /* DTYOPQ - XMLType, ANYDATA, etc. */ then
(select lv.data_type
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 121 /* DTYADT */ then
(select lv.data_type
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 122 /* DTYNTB */ then
(select lv.data_type
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 123 /* DTYNAR */ then
(select lv.data_type
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 111 /* DTYIREF */ then /* needed? copied from dba_tab_cols */
(select lv.data_type
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
else NULL end XTypeName,
case bitand(lc.property, 1029)
when 0 then
null
when 1 then
(select lv.qualified_col_name
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 5 then
(select lv.qualified_col_name
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 4 then
(select lv.qualified_col_name
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
when 1024 then
(select lv.qualified_col_name
from sys.logmnr_tab_cols_cat_support lv
where lv.obj# = lc.obj# and
lv.internal_column_id = lc.intcol#)
else NULL end XFQColName,
/* topintcol */
case when (bitand(lt.property,1) = 0) /* typed table bit not set */
then /* relational table */
/* most columns are not hidden and thus do not have */
/* an associated topintcol. Certain special columns */
/* where col# = 0 also do not have topintcol */
case when
(bitand(lc.property,32) = 0) or /* not hidden column */
(lc.col# = 0)then /* special column */
NULL /* do not set topintcol */
else /* it is hidden and is not col# = 0 (ie special) */
/* so find the covering user visible column */
(select min(sc.intcol#) /* min for speedup only */
from sys.col$ sc
where sc.obj# = lc.obj# and
sc.col# = lc.col# and
bitand(sc.property,1) = 0 and /*not an attribute*/
bitand(sc.property, 32) = 0) /* not hidden */
end
else /* typed table */
/* everything gets rowinfo$ column as topintcol except */
/* for the rowinfo$ itself, and the oid */
case when
(bitand(lc.property,2) = 0) and /* not an oid */
(bitand(lc.property,512) = 0) then /* not rowinfo$ */
(select min(sc.intcol#) /* min for speedup only */
from sys.col$ sc
where sc.obj# = lc.obj# and
bitand(sc.property, 512) = 512) /* rowinfo col */
else NULL end /* oid/rowinfo, leave topintcol null */
end XTopIntCol,
case LC.TYPE# when 111 /* DTYIREF */ then
(select oo.obj#
from sys.obj$ oo, sys.refcon$ r
where oo.oid$ = r.stabid and
r.intcol# = lc.intcol# and
r.obj# = o.obj#)
else NULL end XReffedTableObjn,
case LC.TYPE# when 111 /* DTYIREF */ then
(select oo.spare2
from sys.obj$ oo, sys.refcon$ r
where oo.oid$ = r.stabid and
r.intcol# = lc.intcol# and
r.obj# = o.obj#)
else NULL end XReffedTableObjv,
case LC.TYPE# when 58 /* DTYOPQ */ then
(select ct.flags
from sys.coltype$ ct
where ct.obj# = o.obj# and
ct.intcol# = lc.INTCOL#)
else NULL end XColTypeFlags,
case LC.TYPE# when 58 /* DTYOPQ */ then
(select ot.type
from sys.opqtype$ ot
where ot.obj# = o.obj# and
ot.intcol# = lc.intcol#)
else NULL end XOpqTypeType,
case LC.TYPE# when 58 /* DTYOPQ */ then
(select ot.flags
from sys.opqtype$ ot
where ot.obj# = o.obj# and
ot.intcol# = lc.intcol#)
else NULL end XOpqTypeFlags,
case LC.TYPE# when 58 /* DTYOPQ */ then
(select ot.lobcol
from sys.opqtype$ ot
where ot.obj# = o.obj# and
ot.intcol# = lc.intcol#)
else NULL end XOpqLobIntcol,
case LC.TYPE# when 58 /* DTYOPQ */ then
(select ot.objcol
from sys.opqtype$ ot
where ot.obj# = o.obj# and
ot.intcol# = lc.intcol#)
else NULL end XOpqObjIntcol,
/* xmlintcol */
case when (bitand(lt.property,1) = 0) /* typed table bit not set */
then /* relational table */
/* most columns are not hidden and thus do not have */
/* an associated topintcol/xmlintocol. */
case when
(bitand(lc.property,32) = 0) then /* not hidden column */
NULL /* do not set XMLintcol */
else /* it is hidden and is not col# = 0 (ie special) */
/* so find the covering user visible column */
/* if it is not XML, then we want/get NULL */
(select min(sc.intcol#)
from sys.col$ sc, sys.opqtype$ opq
where sc.obj# = lc.obj# and /* same obj# */
opq.obj# = lc.obj# and /* same obj# */
sc.col# = lc.col# and /* same col# */
sc.intcol# = opq.intcol# and
bitand(sc.property,1) = 0 and /*not an attribute*/
sc.type# = 58 and /* opaque type */
opq.type = 1) /* XML */
end
else /* typed table */
(select min(sc.intcol#) /* NULL if topintocl is not XML */
from sys.col$ sc, sys.opqtype$ opq
where sc.obj# = lc.obj# and
opq.obj# = lc.obj# and
opq.intcol# = sc.intcol# and
bitand(sc.property, 512) = 512 and /* rowinfo col */
sc.type# = 58 and /* opaque type */
opq.type = 1) /* XML */
end XXMLIntCol,
case when (bitand(lc.property, 67108864) = 67108864) /* encrypt col */
then
(select ea.owner#
from sys.enc$ ea
where ea.obj# = o.obj#)
else NULL end EaOwner#,
case when (bitand(lc.property, 67108864) = 67108864)
then
(select ea.mkeyid
from sys.enc$ ea
where ea.obj# = o.obj#)
else NULL end EaMKeyId,
case when (bitand(lc.property, 67108864) = 67108864)
then
(select ea.encalg
from sys.enc$ ea
where ea.obj# = o.obj#)
else NULL end EaEncAlg,
case when (bitand(lc.property, 67108864) = 67108864)
then
(select ea.intalg
from sys.enc$ ea
where ea.obj# = o.obj#)
else NULL end EaIntAlg,
case when (bitand(lc.property, 67108864) = 67108864)
then
(select ea.colklc
from sys.enc$ ea
where ea.obj# = o.obj#)
else NULL end EaColKlc,
case when (bitand(lc.property, 67108864) = 67108864)
then
(select ea.klclen
from sys.enc$ ea
where ea.obj# = o.obj#)
else NULL end EaKLcLen,
case when (bitand(lc.property, 67108864) = 67108864)
then
(select nvl(ea.flag,0)
from sys.enc$ ea
where ea.obj# = o.obj#)
else NULL end EaFlags,
0 as LogmnrDerivedFlags
from
sys.col$ lc, sys.tab$ lt, sys.obj$ o
where
o.obj# = lt.obj# AND
o.obj# = lc.obj#
order by o.obj#, lc.intcol#
SELECT
0 AS LOGMNR_UID
,
O.OBJ#
,
O.SPARE2
,
LC.SEGCOL#
,
LC.INTCOL#
,
LC.COL#
,
LC.NAME
,
LC.TYPE#
,
LC.LENGTH
,
LC.PRECISION#
,
LC.SCALE
,
LC.SPARE2
, /* INTERVAL_LEADING_PRECISION */
LC.SPARE1
, /* INTERVAL_TRAILING_PRECISION */
LC.PROPERTY
,
LC.CHARSETID
,
LC.CHARSETFORM
,
NULL LOGMNRCOLFLAGS
, /* THIS IS BEING SET IN C */
CASE LC.TYPE#
WHEN 1 /* DTYCHR */ THEN NULL /* SHORTCUT FOR MOST COMMON */
WHEN 2 /* DTYNUM */ THEN NULL
WHEN 12 /* DTYDAT */ THEN NULL
WHEN 58 /* DTYOPQ - XMLTYPE
, ANYDATA
, ETC. */ THEN
(SELECT LV.DATA_TYPE_OWNER
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 121 /* DTYADT */ THEN
(SELECT LV.DATA_TYPE_OWNER
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 122 /* DTYNTB */ THEN
(SELECT LV.DATA_TYPE_OWNER
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 123 /* DTYNAR */ THEN
(SELECT LV.DATA_TYPE_OWNER
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 111 /* DTYIREF */ THEN /* NEEDED? COPIED
FROM DBA_TAB_COLS */
(SELECT LV.DATA_TYPE_OWNER
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
ELSE NULL END XTYPESCHEMANAME
,
CASE LC.TYPE#
WHEN 1 /* DTYCHR */ THEN NULL /* SHORTCUT FOR MOST COMMON */
WHEN 2 /* DTYNUM */ THEN NULL
WHEN 12 /* DTYDAT */ THEN NULL
WHEN 58 /* DTYOPQ - XMLTYPE
, ANYDATA
, ETC. */ THEN
(SELECT LV.DATA_TYPE
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 121 /* DTYADT */ THEN
(SELECT LV.DATA_TYPE
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 122 /* DTYNTB */ THEN
(SELECT LV.DATA_TYPE
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 123 /* DTYNAR */ THEN
(SELECT LV.DATA_TYPE
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 111 /* DTYIREF */ THEN /* NEEDED? COPIED
FROM DBA_TAB_COLS */
(SELECT LV.DATA_TYPE
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
ELSE NULL END XTYPENAME
,
CASE BITAND(LC.PROPERTY
, 1029)
WHEN 0 THEN
NULL
WHEN 1 THEN
(SELECT LV.QUALIFIED_COL_NAME
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 5 THEN
(SELECT LV.QUALIFIED_COL_NAME
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 4 THEN
(SELECT LV.QUALIFIED_COL_NAME
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
WHEN 1024 THEN
(SELECT LV.QUALIFIED_COL_NAME
FROM SYS.LOGMNR_TAB_COLS_CAT_SUPPORT LV
WHERE LV.OBJ# = LC.OBJ# AND
LV.INTERNAL_COLUMN_ID = LC.INTCOL#)
ELSE NULL END XFQCOLNAME
,
/* TOPINTCOL */
CASE WHEN (BITAND(LT.PROPERTY
, 1) = 0) /* TYPED TABLE BIT NOT SET */
THEN /* RELATIONAL TABLE */
/* MOST COLUMNS ARE NOT HIDDEN
AND THUS DO NOT HAVE */
/* AN ASSOCIATED TOPINTCOL. CERTAIN SPECIAL COLUMNS */
/*
WHERE COL# = 0 ALSO DO NOT HAVE TOPINTCOL */
CASE WHEN
(BITAND(LC.PROPERTY
, 32) = 0) OR /* NOT HIDDEN COLUMN */
(LC.COL# = 0)THEN /* SPECIAL COLUMN */
NULL /* DO NOT SET TOPINTCOL */
ELSE /* IT IS HIDDEN
AND IS NOT COL# = 0 (IE SPECIAL) */
/* SO FIND THE COVERING USER VISIBLE COLUMN */
(SELECT MIN(SC.INTCOL#) /* MIN FOR SPEEDUP ONLY */
FROM SYS.COL$ SC
WHERE SC.OBJ# = LC.OBJ# AND
SC.COL# = LC.COL# AND
BITAND(SC.PROPERTY
, 1) = 0
AND /*NOT AN ATTRIBUTE*/
BITAND(SC.PROPERTY
, 32) = 0) /* NOT HIDDEN */
END
ELSE /* TYPED TABLE */
/* EVERYTHING GETS ROWINFO$ COLUMN AS TOPINTCOL EXCEPT */
/* FOR THE ROWINFO$ ITSELF
,
AND THE OID */
CASE WHEN
(BITAND(LC.PROPERTY
, 2) = 0)
AND /* NOT AN OID */
(BITAND(LC.PROPERTY
, 512) = 0) THEN /* NOT ROWINFO$ */
(SELECT MIN(SC.INTCOL#) /* MIN FOR SPEEDUP ONLY */
FROM SYS.COL$ SC
WHERE SC.OBJ# = LC.OBJ# AND
BITAND(SC.PROPERTY
, 512) = 512) /* ROWINFO COL */
ELSE NULL END /* OID/ROWINFO
, LEAVE TOPINTCOL NULL */
END XTOPINTCOL
,
CASE LC.TYPE# WHEN 111 /* DTYIREF */ THEN
(SELECT OO.OBJ#
FROM SYS.OBJ$ OO
, SYS.REFCON$ R
WHERE OO.OID$ = R.STABID AND
R.INTCOL# = LC.INTCOL# AND
R.OBJ# = O.OBJ#)
ELSE NULL END XREFFEDTABLEOBJN
,
CASE LC.TYPE# WHEN 111 /* DTYIREF */ THEN
(SELECT OO.SPARE2
FROM SYS.OBJ$ OO
, SYS.REFCON$ R
WHERE OO.OID$ = R.STABID AND
R.INTCOL# = LC.INTCOL# AND
R.OBJ# = O.OBJ#)
ELSE NULL END XREFFEDTABLEOBJV
,
CASE LC.TYPE# WHEN 58 /* DTYOPQ */ THEN
(SELECT CT.FLAGS
FROM SYS.COLTYPE$ CT
WHERE CT.OBJ# = O.OBJ# AND
CT.INTCOL# = LC.INTCOL#)
ELSE NULL END XCOLTYPEFLAGS
,
CASE LC.TYPE# WHEN 58 /* DTYOPQ */ THEN
(SELECT OT.TYPE
FROM SYS.OPQTYPE$ OT
WHERE OT.OBJ# = O.OBJ# AND
OT.INTCOL# = LC.INTCOL#)
ELSE NULL END XOPQTYPETYPE
,
CASE LC.TYPE# WHEN 58 /* DTYOPQ */ THEN
(SELECT OT.FLAGS
FROM SYS.OPQTYPE$ OT
WHERE OT.OBJ# = O.OBJ# AND
OT.INTCOL# = LC.INTCOL#)
ELSE NULL END XOPQTYPEFLAGS
,
CASE LC.TYPE# WHEN 58 /* DTYOPQ */ THEN
(SELECT OT.LOBCOL
FROM SYS.OPQTYPE$ OT
WHERE OT.OBJ# = O.OBJ# AND
OT.INTCOL# = LC.INTCOL#)
ELSE NULL END XOPQLOBINTCOL
,
CASE LC.TYPE# WHEN 58 /* DTYOPQ */ THEN
(SELECT OT.OBJCOL
FROM SYS.OPQTYPE$ OT
WHERE OT.OBJ# = O.OBJ# AND
OT.INTCOL# = LC.INTCOL#)
ELSE NULL END XOPQOBJINTCOL
,
/* XMLINTCOL */
CASE WHEN (BITAND(LT.PROPERTY
, 1) = 0) /* TYPED TABLE BIT NOT SET */
THEN /* RELATIONAL TABLE */
/* MOST COLUMNS ARE NOT HIDDEN
AND THUS DO NOT HAVE */
/* AN ASSOCIATED TOPINTCOL/XMLINTOCOL. */
CASE WHEN
(BITAND(LC.PROPERTY
, 32) = 0) THEN /* NOT HIDDEN COLUMN */
NULL /* DO NOT SET XMLINTCOL */
ELSE /* IT IS HIDDEN
AND IS NOT COL# = 0 (IE SPECIAL) */
/* SO FIND THE COVERING USER VISIBLE COLUMN */
/* IF IT IS NOT XML
, THEN WE WANT/GET NULL */
(SELECT MIN(SC.INTCOL#)
FROM SYS.COL$ SC
, SYS.OPQTYPE$ OPQ
WHERE SC.OBJ# = LC.OBJ#
AND /* SAME OBJ# */
OPQ.OBJ# = LC.OBJ#
AND /* SAME OBJ# */
SC.COL# = LC.COL#
AND /* SAME COL# */
SC.INTCOL# = OPQ.INTCOL# AND
BITAND(SC.PROPERTY
, 1) = 0
AND /*NOT AN ATTRIBUTE*/
SC.TYPE# = 58
AND /* OPAQUE TYPE */
OPQ.TYPE = 1) /* XML */
END
ELSE /* TYPED TABLE */
(SELECT MIN(SC.INTCOL#) /* NULL IF TOPINTOCL IS NOT XML */
FROM SYS.COL$ SC
, SYS.OPQTYPE$ OPQ
WHERE SC.OBJ# = LC.OBJ# AND
OPQ.OBJ# = LC.OBJ# AND
OPQ.INTCOL# = SC.INTCOL# AND
BITAND(SC.PROPERTY
, 512) = 512
AND /* ROWINFO COL */
SC.TYPE# = 58
AND /* OPAQUE TYPE */
OPQ.TYPE = 1) /* XML */
END XXMLINTCOL
,
CASE WHEN (BITAND(LC.PROPERTY
, 67108864) = 67108864) /* ENCRYPT COL */
THEN
(SELECT EA.OWNER#
FROM SYS.ENC$ EA
WHERE EA.OBJ# = O.OBJ#)
ELSE NULL END EAOWNER#
,
CASE WHEN (BITAND(LC.PROPERTY
, 67108864) = 67108864)
THEN
(SELECT EA.MKEYID
FROM SYS.ENC$ EA
WHERE EA.OBJ# = O.OBJ#)
ELSE NULL END EAMKEYID
,
CASE WHEN (BITAND(LC.PROPERTY
, 67108864) = 67108864)
THEN
(SELECT EA.ENCALG
FROM SYS.ENC$ EA
WHERE EA.OBJ# = O.OBJ#)
ELSE NULL END EAENCALG
,
CASE WHEN (BITAND(LC.PROPERTY
, 67108864) = 67108864)
THEN
(SELECT EA.INTALG
FROM SYS.ENC$ EA
WHERE EA.OBJ# = O.OBJ#)
ELSE NULL END EAINTALG
,
CASE WHEN (BITAND(LC.PROPERTY
, 67108864) = 67108864)
THEN
(SELECT EA.COLKLC
FROM SYS.ENC$ EA
WHERE EA.OBJ# = O.OBJ#)
ELSE NULL END EACOLKLC
,
CASE WHEN (BITAND(LC.PROPERTY
, 67108864) = 67108864)
THEN
(SELECT EA.KLCLEN
FROM SYS.ENC$ EA
WHERE EA.OBJ# = O.OBJ#)
ELSE NULL END EAKLCLEN
,
CASE WHEN (BITAND(LC.PROPERTY
, 67108864) = 67108864)
THEN
(SELECT NVL(EA.FLAG
, 0)
FROM SYS.ENC$ EA
WHERE EA.OBJ# = O.OBJ#)
ELSE NULL END EAFLAGS
,
0 AS LOGMNRDERIVEDFLAGS
FROM
SYS.COL$ LC
, SYS.TAB$ LT
, SYS.OBJ$ O
WHERE
O.OBJ# = LT.OBJ# AND
O.OBJ# = LC.OBJ#
ORDER BY O.OBJ#
, LC.INTCOL#
|
|
|
|