SELECT
/*+ ORDERED */
u.username owner
, t.name table_name
, c.name key_name
, col.name column_name
, ccol.pos# position
FROM
dba_users u
, sys.obj$ t
, sys.con$ c
, sys.cdef$ cd
, sys.col$ col
, sys.ccol$ ccol
WHERE u.user_id = c.owner#
AND c.con# = cd.con#
AND cd.con# = ccol.con#
AND cd.obj# = t.obj#
AND ccol.intcol# = col.intcol#
AND col.obj# = t.obj#
AND cd.type# IN (2,3,4) /* primary, unique, referential */
AND t.type# IN (2,4) /* table, view */
AND ( t.owner# = UID
OR t.obj# IN
(SELECT obj# FROM sys.objauth$
WHERE ( grantee# = UID
OR grantee# IN
(SELECT privilege#
FROM sys.sysauth$
WHERE privilege# > 0
START WITH grantee# = UID
CONNECT BY PRIOR privilege# = grantee#)))
OR EXISTS /* SELECT ANY TABLE */
(SELECT null FROM v$enabledprivs
WHERE priv_number = -47))
WITH READ ONLY
SELECT
/*+ ORDERED */
U.USERNAME OWNER
, T.NAME TABLE_NAME
, C.NAME KEY_NAME
, COL.NAME COLUMN_NAME
, CCOL.POS# POSITION
FROM
DBA_USERS U
, SYS.OBJ$ T
, SYS.CON$ C
, SYS.CDEF$ CD
, SYS.COL$ COL
, SYS.CCOL$ CCOL
WHERE U.USER_ID = C.OWNER#
AND C.CON# = CD.CON#
AND CD.CON# = CCOL.CON#
AND CD.OBJ# = T.OBJ#
AND CCOL.INTCOL# = COL.INTCOL#
AND COL.OBJ# = T.OBJ#
AND CD.TYPE# IN (2
, 3
, 4) /* PRIMARY
, UNIQUE
, REFERENTIAL */
AND T.TYPE# IN (2
, 4) /* TABLE
, VIEW */
AND ( T.OWNER# = UID
OR T.OBJ# IN
(SELECT OBJ#
FROM SYS.OBJAUTH$
WHERE ( GRANTEE# = UID
OR GRANTEE# IN
(SELECT PRIVILEGE#
FROM SYS.SYSAUTH$
WHERE PRIVILEGE# > 0
START WITH GRANTEE# = UID
CONNECT BY PRIOR PRIVILEGE# = GRANTEE#)))
OR EXISTS /* SELECT ANY TABLE */
(SELECT NULL
FROM V$ENABLEDPRIVS
WHERE PRIV_NUMBER = -47))
WITH READ ONLY
|
|
|