select c.obj#, c.col#, c.intcol#, c.segcol#,
bitand(c.property, 4294967295),
trunc(c.property / power(2,32)),
c.name, c.type#, c.length,
c.precision#, c.scale, c.null$, c.deflength,
case
when c.deflength > 4000
then null
else
sys.dbms_metadata_util.long2varchar(c.deflength,
'SYS.COL$',
'DEFAULT$',
c.rowid)
end,
case
when c.deflength <= 4000
then null
else
sys.dbms_metadata_util.long2clob(c.deflength,
'SYS.COL$',
'DEFAULT$',
c.rowid)
end,
case
when c.deflength is null or bitand(c.property,32+65536)=0
then null
else
(select sys.dbms_metadata.parse_default(u.name,o.name,
c.deflength, c.rowid)
from obj$ o, user$ u
where o.obj#=c.obj# and o.owner#=u.user#)
end,
sys.dbms_metadata_util.blob2clob(c.obj#,c.intcol#, c.property),
(select e.guard_id from ecol$ e where e.tabobj#=c.obj# and e.colnum=c.intcol#),
c.charsetid, c.charsetform,
c.intcol#,0,NULL,
( select value(cv)
from ku$_constraint_col_view ccv, ku$_constraint0_view cv
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)
),
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, nvl(evaledition#,0),
nvl(unusablebefore#,0),
nvl(unusablebeginning#,0),
-- 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 where ((nvl(unusablebefore#,0) = 0 OR
dbms_editions_utilities.compare_edition(
dbms_metadata.get_edition_id, unusablebefore#) in (0, 2))
AND
(nvl(unusablebeginning#,0) = 0 OR
dbms_editions_utilities.compare_edition(
dbms_metadata.get_edition_id, unusablebeginning#) = 1))
SELECT C.OBJ#
, C.COL#
, C.INTCOL#
, C.SEGCOL#
,
BITAND(C.PROPERTY
, 4294967295)
,
TRUNC(C.PROPERTY / POWER(2
, 32))
,
C.NAME
, C.TYPE#
, C.LENGTH
,
C.PRECISION#
, C.SCALE
, C.NULL$
, C.DEFLENGTH
,
CASE
WHEN C.DEFLENGTH > 4000
THEN NULL
ELSE
SYS.DBMS_METADATA_UTIL.LONG2VARCHAR(C.DEFLENGTH
,
'SYS.COL$'
,
'DEFAULT$'
,
C.ROWID)
END
,
CASE
WHEN C.DEFLENGTH <= 4000
THEN NULL
ELSE
SYS.DBMS_METADATA_UTIL.LONG2CLOB(C.DEFLENGTH
,
'SYS.COL$'
,
'DEFAULT$'
,
C.ROWID)
END
,
CASE
WHEN C.DEFLENGTH IS NULL OR BITAND(C.PROPERTY
, 32+65536)=0
THEN NULL
ELSE
(SELECT SYS.DBMS_METADATA.PARSE_DEFAULT(U.NAME
, O.NAME
,
C.DEFLENGTH
, C.ROWID)
FROM OBJ$ O
, USER$ U
WHERE O.OBJ#=C.OBJ#
AND O.OWNER#=U.USER#)
END
,
SYS.DBMS_METADATA_UTIL.BLOB2CLOB(C.OBJ#
, C.INTCOL#
, C.PROPERTY)
,
(SELECT E.GUARD_ID
FROM ECOL$ E
WHERE E.TABOBJ#=C.OBJ#
AND E.COLNUM=C.INTCOL#)
,
C.CHARSETID
, C.CHARSETFORM
,
C.INTCOL#
, 0
, NULL
,
( SELECT VALUE(CV)
FROM KU$_CONSTRAINT_COL_VIEW CCV
, KU$_CONSTRAINT0_VIEW CV
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)
)
,
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
, NVL(EVALEDITION#
, 0)
,
NVL(UNUSABLEBEFORE#
, 0)
,
NVL(UNUSABLEBEGINNING#
, 0)
,
-- 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
WHERE ((NVL(UNUSABLEBEFORE#
, 0) = 0 OR
DBMS_EDITIONS_UTILITIES.COMPARE_EDITION(
DBMS_METADATA.GET_EDITION_ID
, UNUSABLEBEFORE#) IN (0
, 2))
AND
(NVL(UNUSABLEBEGINNING#
, 0) = 0 OR
DBMS_EDITIONS_UTILITIES.COMPARE_EDITION(
DBMS_METADATA.GET_EDITION_ID
, UNUSABLEBEGINNING#) = 1))
|
|
|