SELECT
u.username owner
, t.name table_name
, c.name column_name
, decode(c.type#, 1, decode(c.charsetform, 2, 'NVARCHAR2', 'VARCHAR2'),
2, decode(c.scale, null,
decode(c.precision#, null, 'NUMBER', 'FLOAT'),
'NUMBER'),
8, 'LONG',
9, decode(c.charsetform, 2, 'NCHAR VARYING', 'VARCHAR'),
12, 'DATE', 23, 'RAW', 24, 'LONG RAW',
69, 'ROWID',
96, decode(c.charsetform, 2, 'NCHAR', 'CHAR'),
105, 'MLSLABEL',
106, 'MLSLABEL',
112, decode(c.charsetform, 2, 'NCLOB', 'CLOB'),
113, 'BLOB', 114, 'BFILE', 115, 'CFILE',
178, 'TIME(' ||c.spare1|| ')',
179, 'TIME(' ||c.spare1|| ')' || ' WITH TIME ZONE',
180, 'TIMESTAMP(' ||c.spare1|| ')',
181, 'TIMESTAMP(' ||c.spare1|| ')' || ' WITH TIME ZONE',
182, 'INTERVAL YEAR(' ||c.spare2||') TO MONTH',
183, 'INTERVAL DAY(' ||c.spare2||') TO SECOND(' ||
c.spare1 || ')',
208, 'UROWID',
'UNDEFINED') data_type
, decode(c.length, null, 0, c.length) data_length
, decode(c.precision#, null, 0, c.precision#) data_precision
FROM
dba_users u
, sys.obj$ t
, sys.col$ c
WHERE u.user_id = t.owner#
AND t.type# IN (2,4)
AND t.obj# = c.obj#
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
U.USERNAME OWNER
, T.NAME TABLE_NAME
, C.NAME COLUMN_NAME
, DECODE(C.TYPE#
, 1
, DECODE(C.CHARSETFORM
, 2
, 'NVARCHAR2'
, 'VARCHAR2')
,
2
, DECODE(C.SCALE
, NULL
,
DECODE(C.PRECISION#
, NULL
, 'NUMBER'
, 'FLOAT')
,
'NUMBER')
,
8
, 'LONG'
,
9
, DECODE(C.CHARSETFORM
, 2
, 'NCHAR VARYING'
, 'VARCHAR')
,
12
, 'DATE'
, 23
, 'RAW'
, 24
, 'LONG RAW'
,
69
, 'ROWID'
,
96
, DECODE(C.CHARSETFORM
, 2
, 'NCHAR'
, 'CHAR')
,
105
, 'MLSLABEL'
,
106
, 'MLSLABEL'
,
112
, DECODE(C.CHARSETFORM
, 2
, 'NCLOB'
, 'CLOB')
,
113
, 'BLOB'
, 114
, 'BFILE'
, 115
, 'CFILE'
,
178
, 'TIME(' ||C.SPARE1|| ')'
,
179
, 'TIME(' ||C.SPARE1|| ')' || ' WITH TIME ZONE'
,
180
, 'TIMESTAMP(' ||C.SPARE1|| ')'
,
181
, 'TIMESTAMP(' ||C.SPARE1|| ')' || ' WITH TIME ZONE'
,
182
, 'INTERVAL YEAR(' ||C.SPARE2||') TO MONTH'
,
183
, 'INTERVAL DAY(' ||C.SPARE2||') TO SECOND(' ||
C.SPARE1 || ')'
,
208
, 'UROWID'
,
'UNDEFINED') DATA_TYPE
, DECODE(C.LENGTH
, NULL
, 0
, C.LENGTH) DATA_LENGTH
, DECODE(C.PRECISION#
, NULL
, 0
, C.PRECISION#) DATA_PRECISION
FROM
DBA_USERS U
, SYS.OBJ$ T
, SYS.COL$ C
WHERE U.USER_ID = T.OWNER#
AND T.TYPE# IN (2
, 4)
AND T.OBJ# = C.OBJ#
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
|
|
|