SELECT
u.name, o.name, ut.name, ot.name,
NULL,NULL, NULL, NULL, 'INDEX',
i.blevel, i.leafcnt, i.distkey, i.lblkkey, i.dblkkey, i.clufac, i.rowcnt,
ins.cachedblk, ins.cachehit, i.samplesize, i.analyzetime,
decode(bitand(i.flags, 2048), 0, 'NO', 'YES'),
decode(bitand(i.flags, 64), 0, 'NO', 'YES'),
decode(bitand(t.trigflag, 67108864) + bitand(t.trigflag, 134217728),
0, NULL, 67108864, 'DATA', 134217728, 'CACHE', 'ALL'),
case when
(i.analyzetime is null or
t.analyzetime is null) then null
when (i.analyzetime < t.analyzetime or
(((m.inserts + m.deletes + m.updates) >
t.rowcnt *
to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
DBMS_STATS_INTERNAL.DQ(ut.name),
DBMS_STATS_INTERNAL.DQ(ot.name)))/100 or
bitand(m.flags,1) = 1))) then 'YES'
else 'NO'
end,
'SHARED'
FROM
sys.user$ u, sys.ind$ i, sys.obj$ o, sys.ind_stats$ ins,
sys.obj$ ot, sys.user$ ut, sys.tab$ t, sys.mon_mods_all$ m
WHERE
u.user# = o.owner#
and o.obj# = i.obj#
and bitand(i.flags, 4096) = 0
and i.type# in (1, 2, 4, 6, 7, 8)
and i.obj# = ins.obj# (+)
and i.bo# = ot.obj#
and ot.type# = 2
and ot.owner# = ut.user#
and ot.obj# = t.obj#
and t.obj# = m.obj# (+)
and o.subname IS NULL
and o.namespace = 4 and o.remoteowner IS NULL and o.linkname IS NULL
and bitand(o.flags, 128) = 0 -- not in recycle bin
and (o.owner# = userenv('SCHEMAID')
or
o.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 */)
)
)
UNION ALL
/* Cluster indexes */
SELECT
u.name, o.name, ut.name, ot.name,
NULL,NULL, NULL, NULL, 'INDEX',
i.blevel, i.leafcnt, i.distkey, i.lblkkey, i.dblkkey, i.clufac, i.rowcnt,
ins.cachedblk, ins.cachehit, i.samplesize, i.analyzetime,
decode(bitand(i.flags, 2048), 0, 'NO', 'YES'),
decode(bitand(i.flags, 64), 0, 'NO', 'YES'),
-- a cluster index is considered locked if any of the table in
-- the cluster is locked.
decode((select
decode(nvl(sum(decode(bitand(t.trigflag, 67108864), 0, 0, 1)),0),
0, 0, 67108864) +
decode(nvl(sum(decode(bitand(nvl(t.trigflag, 0), 134217728),
0, 0, 1)), 0),
0, 0, 134217728)
from sys.tab$ t where i.bo# = t.bobj#),
0, NULL, 67108864, 'DATA', 134217728, 'CACHE', 'ALL'),
case
when i.analyzetime is null then null
when
(select -- STALE
sum(case when
i.analyzetime < tab.analyzetime or
bitand(m.flags,1) = 1 or
m.inserts + m.updates + m.deletes >
tab.rowcnt *
to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
DBMS_STATS_INTERNAL.DQ(ut.name),
DBMS_STATS_INTERNAL.DQ(ot.name)))/100
then 1 else 0 end)
from sys.tab$ tab, mon_mods_all$ m
where
m.obj#(+) = tab.obj# and tab.bobj# = i.bo#) > 0 then 'YES'
else 'NO' end,
'SHARED'
FROM
sys.user$ u, sys.ind$ i, sys.obj$ o, sys.ind_stats$ ins,
sys.obj$ ot, sys.user$ ut
WHERE
u.user# = o.owner#
and o.obj# = i.obj#
and bitand(i.flags, 4096) = 0
and i.type# = 3 /* Cluster index */
and i.obj# = ins.obj# (+)
and i.bo# = ot.obj#
and ot.owner# = ut.user#
and o.subname IS NULL
and o.namespace = 4 and o.remoteowner IS NULL and o.linkname IS NULL
and bitand(o.flags, 128) = 0 -- not in recycle bin
and (o.owner# = userenv('SCHEMAID')
or
o.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 */)
)
)
UNION ALL
/* Partitions */
SELECT
u.name, io.name, ut.name, ot.name,
io.subname, ip.part#, NULL, NULL, 'PARTITION',
ip.blevel, ip.leafcnt, ip.distkey, ip.lblkkey, ip.dblkkey,
ip.clufac, ip.rowcnt, ins.cachedblk, ins.cachehit,
ip.samplesize, ip.analyzetime,
decode(bitand(ip.flags, 16), 0, 'NO', 'YES'),
decode(bitand(ip.flags, 8), 0, 'NO', 'YES'),
/* stattype_locked */
(select
-- not a local index, just look at the lock at table level
decode(bitand(t.trigflag, 67108864) + bitand(t.trigflag, 134217728),
0, NULL, 67108864, 'DATA', 134217728, 'CACHE', 'ALL')
FROM sys.tab$ t
where t.obj# = i.bo# and
bitand(po.flags, 1) = 0 -- not local index
union all
select
-- local index, we need to see if the corresponding partn is locked
decode(
/*
* Following decode returns 1 if DATA stats locked for partition
* or at table level
*/
decode(bitand(t.trigflag, 67108864) + bitand(tp.flags, 32), 0, 0, 1) +
/*
* Following decode returns 2 if CACHE stats locked for partition
* or at table level
*/
decode(bitand(t.trigflag, 134217728) + bitand(tp.flags, 64), 0, 0, 2),
/* if 0 => not locked, 3 => data and cache stats locked */
0, NULL, 1, 'DATA', 2, 'CACHE', 'ALL')
FROM sys.tabpartv$ tp, sys.tab$ t
where tp.bo# = i.bo# and tp.phypart# = ip.phypart# and
tp.bo# = t.obj# and
bitand(po.flags, 1) = 1), -- local index
/* stale_stats */
(select
case when (i.analyzetime is null or
tab.analyzetime is null) then null
when (i.analyzetime < tab.analyzetime or
((m.inserts + m.deletes + m.updates) >
tab.rowcnt *
to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
DBMS_STATS_INTERNAL.DQ(ut.name),
DBMS_STATS_INTERNAL.DQ(ot.name)))/100 or
bitand(m.flags,1) = 1)) then 'YES'
else 'NO'
end
FROM sys.tab$ tab, sys.mon_mods_all$ m
where tab.obj# = i.bo# and tab.obj# = m.obj# (+) and
bitand(po.flags, 1) = 0 -- not local index
union all
select
case when (ip.analyzetime is null or
tp.analyzetime is null) then null
when (ip.analyzetime < tp.analyzetime or
((m.inserts + m.deletes + m.updates) >
tp.rowcnt *
to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
DBMS_STATS_INTERNAL.DQ(ut.name),
DBMS_STATS_INTERNAL.DQ(ot.name)))/100 or
bitand(m.flags,1) = 1)) then 'YES'
else 'NO'
end
FROM sys.tabpartv$ tp, sys.mon_mods_all$ m
where tp.bo# = i.bo# and tp.phypart# = ip.phypart# and
tp.obj# = m.obj# (+) and
bitand(po.flags, 1) = 1), -- local index
'SHARED'
FROM
sys.obj$ io, sys.indpartv$ ip,
sys.user$ u, sys.ind_stats$ ins,
sys.ind$ i, sys.obj$ ot, sys.user$ ut, sys.partobj$ po
WHERE
io.obj# = ip.obj#
and ip.bo# = i.obj#
and io.owner# = u.user#
and ip.obj# = ins.obj# (+)
and ip.bo# = i.obj#
and i.type# != 9 -- no domain indexes
and i.bo# = ot.obj#
and ot.type# = 2
and ot.owner# = ut.user#
and i.obj# = po.obj#
and io.namespace = 4 and io.remoteowner IS NULL and io.linkname IS NULL
and bitand(io.flags, 128) = 0 -- not in recycle bin
and (io.owner# = userenv('SCHEMAID')
or
i.bo# 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 */)
)
)
UNION ALL
/* Composite partitions */
SELECT
u.name, io.name, ut.name, ot.name,
io.subname, icp.part#, NULL, NULL, 'PARTITION',
icp.blevel, icp.leafcnt, icp.distkey, icp.lblkkey, icp.dblkkey,
icp.clufac, icp.rowcnt, ins.cachedblk, ins.cachehit,
icp.samplesize, icp.analyzetime,
decode(bitand(icp.flags, 16), 0, 'NO', 'YES'),
decode(bitand(icp.flags, 8), 0, 'NO', 'YES'),
/* stattype_locked */
(select
-- not a local index, just look at the lock at table level
decode(bitand(t.trigflag, 67108864) + bitand(t.trigflag, 134217728),
0, NULL, 67108864, 'DATA', 134217728, 'CACHE', 'ALL')
FROM sys.tab$ t
where t.obj# = i.bo# and
bitand(po.flags, 1) = 0 -- not local index
union all
select
-- local index, we need to see if the corresponding partn is locked
decode(
/*
* Following decode returns 1 if DATA stats locked for partition
* or at table level
*/
decode(bitand(t.trigflag, 67108864) + bitand(tcp.flags, 32), 0, 0, 1) +
/*
* Following decode returns 2 if CACHE stats locked for partition
* or at table level
*/
decode(bitand(t.trigflag, 134217728) + bitand(tcp.flags, 64), 0, 0, 2),
/* if 0 => not locked, 3 => data and cache stats locked */
0, NULL, 1, 'DATA', 2, 'CACHE', 'ALL')
FROM sys.tabcompartv$ tcp, sys.tab$ t
where tcp.bo# = i.bo# and tcp.phypart# = icp.phypart# and
tcp.bo# = t.obj# and
bitand(po.flags, 1) = 1), -- local index
/* stale_stats */
(select
case when (i.analyzetime is null or
tab.analyzetime is null) then null
when (i.analyzetime < tab.analyzetime or
((m.inserts + m.deletes + m.updates) >
tab.rowcnt *
to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
DBMS_STATS_INTERNAL.DQ(ut.name),
DBMS_STATS_INTERNAL.DQ(ot.name)))/100 or
bitand(m.flags,1) = 1)) then 'YES'
else 'NO'
end
FROM sys.tab$ tab, sys.mon_mods_all$ m
where tab.obj# = i.bo# and tab.obj# = m.obj# (+) and
bitand(po.flags, 1) = 0 -- not local index
union all
select
case when (icp.analyzetime is null or
tcp.analyzetime is null) then null
when (icp.analyzetime < tcp.analyzetime or
((m.inserts + m.deletes + m.updates) >
tcp.rowcnt *
to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
DBMS_STATS_INTERNAL.DQ(ut.name),
DBMS_STATS_INTERNAL.DQ(ot.name)))/100 or
bitand(m.flags,1) = 1)) then 'YES'
else 'NO'
end
FROM sys.tabcompartv$ tcp, sys.mon_mods_all$ m
where tcp.bo# = i.bo# and tcp.phypart# = icp.phypart# and
tcp.obj# = m.obj# (+) and
bitand(po.flags, 1) = 1), -- local index
'SHARED'
FROM
sys.obj$ io, sys.indcompartv$ icp, sys.user$ u, sys.ind_stats$ ins,
sys.ind$ i, sys.obj$ ot, sys.user$ ut, sys.partobj$ po
WHERE
io.obj# = icp.obj#
and io.owner# = u.user#
and icp.obj# = ins.obj# (+)
and i.obj# = icp.bo#
and icp.bo# = i.obj#
and i.type# != 9 -- no domain indexes
and i.bo# = ot.obj#
and ot.type# = 2
and ot.owner# = ut.user#
and i.obj# = po.obj#
and io.namespace = 4 and io.remoteowner IS NULL and io.linkname IS NULL
and bitand(io.flags, 128) = 0 -- not in recycle bin
and (io.owner# = userenv('SCHEMAID')
or
i.bo# in (select oa.obj#
FROM sys.objauth$ oa
where grantee# in ( select kzsrorol
FROM x$kzsro
)
)
or /* user has system privileges */
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 */)
)
)
UNION ALL
/* Subpartitions */
SELECT
u.name, op.name, ut.name, ot.name,
op.subname, icp.part#, os.subname, isp.subpart#,
'SUBPARTITION',
isp.blevel, isp.leafcnt, isp.distkey, isp.lblkkey, isp.dblkkey,
isp.clufac, isp.rowcnt, ins.cachedblk, ins.cachehit,
isp.samplesize, isp.analyzetime,
decode(bitand(isp.flags, 16), 0, 'NO', 'YES'),
decode(bitand(isp.flags, 8), 0, 'NO', 'YES'),
/* stattype_locked */
(select
-- not a local index, just look at the lock at table level
decode(bitand(t.trigflag, 67108864) + bitand(t.trigflag, 134217728),
0, NULL, 67108864, 'DATA', 134217728, 'CACHE', 'ALL')
FROM sys.tab$ t
where t.obj# = i.bo# and
bitand(po.flags, 1) = 0 -- not local index
union all
select
-- local index, we need to see if the corresponding composite partn
-- is locked
decode(
/*
* Following decode returns 1 if DATA stats locked for partition
* or at table level
*/
decode(bitand(t.trigflag, 67108864) + bitand(tcp.flags, 32), 0, 0, 1) +
/*
* Following decode returns 2 if CACHE stats locked for partition
* or at table level
*/
decode(bitand(t.trigflag, 134217728) + bitand(tcp.flags, 64), 0, 0, 2),
/* if 0 => not locked, 3 => data and cache stats locked */
0, NULL, 1, 'DATA', 2, 'CACHE', 'ALL')
FROM sys.tabcompartv$ tcp, sys.tabsubpartv$ tsp, sys.tab$ t
where tcp.bo# = i.bo# and tcp.phypart# = icp.phypart# and
tsp.pobj# = tcp.obj# and
isp.physubpart# = tsp.physubpart# and
tcp.bo# = t.obj# and
bitand(po.flags, 1) = 1), -- local index
/* stale_stats */
(select
case when (i.analyzetime is null or
tab.analyzetime is null) then null
when (i.analyzetime < tab.analyzetime or
((m.inserts + m.deletes + m.updates) >
tab.rowcnt *
to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
DBMS_STATS_INTERNAL.DQ(ut.name),
DBMS_STATS_INTERNAL.DQ(ot.name)))/100 or
bitand(m.flags,1) = 1)) then 'YES'
else 'NO'
end
FROM sys.tab$ tab, sys.mon_mods_all$ m
where tab.obj# = i.bo# and tab.obj# = m.obj# (+) and
bitand(po.flags, 1) = 0 -- not local index
union all
select
case when (isp.analyzetime is null or
tsp.analyzetime is null) then null
when (isp.analyzetime < tsp.analyzetime or
((m.inserts + m.deletes + m.updates) >
tsp.rowcnt *
to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
DBMS_STATS_INTERNAL.DQ(ut.name),
DBMS_STATS_INTERNAL.DQ(ot.name)))/100 or
bitand(m.flags,1) = 1)) then 'YES'
else 'NO'
end
FROM sys.tabcompartv$ tcp, sys.tabsubpartv$ tsp, sys.mon_mods_all$ m
where tcp.bo# = i.bo# and tcp.phypart# = icp.phypart# and
tsp.pobj# = tcp.obj# and
isp.physubpart# = tsp.physubpart# and
tsp.obj# = m.obj# (+) and
bitand(po.flags, 1) = 1), -- local index
'SHARED'
FROM
sys.obj$ os, sys.obj$ op, sys.indcompartv$ icp, sys.indsubpartv$ isp,
sys.user$ u, sys.ind_stats$ ins,
sys.ind$ i, sys.obj$ ot, sys.user$ ut, sys.partobj$ po
WHERE
os.obj# = isp.obj#
and op.obj# = icp.obj#
and icp.obj# = isp.pobj#
and icp.bo# = i.obj#
and i.type# != 9 -- no domain indexes
and u.user# = op.owner#
and isp.obj# = ins.obj# (+)
and icp.bo# = i.obj#
and i.bo# = ot.obj#
and ot.type# = 2
and ot.owner# = ut.user#
and i.obj# = po.obj#
and op.namespace = 4 and op.remoteowner IS NULL and op.linkname IS NULL
and bitand(op.flags, 128) = 0 -- not in recycle bin
and (op.owner# = userenv('SCHEMAID')
or i.bo# in
(select oa.obj#
FROM sys.objauth$ oa
where grantee# in ( select kzsrorol
FROM x$kzsro
)
)
or /* user has system privileges */
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 */)
)
)
UNION ALL
SELECT
u.name, o.name, ut.name, ot.name,
NULL,NULL, NULL, NULL, 'INDEX',
sesi.blevel_kxttst_is, sesi.leafcnt_kxttst_is, sesi.distkey_kxttst_is,
sesi.lblkkey_kxttst_is, sesi.dblkkey_kxttst_is, sesi.clufac_kxttst_is,
sesi.rowcnt_kxttst_is,
sesi.cachedblk_kxttst_is, sesi.cachehit_kxttst_is,
sesi.samplesize_kxttst_is, sesi.analyzetime_kxttst_is,
decode(bitand(sesi.flags_kxttst_is, 2048), 0, 'NO', 'YES'),
decode(bitand(sesi.flags_kxttst_is, 64), 0, 'NO', 'YES'),
null, /* no lock on session private stats */
null, /* session based dml monitoring not available */
'SESSION'
FROM
sys.x$kxttsteis sesi,
sys.user$ u, sys.ind$ i, sys.obj$ o,
sys.obj$ ot, sys.user$ ut
WHERE
u.user# = o.owner#
and o.obj# = i.obj#
and i.obj# = sesi.obj#_kxttst_is
and bitand(i.flags, 4096) = 0
and i.type# in (1, 2, 4, 6, 7, 8)
and i.bo# = ot.obj#
and ot.type# = 2
and ot.owner# = ut.user#
and o.subname IS NULL
and o.namespace = 4 and o.remoteowner IS NULL and o.linkname IS NULL
and bitand(o.flags, 128) = 0 -- not in recycle bin
and (o.owner# = userenv('SCHEMAID')
or
o.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
U.NAME
, O.NAME
, UT.NAME
, OT.NAME
,
NULL
, NULL
, NULL
, NULL
, 'INDEX'
,
I.BLEVEL
, I.LEAFCNT
, I.DISTKEY
, I.LBLKKEY
, I.DBLKKEY
, I.CLUFAC
, I.ROWCNT
,
INS.CACHEDBLK
, INS.CACHEHIT
, I.SAMPLESIZE
, I.ANALYZETIME
,
DECODE(BITAND(I.FLAGS
, 2048)
, 0
, 'NO'
, 'YES')
,
DECODE(BITAND(I.FLAGS
, 64)
, 0
, 'NO'
, 'YES')
,
DECODE(BITAND(T.TRIGFLAG
, 67108864) + BITAND(T.TRIGFLAG
, 134217728)
,
0
, NULL
, 67108864
, 'DATA'
, 134217728
, 'CACHE'
, 'ALL')
,
CASE WHEN
(I.ANALYZETIME IS NULL OR
T.ANALYZETIME IS NULL) THEN NULL
WHEN (I.ANALYZETIME < T.ANALYZETIME OR
(((M.INSERTS + M.DELETES + M.UPDATES) >
T.ROWCNT *
TO_NUMBER(DBMS_STATS.GET_PREFS('STALE_PERCENT'
,
DBMS_STATS_INTERNAL.DQ(UT.NAME)
,
DBMS_STATS_INTERNAL.DQ(OT.NAME)))/100 OR
BITAND(M.FLAGS
, 1) = 1))) THEN 'YES'
ELSE 'NO'
END
,
'SHARED'
FROM
SYS.USER$ U
, SYS.IND$ I
, SYS.OBJ$ O
, SYS.IND_STATS$ INS
,
SYS.OBJ$ OT
, SYS.USER$ UT
, SYS.TAB$ T
, SYS.MON_MODS_ALL$ M
WHERE
U.USER# = O.OWNER#
AND O.OBJ# = I.OBJ#
AND BITAND(I.FLAGS
, 4096) = 0
AND I.TYPE# IN (1
, 2
, 4
, 6
, 7
, 8)
AND I.OBJ# = INS.OBJ# (+)
AND I.BO# = OT.OBJ#
AND OT.TYPE# = 2
AND OT.OWNER# = UT.USER#
AND OT.OBJ# = T.OBJ#
AND T.OBJ# = M.OBJ# (+)
AND O.SUBNAME IS NULL
AND O.NAMESPACE = 4
AND O.REMOTEOWNER IS NULL
AND O.LINKNAME IS NULL
AND BITAND(O.FLAGS
, 128) = 0 -- NOT IN RECYCLE BIN
AND (O.OWNER# = USERENV('SCHEMAID')
OR
O.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 */)
)
)
UNION ALL
/* CLUSTER INDEXES */
SELECT
U.NAME
, O.NAME
, UT.NAME
, OT.NAME
,
NULL
, NULL
, NULL
, NULL
, 'INDEX'
,
I.BLEVEL
, I.LEAFCNT
, I.DISTKEY
, I.LBLKKEY
, I.DBLKKEY
, I.CLUFAC
, I.ROWCNT
,
INS.CACHEDBLK
, INS.CACHEHIT
, I.SAMPLESIZE
, I.ANALYZETIME
,
DECODE(BITAND(I.FLAGS
, 2048)
, 0
, 'NO'
, 'YES')
,
DECODE(BITAND(I.FLAGS
, 64)
, 0
, 'NO'
, 'YES')
,
-- A CLUSTER INDEX IS CONSIDERED LOCKED IF ANY OF THE TABLE IN
-- THE CLUSTER IS LOCKED.
DECODE((SELECT
DECODE(NVL(SUM(DECODE(BITAND(T.TRIGFLAG
, 67108864)
, 0
, 0
, 1))
, 0)
,
0
, 0
, 67108864) +
DECODE(NVL(SUM(DECODE(BITAND(NVL(T.TRIGFLAG
, 0)
, 134217728)
,
0
, 0
, 1))
, 0)
,
0
, 0
, 134217728)
FROM SYS.TAB$ T
WHERE I.BO# = T.BOBJ#)
,
0
, NULL
, 67108864
, 'DATA'
, 134217728
, 'CACHE'
, 'ALL')
,
CASE
WHEN I.ANALYZETIME IS NULL THEN NULL
WHEN
(SELECT -- STALE
SUM(CASE WHEN
I.ANALYZETIME < TAB.ANALYZETIME OR
BITAND(M.FLAGS
, 1) = 1 OR
M.INSERTS + M.UPDATES + M.DELETES >
TAB.ROWCNT *
TO_NUMBER(DBMS_STATS.GET_PREFS('STALE_PERCENT'
,
DBMS_STATS_INTERNAL.DQ(UT.NAME)
,
DBMS_STATS_INTERNAL.DQ(OT.NAME)))/100
THEN 1 ELSE 0 END)
FROM SYS.TAB$ TAB
, MON_MODS_ALL$ M
WHERE
M.OBJ#(+) = TAB.OBJ#
AND TAB.BOBJ# = I.BO#) > 0 THEN 'YES'
ELSE 'NO' END
,
'SHARED'
FROM
SYS.USER$ U
, SYS.IND$ I
, SYS.OBJ$ O
, SYS.IND_STATS$ INS
,
SYS.OBJ$ OT
, SYS.USER$ UT
WHERE
U.USER# = O.OWNER#
AND O.OBJ# = I.OBJ#
AND BITAND(I.FLAGS
, 4096) = 0
AND I.TYPE# = 3 /* CLUSTER INDEX */
AND I.OBJ# = INS.OBJ# (+)
AND I.BO# = OT.OBJ#
AND OT.OWNER# = UT.USER#
AND O.SUBNAME IS NULL
AND O.NAMESPACE = 4
AND O.REMOTEOWNER IS NULL
AND O.LINKNAME IS NULL
AND BITAND(O.FLAGS
, 128) = 0 -- NOT IN RECYCLE BIN
AND (O.OWNER# = USERENV('SCHEMAID')
OR
O.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 */)
)
)
UNION ALL
/* PARTITIONS */
SELECT
U.NAME
, IO.NAME
, UT.NAME
, OT.NAME
,
IO.SUBNAME
, IP.PART#
, NULL
, NULL
, 'PARTITION'
,
IP.BLEVEL
, IP.LEAFCNT
, IP.DISTKEY
, IP.LBLKKEY
, IP.DBLKKEY
,
IP.CLUFAC
, IP.ROWCNT
, INS.CACHEDBLK
, INS.CACHEHIT
,
IP.SAMPLESIZE
, IP.ANALYZETIME
,
DECODE(BITAND(IP.FLAGS
, 16)
, 0
, 'NO'
, 'YES')
,
DECODE(BITAND(IP.FLAGS
, 8)
, 0
, 'NO'
, 'YES')
,
/* STATTYPE_LOCKED */
(SELECT
-- NOT A LOCAL INDEX
, JUST LOOK AT THE LOCK AT TABLE LEVEL
DECODE(BITAND(T.TRIGFLAG
, 67108864) + BITAND(T.TRIGFLAG
, 134217728)
,
0
, NULL
, 67108864
, 'DATA'
, 134217728
, 'CACHE'
, 'ALL')
FROM SYS.TAB$ T
WHERE T.OBJ# = I.BO# AND
BITAND(PO.FLAGS
, 1) = 0 -- NOT LOCAL INDEX
UNION ALL
SELECT
-- LOCAL INDEX
, WE NEED TO SEE IF THE CORRESPONDING PARTN IS LOCKED
DECODE(
/*
* FOLLOWING DECODE RETURNS 1 IF DATA STATS LOCKED FOR PARTITION
* OR AT TABLE LEVEL
*/
DECODE(BITAND(T.TRIGFLAG
, 67108864) + BITAND(TP.FLAGS
, 32)
, 0
, 0
, 1) +
/*
* FOLLOWING DECODE RETURNS 2 IF CACHE STATS LOCKED FOR PARTITION
* OR AT TABLE LEVEL
*/
DECODE(BITAND(T.TRIGFLAG
, 134217728) + BITAND(TP.FLAGS
, 64)
, 0
, 0
, 2)
,
/* IF 0 => NOT LOCKED
, 3 => DATA
AND CACHE STATS LOCKED */
0
, NULL
, 1
, 'DATA'
, 2
, 'CACHE'
, 'ALL')
FROM SYS.TABPARTV$ TP
, SYS.TAB$ T
WHERE TP.BO# = I.BO#
AND TP.PHYPART# = IP.PHYPART# AND
TP.BO# = T.OBJ# AND
BITAND(PO.FLAGS
, 1) = 1)
, -- LOCAL INDEX
/* STALE_STATS */
(SELECT
CASE WHEN (I.ANALYZETIME IS NULL OR
TAB.ANALYZETIME IS NULL) THEN NULL
WHEN (I.ANALYZETIME < TAB.ANALYZETIME OR
((M.INSERTS + M.DELETES + M.UPDATES) >
TAB.ROWCNT *
TO_NUMBER(DBMS_STATS.GET_PREFS('STALE_PERCENT'
,
DBMS_STATS_INTERNAL.DQ(UT.NAME)
,
DBMS_STATS_INTERNAL.DQ(OT.NAME)))/100 OR
BITAND(M.FLAGS
, 1) = 1)) THEN 'YES'
ELSE 'NO'
END
FROM SYS.TAB$ TAB
, SYS.MON_MODS_ALL$ M
WHERE TAB.OBJ# = I.BO#
AND TAB.OBJ# = M.OBJ# (+) AND
BITAND(PO.FLAGS
, 1) = 0 -- NOT LOCAL INDEX
UNION ALL
SELECT
CASE WHEN (IP.ANALYZETIME IS NULL OR
TP.ANALYZETIME IS NULL) THEN NULL
WHEN (IP.ANALYZETIME < TP.ANALYZETIME OR
((M.INSERTS + M.DELETES + M.UPDATES) >
TP.ROWCNT *
TO_NUMBER(DBMS_STATS.GET_PREFS('STALE_PERCENT'
,
DBMS_STATS_INTERNAL.DQ(UT.NAME)
,
DBMS_STATS_INTERNAL.DQ(OT.NAME)))/100 OR
BITAND(M.FLAGS
, 1) = 1)) THEN 'YES'
ELSE 'NO'
END
FROM SYS.TABPARTV$ TP
, SYS.MON_MODS_ALL$ M
WHERE TP.BO# = I.BO#
AND TP.PHYPART# = IP.PHYPART# AND
TP.OBJ# = M.OBJ# (+) AND
BITAND(PO.FLAGS
, 1) = 1)
, -- LOCAL INDEX
'SHARED'
FROM
SYS.OBJ$ IO
, SYS.INDPARTV$ IP
,
SYS.USER$ U
, SYS.IND_STATS$ INS
,
SYS.IND$ I
, SYS.OBJ$ OT
, SYS.USER$ UT
, SYS.PARTOBJ$ PO
WHERE
IO.OBJ# = IP.OBJ#
AND IP.BO# = I.OBJ#
AND IO.OWNER# = U.USER#
AND IP.OBJ# = INS.OBJ# (+)
AND IP.BO# = I.OBJ#
AND I.TYPE# != 9 -- NO DOMAIN INDEXES
AND I.BO# = OT.OBJ#
AND OT.TYPE# = 2
AND OT.OWNER# = UT.USER#
AND I.OBJ# = PO.OBJ#
AND IO.NAMESPACE = 4
AND IO.REMOTEOWNER IS NULL
AND IO.LINKNAME IS NULL
AND BITAND(IO.FLAGS
, 128) = 0 -- NOT IN RECYCLE BIN
AND (IO.OWNER# = USERENV('SCHEMAID')
OR
I.BO# 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 */)
)
)
UNION ALL
/* COMPOSITE PARTITIONS */
SELECT
U.NAME
, IO.NAME
, UT.NAME
, OT.NAME
,
IO.SUBNAME
, ICP.PART#
, NULL
, NULL
, 'PARTITION'
,
ICP.BLEVEL
, ICP.LEAFCNT
, ICP.DISTKEY
, ICP.LBLKKEY
, ICP.DBLKKEY
,
ICP.CLUFAC
, ICP.ROWCNT
, INS.CACHEDBLK
, INS.CACHEHIT
,
ICP.SAMPLESIZE
, ICP.ANALYZETIME
,
DECODE(BITAND(ICP.FLAGS
, 16)
, 0
, 'NO'
, 'YES')
,
DECODE(BITAND(ICP.FLAGS
, 8)
, 0
, 'NO'
, 'YES')
,
/* STATTYPE_LOCKED */
(SELECT
-- NOT A LOCAL INDEX
, JUST LOOK AT THE LOCK AT TABLE LEVEL
DECODE(BITAND(T.TRIGFLAG
, 67108864) + BITAND(T.TRIGFLAG
, 134217728)
,
0
, NULL
, 67108864
, 'DATA'
, 134217728
, 'CACHE'
, 'ALL')
FROM SYS.TAB$ T
WHERE T.OBJ# = I.BO# AND
BITAND(PO.FLAGS
, 1) = 0 -- NOT LOCAL INDEX
UNION ALL
SELECT
-- LOCAL INDEX
, WE NEED TO SEE IF THE CORRESPONDING PARTN IS LOCKED
DECODE(
/*
* FOLLOWING DECODE RETURNS 1 IF DATA STATS LOCKED FOR PARTITION
* OR AT TABLE LEVEL
*/
DECODE(BITAND(T.TRIGFLAG
, 67108864) + BITAND(TCP.FLAGS
, 32)
, 0
, 0
, 1) +
/*
* FOLLOWING DECODE RETURNS 2 IF CACHE STATS LOCKED FOR PARTITION
* OR AT TABLE LEVEL
*/
DECODE(BITAND(T.TRIGFLAG
, 134217728) + BITAND(TCP.FLAGS
, 64)
, 0
, 0
, 2)
,
/* IF 0 => NOT LOCKED
, 3 => DATA
AND CACHE STATS LOCKED */
0
, NULL
, 1
, 'DATA'
, 2
, 'CACHE'
, 'ALL')
FROM SYS.TABCOMPARTV$ TCP
, SYS.TAB$ T
WHERE TCP.BO# = I.BO#
AND TCP.PHYPART# = ICP.PHYPART# AND
TCP.BO# = T.OBJ# AND
BITAND(PO.FLAGS
, 1) = 1)
, -- LOCAL INDEX
/* STALE_STATS */
(SELECT
CASE WHEN (I.ANALYZETIME IS NULL OR
TAB.ANALYZETIME IS NULL) THEN NULL
WHEN (I.ANALYZETIME < TAB.ANALYZETIME OR
((M.INSERTS + M.DELETES + M.UPDATES) >
TAB.ROWCNT *
TO_NUMBER(DBMS_STATS.GET_PREFS('STALE_PERCENT'
,
DBMS_STATS_INTERNAL.DQ(UT.NAME)
,
DBMS_STATS_INTERNAL.DQ(OT.NAME)))/100 OR
BITAND(M.FLAGS
, 1) = 1)) THEN 'YES'
ELSE 'NO'
END
FROM SYS.TAB$ TAB
, SYS.MON_MODS_ALL$ M
WHERE TAB.OBJ# = I.BO#
AND TAB.OBJ# = M.OBJ# (+) AND
BITAND(PO.FLAGS
, 1) = 0 -- NOT LOCAL INDEX
UNION ALL
SELECT
CASE WHEN (ICP.ANALYZETIME IS NULL OR
TCP.ANALYZETIME IS NULL) THEN NULL
WHEN (ICP.ANALYZETIME < TCP.ANALYZETIME OR
((M.INSERTS + M.DELETES + M.UPDATES) >
TCP.ROWCNT *
TO_NUMBER(DBMS_STATS.GET_PREFS('STALE_PERCENT'
,
DBMS_STATS_INTERNAL.DQ(UT.NAME)
,
DBMS_STATS_INTERNAL.DQ(OT.NAME)))/100 OR
BITAND(M.FLAGS
, 1) = 1)) THEN 'YES'
ELSE 'NO'
END
FROM SYS.TABCOMPARTV$ TCP
, SYS.MON_MODS_ALL$ M
WHERE TCP.BO# = I.BO#
AND TCP.PHYPART# = ICP.PHYPART# AND
TCP.OBJ# = M.OBJ# (+) AND
BITAND(PO.FLAGS
, 1) = 1)
, -- LOCAL INDEX
'SHARED'
FROM
SYS.OBJ$ IO
, SYS.INDCOMPARTV$ ICP
, SYS.USER$ U
, SYS.IND_STATS$ INS
,
SYS.IND$ I
, SYS.OBJ$ OT
, SYS.USER$ UT
, SYS.PARTOBJ$ PO
WHERE
IO.OBJ# = ICP.OBJ#
AND IO.OWNER# = U.USER#
AND ICP.OBJ# = INS.OBJ# (+)
AND I.OBJ# = ICP.BO#
AND ICP.BO# = I.OBJ#
AND I.TYPE# != 9 -- NO DOMAIN INDEXES
AND I.BO# = OT.OBJ#
AND OT.TYPE# = 2
AND OT.OWNER# = UT.USER#
AND I.OBJ# = PO.OBJ#
AND IO.NAMESPACE = 4
AND IO.REMOTEOWNER IS NULL
AND IO.LINKNAME IS NULL
AND BITAND(IO.FLAGS
, 128) = 0 -- NOT IN RECYCLE BIN
AND (IO.OWNER# = USERENV('SCHEMAID')
OR
I.BO# IN (SELECT OA.OBJ#
FROM SYS.OBJAUTH$ OA
WHERE GRANTEE# IN ( SELECT KZSROROL
FROM X$KZSRO
)
)
OR /* USER HAS SYSTEM PRIVILEGES */
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 */)
)
)
UNION ALL
/* SUBPARTITIONS */
SELECT
U.NAME
, OP.NAME
, UT.NAME
, OT.NAME
,
OP.SUBNAME
, ICP.PART#
, OS.SUBNAME
, ISP.SUBPART#
,
'SUBPARTITION'
,
ISP.BLEVEL
, ISP.LEAFCNT
, ISP.DISTKEY
, ISP.LBLKKEY
, ISP.DBLKKEY
,
ISP.CLUFAC
, ISP.ROWCNT
, INS.CACHEDBLK
, INS.CACHEHIT
,
ISP.SAMPLESIZE
, ISP.ANALYZETIME
,
DECODE(BITAND(ISP.FLAGS
, 16)
, 0
, 'NO'
, 'YES')
,
DECODE(BITAND(ISP.FLAGS
, 8)
, 0
, 'NO'
, 'YES')
,
/* STATTYPE_LOCKED */
(SELECT
-- NOT A LOCAL INDEX
, JUST LOOK AT THE LOCK AT TABLE LEVEL
DECODE(BITAND(T.TRIGFLAG
, 67108864) + BITAND(T.TRIGFLAG
, 134217728)
,
0
, NULL
, 67108864
, 'DATA'
, 134217728
, 'CACHE'
, 'ALL')
FROM SYS.TAB$ T
WHERE T.OBJ# = I.BO# AND
BITAND(PO.FLAGS
, 1) = 0 -- NOT LOCAL INDEX
UNION ALL
SELECT
-- LOCAL INDEX
, WE NEED TO SEE IF THE CORRESPONDING COMPOSITE PARTN
-- IS LOCKED
DECODE(
/*
* FOLLOWING DECODE RETURNS 1 IF DATA STATS LOCKED FOR PARTITION
* OR AT TABLE LEVEL
*/
DECODE(BITAND(T.TRIGFLAG
, 67108864) + BITAND(TCP.FLAGS
, 32)
, 0
, 0
, 1) +
/*
* FOLLOWING DECODE RETURNS 2 IF CACHE STATS LOCKED FOR PARTITION
* OR AT TABLE LEVEL
*/
DECODE(BITAND(T.TRIGFLAG
, 134217728) + BITAND(TCP.FLAGS
, 64)
, 0
, 0
, 2)
,
/* IF 0 => NOT LOCKED
, 3 => DATA
AND CACHE STATS LOCKED */
0
, NULL
, 1
, 'DATA'
, 2
, 'CACHE'
, 'ALL')
FROM SYS.TABCOMPARTV$ TCP
, SYS.TABSUBPARTV$ TSP
, SYS.TAB$ T
WHERE TCP.BO# = I.BO#
AND TCP.PHYPART# = ICP.PHYPART# AND
TSP.POBJ# = TCP.OBJ# AND
ISP.PHYSUBPART# = TSP.PHYSUBPART# AND
TCP.BO# = T.OBJ# AND
BITAND(PO.FLAGS
, 1) = 1)
, -- LOCAL INDEX
/* STALE_STATS */
(SELECT
CASE WHEN (I.ANALYZETIME IS NULL OR
TAB.ANALYZETIME IS NULL) THEN NULL
WHEN (I.ANALYZETIME < TAB.ANALYZETIME OR
((M.INSERTS + M.DELETES + M.UPDATES) >
TAB.ROWCNT *
TO_NUMBER(DBMS_STATS.GET_PREFS('STALE_PERCENT'
,
DBMS_STATS_INTERNAL.DQ(UT.NAME)
,
DBMS_STATS_INTERNAL.DQ(OT.NAME)))/100 OR
BITAND(M.FLAGS
, 1) = 1)) THEN 'YES'
ELSE 'NO'
END
FROM SYS.TAB$ TAB
, SYS.MON_MODS_ALL$ M
WHERE TAB.OBJ# = I.BO#
AND TAB.OBJ# = M.OBJ# (+) AND
BITAND(PO.FLAGS
, 1) = 0 -- NOT LOCAL INDEX
UNION ALL
SELECT
CASE WHEN (ISP.ANALYZETIME IS NULL OR
TSP.ANALYZETIME IS NULL) THEN NULL
WHEN (ISP.ANALYZETIME < TSP.ANALYZETIME OR
((M.INSERTS + M.DELETES + M.UPDATES) >
TSP.ROWCNT *
TO_NUMBER(DBMS_STATS.GET_PREFS('STALE_PERCENT'
,
DBMS_STATS_INTERNAL.DQ(UT.NAME)
,
DBMS_STATS_INTERNAL.DQ(OT.NAME)))/100 OR
BITAND(M.FLAGS
, 1) = 1)) THEN 'YES'
ELSE 'NO'
END
FROM SYS.TABCOMPARTV$ TCP
, SYS.TABSUBPARTV$ TSP
, SYS.MON_MODS_ALL$ M
WHERE TCP.BO# = I.BO#
AND TCP.PHYPART# = ICP.PHYPART# AND
TSP.POBJ# = TCP.OBJ# AND
ISP.PHYSUBPART# = TSP.PHYSUBPART# AND
TSP.OBJ# = M.OBJ# (+) AND
BITAND(PO.FLAGS
, 1) = 1)
, -- LOCAL INDEX
'SHARED'
FROM
SYS.OBJ$ OS
, SYS.OBJ$ OP
, SYS.INDCOMPARTV$ ICP
, SYS.INDSUBPARTV$ ISP
,
SYS.USER$ U
, SYS.IND_STATS$ INS
,
SYS.IND$ I
, SYS.OBJ$ OT
, SYS.USER$ UT
, SYS.PARTOBJ$ PO
WHERE
OS.OBJ# = ISP.OBJ#
AND OP.OBJ# = ICP.OBJ#
AND ICP.OBJ# = ISP.POBJ#
AND ICP.BO# = I.OBJ#
AND I.TYPE# != 9 -- NO DOMAIN INDEXES
AND U.USER# = OP.OWNER#
AND ISP.OBJ# = INS.OBJ# (+)
AND ICP.BO# = I.OBJ#
AND I.BO# = OT.OBJ#
AND OT.TYPE# = 2
AND OT.OWNER# = UT.USER#
AND I.OBJ# = PO.OBJ#
AND OP.NAMESPACE = 4
AND OP.REMOTEOWNER IS NULL
AND OP.LINKNAME IS NULL
AND BITAND(OP.FLAGS
, 128) = 0 -- NOT IN RECYCLE BIN
AND (OP.OWNER# = USERENV('SCHEMAID')
OR I.BO# IN
(SELECT OA.OBJ#
FROM SYS.OBJAUTH$ OA
WHERE GRANTEE# IN ( SELECT KZSROROL
FROM X$KZSRO
)
)
OR /* USER HAS SYSTEM PRIVILEGES */
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 */)
)
)
UNION ALL
SELECT
U.NAME
, O.NAME
, UT.NAME
, OT.NAME
,
NULL
, NULL
, NULL
, NULL
, 'INDEX'
,
SESI.BLEVEL_KXTTST_IS
, SESI.LEAFCNT_KXTTST_IS
, SESI.DISTKEY_KXTTST_IS
,
SESI.LBLKKEY_KXTTST_IS
, SESI.DBLKKEY_KXTTST_IS
, SESI.CLUFAC_KXTTST_IS
,
SESI.ROWCNT_KXTTST_IS
,
SESI.CACHEDBLK_KXTTST_IS
, SESI.CACHEHIT_KXTTST_IS
,
SESI.SAMPLESIZE_KXTTST_IS
, SESI.ANALYZETIME_KXTTST_IS
,
DECODE(BITAND(SESI.FLAGS_KXTTST_IS
, 2048)
, 0
, 'NO'
, 'YES')
,
DECODE(BITAND(SESI.FLAGS_KXTTST_IS
, 64)
, 0
, 'NO'
, 'YES')
,
NULL
, /* NO LOCK ON SESSION PRIVATE STATS */
NULL
, /* SESSION BASED DML MONITORING NOT AVAILABLE */
'SESSION'
FROM
SYS.X$KXTTSTEIS SESI
,
SYS.USER$ U
, SYS.IND$ I
, SYS.OBJ$ O
,
SYS.OBJ$ OT
, SYS.USER$ UT
WHERE
U.USER# = O.OWNER#
AND O.OBJ# = I.OBJ#
AND I.OBJ# = SESI.OBJ#_KXTTST_IS
AND BITAND(I.FLAGS
, 4096) = 0
AND I.TYPE# IN (1
, 2
, 4
, 6
, 7
, 8)
AND I.BO# = OT.OBJ#
AND OT.TYPE# = 2
AND OT.OWNER# = UT.USER#
AND O.SUBNAME IS NULL
AND O.NAMESPACE = 4
AND O.REMOTEOWNER IS NULL
AND O.LINKNAME IS NULL
AND BITAND(O.FLAGS
, 128) = 0 -- NOT IN RECYCLE BIN
AND (O.OWNER# = USERENV('SCHEMAID')
OR
O.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 */)
)
)
|
|
|