select io.name, idx.name, bo.name, base.name,
decode(bitand(c.property, 1024), 1024,
(select decode(bitand(tc.property, 1), 1, ac.name, tc.name)
from sys.col$ tc, attrcol$ ac
where tc.intcol# = c.intcol#-1
and tc.obj# = c.obj#
and tc.obj# = ac.obj#(+)
and tc.intcol# = ac.intcol#(+)),
decode(ac.name, null, c.name, ac.name)),
ic.pos#, c.length, c.spare3,
decode(bitand(c.property, 131072), 131072, 'DESC', 'ASC')
from sys.col$ c, sys.obj$ idx, sys.obj$ base, sys.icol$ ic,
sys.user$ io, sys.user$ bo, sys.ind$ i, sys.attrcol$ ac
where ic.bo# = c.obj#
and decode(bitand(i.property,1024),0,ic.intcol#,ic.spare2) = c.intcol#
and ic.bo# = base.obj#
and io.user# = idx.owner#
and bo.user# = base.owner#
and ic.obj# = idx.obj#
and idx.obj# = i.obj#
and i.type# in (1, 2, 3, 4, 6, 7, 9)
and c.obj# = ac.obj#(+)
and c.intcol# = ac.intcol#(+)
and (idx.owner# = userenv('SCHEMAID') or
base.owner# = userenv('SCHEMAID')
or
base.obj# in ( select obj#
from sys.objauth$
where grantee# in ( select kzsrorol
from x$kzsro
)
)
or
exists (select null from v$enabledprivs
where priv_number in (-45 /* LOCK ANY TABLE */,
-47 /* SELECT ANY TABLE */,
-397/* READ ANY TABLE */,
-48 /* INSERT ANY TABLE */,
-49 /* UPDATE ANY TABLE */,
-50 /* DELETE ANY TABLE */)
)
)
SELECT IO.NAME
, IDX.NAME
, BO.NAME
, BASE.NAME
,
DECODE(BITAND(C.PROPERTY
, 1024)
, 1024
,
(SELECT DECODE(BITAND(TC.PROPERTY
, 1)
, 1
, AC.NAME
, TC.NAME)
FROM SYS.COL$ TC
, ATTRCOL$ AC
WHERE TC.INTCOL# = C.INTCOL#-1
AND TC.OBJ# = C.OBJ#
AND TC.OBJ# = AC.OBJ#(+)
AND TC.INTCOL# = AC.INTCOL#(+))
,
DECODE(AC.NAME
, NULL
, C.NAME
, AC.NAME))
,
IC.POS#
, C.LENGTH
, C.SPARE3
,
DECODE(BITAND(C.PROPERTY
, 131072)
, 131072
, 'DESC'
, 'ASC')
FROM SYS.COL$ C
, SYS.OBJ$ IDX
, SYS.OBJ$ BASE
, SYS.ICOL$ IC
,
SYS.USER$ IO
, SYS.USER$ BO
, SYS.IND$ I
, SYS.ATTRCOL$ AC
WHERE IC.BO# = C.OBJ#
AND DECODE(BITAND(I.PROPERTY
, 1024)
, 0
, IC.INTCOL#
, IC.SPARE2) = C.INTCOL#
AND IC.BO# = BASE.OBJ#
AND IO.USER# = IDX.OWNER#
AND BO.USER# = BASE.OWNER#
AND IC.OBJ# = IDX.OBJ#
AND IDX.OBJ# = I.OBJ#
AND I.TYPE# IN (1
, 2
, 3
, 4
, 6
, 7
, 9)
AND C.OBJ# = AC.OBJ#(+)
AND C.INTCOL# = AC.INTCOL#(+)
AND (IDX.OWNER# = USERENV('SCHEMAID') OR
BASE.OWNER# = USERENV('SCHEMAID')
OR
BASE.OBJ# IN ( SELECT OBJ#
FROM SYS.OBJAUTH$
WHERE GRANTEE# IN ( SELECT KZSROROL
FROM X$KZSRO
)
)
OR
EXISTS (SELECT NULL
FROM V$ENABLEDPRIVS
WHERE PRIV_NUMBER IN (-45 /* LOCK ANY TABLE */
,
-47 /* SELECT ANY TABLE */
,
-397/* READ ANY TABLE */
,
-48 /* INSERT ANY TABLE */
,
-49 /* UPDATE ANY TABLE */
,
-50 /* DELETE ANY TABLE */)
)
)
|
|
|