select c.obj#, c.col#, c.segcol#,
c.segcollength, c.offset, c.name,
(select a.name from attrcol$ a where
a.obj#=c.obj# and a.intcol#=c.intcol#),
c.type#, c.length, c.fixedstorage,
c.precision#, c.scale, c.null$, c.deflength,
sys.dbms_metadata_util.long2varchar(c.deflength,
'SYS.COL$',
'DEFAULT$',
c.rowid),
sys.dbms_metadata_util.blob2clob(c.obj#, c.intcol#, c.property),
c.intcol#,
case c.col# when c.intcol# then c.intcol#
when 0 then c.intcol#
else sys.dbms_metadata_util.get_base_intcol_num(c.obj#,c.col#,
c.intcol#,c.type#)
end,
case c.col# when 0 then 0
else
sys.dbms_metadata_util.get_base_col_type(c.obj#,c.col#,
c.intcol#,c.type#)
end,
case c.col# when c.intcol# then NULL
when 0 then NULL
else
sys.dbms_metadata_util.get_base_col_name(c.obj#,c.col#,
c.intcol#,c.type#)
end,
bitand(c.property, 4294967295),
trunc(c.property / power(2,32)),
c.charsetid, c.charsetform,
( select value(cv)
from ku$_constraint0_view cv, ku$_constraint_col_view ccv
where c.intcol# = ccv.intcol_num
and c.obj# = ccv.obj_num
and ccv.con_num = cv.con_num
and cv.contype in (7,11)
),
( select value(ctv)
from ku$_coltype_view ctv
where c.type# in ( 121, -- DTYADT (user-defined type)
122, -- DTYNTB (nested table)
123, -- DTYNAR (varray)
111, -- DTYIREF (REF)
58) -- DTYOPQ (opaque type)
and c.obj# = ctv.obj_num
and c.intcol# = ctv.intcol_num
),
( select value(lv)
from ku$_lob_view lv
where (c.type# in (112, -- CLOB
113, -- BLOB
123) -- DTYNAR (varray)
and c.obj# = lv.obj_num
and c.intcol# = lv.intcol_num)
or (c.type# = 58 -- DTYOPQ (XML type)
and c.obj# = lv.obj_num
and lv.intcol_num =
(select op.lobcol from sys.opqtype$ op
where op.obj# = c.obj#
and bitand(op.flags,4) != 0
and op.intcol# = c.intcol#)
)
or (c.type# = 58 -- DTYOPQ (opaque type)
and c.obj# = lv.obj_num
and c.intcol# = lv.intcol_num
and EXISTS (
SELECT 1
FROM sys.opqtype$ op
WHERE op.obj# = c.obj#
and op.intcol# = c.intcol#
and op.type = 0 )
)
or (c.type# in (1, -- VARCHAR2
23) -- RAW
and bitand(c.property,128)!=0 -- stored as lob (long var)
and c.obj# = lv.obj_num
and c.intcol# = lv.intcol_num
)
),
( select value(lv)
from ku$_partlob_view lv
where (c.type# in (112, -- CLOB
113, -- BLOB
123) -- DTYNAR (varray)
and c.obj# = lv.obj_num
and c.intcol# = lv.intcol_num)
or (c.type# = 58 -- DTYOPQ (XML type)
and c.obj# = lv.obj_num
and lv.intcol_num =
(select op.lobcol from sys.opqtype$ op
where op.obj# = c.obj#
and bitand(op.flags,4) != 0
and op.intcol# = c.intcol#)
)
or (c.type# = 58 -- DTYOPQ (opaque type)
and c.obj# = lv.obj_num
and c.intcol# = lv.intcol_num
and EXISTS (
SELECT 1
FROM sys.opqtype$ op
WHERE op.obj# = c.obj#
and op.intcol# = c.intcol#
and op.type = 0 )
)
or (c.type# in (1, -- VARCHAR2
23) -- RAW
and bitand(c.property,128)!=0 -- stored as lob (long var)
and c.obj# = lv.obj_num
and c.intcol# = lv.intcol_num
)
),
( select value(opq) from sys.ku$_opqtype_view opq
where c.type# = 58 -- DTYOPQ (opaque type)
and c.obj# = opq.obj_num
and c.intcol# = opq.intcol_num
),
( select value(oi)
from ku$_oidindex_view oi
where bitand(c.property, 2) = 2
and c.obj# = oi.obj_num
and c.intcol# = oi.intcol_num
),
c.spare1, c.spare2, c.spare3, c.spare4, c.spare5,
to_char(c.spare6, 'YYYY/MM/DD HH24:MI:SS'),
case when (bitand(c.property,137438953472+274877906944)!=0) then
(select value(i) from ku$_identity_col_view i
where i.obj_num = c.obj#)
else null end,
-- If column has the properties ((ADT attribute, hidden, system
-- generated) or (type id, ADT attribute, hidden)), then
-- this column may be part of an unpacked anydata type.
case when (bitand(c.property,289) = 289 or
bitand(c.property,33554465) = 33554465) then
sys.dbms_metadata_util.get_attrname2(c.obj#, c.intcol#, c.col#)
else
NULL
end,
-- Column sortkey: in principle we want to sort by segcol#, but
-- segcol# for xmltype is 0 so replace it with the segcol# of its
-- underlying lob or object rel column that contains the actual
-- data. This query needs to be identical to the one for the
-- col_sorkey column in ku$_strmtable_view in order to ensure that
-- lob columns are ordered identically when writing to and reading
-- from dump files (bug# 12998987, 17627666).
case when (c.segcol# = 0 and c.type# = 58) then
NVL((select cc.segcol# from col$ cc, opqtype$ opq
where opq.obj#=c.obj#
and opq.intcol#=c.intcol#
and opq.type=1
and cc.intcol#=opq.lobcol -- xmltype stored as lob
and cc.obj#=c.obj#),
(NVL((select cc.segcol# from col$ cc, opqtype$ opq
where opq.obj#=c.obj#
and opq.intcol#=c.intcol#
and opq.type=1
and cc.intcol#=opq.objcol -- xmltype stored obj rel
and bitand(opq.flags,1)=1
and cc.obj#=c.obj#),0)))
else c.segcol#
end
from col$ c
SELECT C.OBJ#
, C.COL#
, C.SEGCOL#
,
C.SEGCOLLENGTH
, C.OFFSET
, C.NAME
,
(SELECT A.NAME
FROM ATTRCOL$ A WHERE
A.OBJ#=C.OBJ#
AND A.INTCOL#=C.INTCOL#)
,
C.TYPE#
, C.LENGTH
, C.FIXEDSTORAGE
,
C.PRECISION#
, C.SCALE
, C.NULL$
, C.DEFLENGTH
,
SYS.DBMS_METADATA_UTIL.LONG2VARCHAR(C.DEFLENGTH
,
'SYS.COL$'
,
'DEFAULT$'
,
C.ROWID)
,
SYS.DBMS_METADATA_UTIL.BLOB2CLOB(C.OBJ#
, C.INTCOL#
, C.PROPERTY)
,
C.INTCOL#
,
CASE C.COL# WHEN C.INTCOL# THEN C.INTCOL#
WHEN 0 THEN C.INTCOL#
ELSE SYS.DBMS_METADATA_UTIL.GET_BASE_INTCOL_NUM(C.OBJ#
, C.COL#
,
C.INTCOL#
, C.TYPE#)
END
,
CASE C.COL# WHEN 0 THEN 0
ELSE
SYS.DBMS_METADATA_UTIL.GET_BASE_COL_TYPE(C.OBJ#
, C.COL#
,
C.INTCOL#
, C.TYPE#)
END
,
CASE C.COL# WHEN C.INTCOL# THEN NULL
WHEN 0 THEN NULL
ELSE
SYS.DBMS_METADATA_UTIL.GET_BASE_COL_NAME(C.OBJ#
, C.COL#
,
C.INTCOL#
, C.TYPE#)
END
,
BITAND(C.PROPERTY
, 4294967295)
,
TRUNC(C.PROPERTY / POWER(2
, 32))
,
C.CHARSETID
, C.CHARSETFORM
,
( SELECT VALUE(CV)
FROM KU$_CONSTRAINT0_VIEW CV
, KU$_CONSTRAINT_COL_VIEW CCV
WHERE C.INTCOL# = CCV.INTCOL_NUM
AND C.OBJ# = CCV.OBJ_NUM
AND CCV.CON_NUM = CV.CON_NUM
AND CV.CONTYPE IN (7
, 11)
)
,
( SELECT VALUE(CTV)
FROM KU$_COLTYPE_VIEW CTV
WHERE C.TYPE# IN ( 121
, -- DTYADT (USER-DEFINED TYPE)
122
, -- DTYNTB (NESTED TABLE)
123
, -- DTYNAR (VARRAY)
111
, -- DTYIREF (REF)
58) -- DTYOPQ (OPAQUE TYPE)
AND C.OBJ# = CTV.OBJ_NUM
AND C.INTCOL# = CTV.INTCOL_NUM
)
,
( SELECT VALUE(LV)
FROM KU$_LOB_VIEW LV
WHERE (C.TYPE# IN (112
, -- CLOB
113
, -- BLOB
123) -- DTYNAR (VARRAY)
AND C.OBJ# = LV.OBJ_NUM
AND C.INTCOL# = LV.INTCOL_NUM)
OR (C.TYPE# = 58 -- DTYOPQ (XML TYPE)
AND C.OBJ# = LV.OBJ_NUM
AND LV.INTCOL_NUM =
(SELECT OP.LOBCOL
FROM SYS.OPQTYPE$ OP
WHERE OP.OBJ# = C.OBJ#
AND BITAND(OP.FLAGS
, 4) != 0
AND OP.INTCOL# = C.INTCOL#)
)
OR (C.TYPE# = 58 -- DTYOPQ (OPAQUE TYPE)
AND C.OBJ# = LV.OBJ_NUM
AND C.INTCOL# = LV.INTCOL_NUM
AND EXISTS (
SELECT 1
FROM SYS.OPQTYPE$ OP
WHERE OP.OBJ# = C.OBJ#
AND OP.INTCOL# = C.INTCOL#
AND OP.TYPE = 0 )
)
OR (C.TYPE# IN (1
, -- VARCHAR2
23) -- RAW
AND BITAND(C.PROPERTY
, 128)!=0 -- STORED AS LOB (LONG VAR)
AND C.OBJ# = LV.OBJ_NUM
AND C.INTCOL# = LV.INTCOL_NUM
)
)
,
( SELECT VALUE(LV)
FROM KU$_PARTLOB_VIEW LV
WHERE (C.TYPE# IN (112
, -- CLOB
113
, -- BLOB
123) -- DTYNAR (VARRAY)
AND C.OBJ# = LV.OBJ_NUM
AND C.INTCOL# = LV.INTCOL_NUM)
OR (C.TYPE# = 58 -- DTYOPQ (XML TYPE)
AND C.OBJ# = LV.OBJ_NUM
AND LV.INTCOL_NUM =
(SELECT OP.LOBCOL
FROM SYS.OPQTYPE$ OP
WHERE OP.OBJ# = C.OBJ#
AND BITAND(OP.FLAGS
, 4) != 0
AND OP.INTCOL# = C.INTCOL#)
)
OR (C.TYPE# = 58 -- DTYOPQ (OPAQUE TYPE)
AND C.OBJ# = LV.OBJ_NUM
AND C.INTCOL# = LV.INTCOL_NUM
AND EXISTS (
SELECT 1
FROM SYS.OPQTYPE$ OP
WHERE OP.OBJ# = C.OBJ#
AND OP.INTCOL# = C.INTCOL#
AND OP.TYPE = 0 )
)
OR (C.TYPE# IN (1
, -- VARCHAR2
23) -- RAW
AND BITAND(C.PROPERTY
, 128)!=0 -- STORED AS LOB (LONG VAR)
AND C.OBJ# = LV.OBJ_NUM
AND C.INTCOL# = LV.INTCOL_NUM
)
)
,
( SELECT VALUE(OPQ)
FROM SYS.KU$_OPQTYPE_VIEW OPQ
WHERE C.TYPE# = 58 -- DTYOPQ (OPAQUE TYPE)
AND C.OBJ# = OPQ.OBJ_NUM
AND C.INTCOL# = OPQ.INTCOL_NUM
)
,
( SELECT VALUE(OI)
FROM KU$_OIDINDEX_VIEW OI
WHERE BITAND(C.PROPERTY
, 2) = 2
AND C.OBJ# = OI.OBJ_NUM
AND C.INTCOL# = OI.INTCOL_NUM
)
,
C.SPARE1
, C.SPARE2
, C.SPARE3
, C.SPARE4
, C.SPARE5
,
TO_CHAR(C.SPARE6
, 'YYYY/MM/DD HH24:MI:SS')
,
CASE WHEN (BITAND(C.PROPERTY
, 137438953472+274877906944)!=0) THEN
(SELECT VALUE(I)
FROM KU$_IDENTITY_COL_VIEW I
WHERE I.OBJ_NUM = C.OBJ#)
ELSE NULL END
,
-- IF COLUMN HAS THE PROPERTIES ((ADT ATTRIBUTE
, HIDDEN
, SYSTEM
-- GENERATED) OR (TYPE ID
, ADT ATTRIBUTE
, HIDDEN))
, THEN
-- THIS COLUMN MAY BE PART OF AN UNPACKED ANYDATA TYPE.
CASE WHEN (BITAND(C.PROPERTY
, 289) = 289 OR
BITAND(C.PROPERTY
, 33554465) = 33554465) THEN
SYS.DBMS_METADATA_UTIL.GET_ATTRNAME2(C.OBJ#
, C.INTCOL#
, C.COL#)
ELSE
NULL
END
,
-- COLUMN SORTKEY: IN PRINCIPLE WE WANT TO SORT BY SEGCOL#
, BUT
-- SEGCOL# FOR XMLTYPE IS 0 SO REPLACE IT WITH THE SEGCOL# OF ITS
-- UNDERLYING LOB OR OBJECT REL COLUMN THAT CONTAINS THE ACTUAL
-- DATA. THIS QUERY NEEDS TO BE IDENTICAL TO THE ONE FOR THE
-- COL_SORKEY COLUMN IN KU$_STRMTABLE_VIEW IN ORDER TO ENSURE THAT
-- LOB COLUMNS ARE ORDERED IDENTICALLY WHEN WRITING TO
AND READING
--
FROM DUMP FILES (BUG# 12998987
, 17627666).
CASE WHEN (C.SEGCOL# = 0
AND C.TYPE# = 58) THEN
NVL((SELECT CC.SEGCOL#
FROM COL$ CC
, OPQTYPE$ OPQ
WHERE OPQ.OBJ#=C.OBJ#
AND OPQ.INTCOL#=C.INTCOL#
AND OPQ.TYPE=1
AND CC.INTCOL#=OPQ.LOBCOL -- XMLTYPE STORED AS LOB
AND CC.OBJ#=C.OBJ#)
,
(NVL((SELECT CC.SEGCOL#
FROM COL$ CC
, OPQTYPE$ OPQ
WHERE OPQ.OBJ#=C.OBJ#
AND OPQ.INTCOL#=C.INTCOL#
AND OPQ.TYPE=1
AND CC.INTCOL#=OPQ.OBJCOL -- XMLTYPE STORED OBJ REL
AND BITAND(OPQ.FLAGS
, 1)=1
AND CC.OBJ#=C.OBJ#)
, 0)))
ELSE C.SEGCOL#
END
FROM COL$ C
|
|
|