Search notes:
X$KGLOB
Kernel Generic Libraray Cache Mananger (KGL): All Objects?
select
ob.kglnaown ob_owner, -- Can be null. Also found: $BUILD$
ob.kglobtyd ob_type,
ob.kglnaobj ob_name, -- ??
ob.kglhdnsd "namespace?",
ob.kglobts0,
ob.kglobts5,
ob.kglobtt0
from
x$kglob ob;
Column KGLHDADR
The value of the column kglhdadr
identifies each record in x$kglob
, the following query returns 1
:
select
max(count(*))
from
x$kglob
group by
kglhdadr;
Namespaces
select
count(*) cnt,
ob.kglhdnsp name_space_id,
ob.kglhdnsd name_space_text
from
x$kglob ob
group by
ob.kglhdnsp,
ob.kglhdnsd
order by
ob.kglhdnsd;
Other queries
select
-- count(*),
case when nvl(
lag( kglobtyd ) over (order by kglobtyd, kglhdnsd),
'n/a'
) <> kglobtyd then
kglobtyd
end kglobtyd_,
kglhdnsd
from
x$kglob
group by
kglobtyd,
kglhdnsd
order by
kglobtyd,
kglhdnsd
;
--
-- KGLOBTYD_ KGLHDNSD
-- ----------------------------------- --------------------------------------------------------------------------------------------------------------------------------
-- CLUSTER CLUSTER
-- CURSOR BODY
-- DBINSTANCE
-- DBLINK
-- OPTIMIZER DIRECTIVE OWNER
-- OPTIMIZER EXPRESSION OBJECT
-- SCHEDULER GLOBAL ATTRIBUTE
-- SCHEMA
-- SQL AREA
-- SQL AREA BUILD
-- TABLE/PROCEDURE
-- CURSOR STATS SQL AREA STATS
-- DIRECTORY DIRECTORY
-- EDITION EDITION
-- FUNCTION TABLE/PROCEDURE
-- HINTSET OBJECT HINTSET OBJECT
-- INDEX INDEX
-- LIBRARY TABLE/PROCEDURE
-- MULTI-VERSIONED OBJECT MULTI-VERSION OBJECT FOR INDEX
-- MULTI-VERSION OBJECT FOR TABLE
-- NONE SCHEMA
-- OPERATOR TABLE/PROCEDURE
-- Optimizer Directive Owner OPTIMIZER DIRECTIVE OWNER
-- Optimizer Expresion Object OPTIMIZER EXPRESSION OBJECT
-- Optimizer Expression Header OPTIMIZER EXPRESSION HEADER
-- Optimizer Finding OPTIMIZER FINDING
-- PACKAGE TABLE/PROCEDURE
-- PACKAGE BODY BODY
-- QUEUE QUEUE
-- RESOURCE MANAGER CONSUMER GROUP RESOURCE MANAGER
-- RULESET RULESET
-- RUNTIME STATISTICS RUNTIME STATISTICS
-- SCHEDULER CLASS TABLE/PROCEDURE
-- SCHEDULER GLOBAL ATTRIBUTE SCHEDULER GLOBAL ATTRIBUTE
-- SCHEDULER JOB TABLE/PROCEDURE
-- SCHEDULER WINDOW TABLE/PROCEDURE
-- SEQUENCE TABLE/PROCEDURE
-- SQL TUNING BASE OBJECT SQL TUNING BASE OBJECT
-- SYNONYM TABLE/PROCEDURE
-- TABLE TABLE/PROCEDURE
-- TYPE TABLE/PROCEDURE
-- TYPE BODY BODY
-- USER PRIVILEGES USER PRIVILEGE
-- VIEW TABLE/PROCEDURE
select
-- count(*) over (partition by L1.kglhdadr) cnt_L1,
L1.kglhdadr, -- L1.kglhdpar,
L2.kglhdadr, -- L2.kglhdpar,
--L3.kglhdadr, L3.kglhdpar,
L1.kglobtyd, L1.kglhdnsd,
-- L2.kglobtyd, L2.kglhdnsd,
L1.kglnaobj,
L2.kglnaobj,
L3.kglobtyd
from
x$kglob L1 left join
x$kglob L2 on L1.kglhdadr = L2.kglhdpar and
L1.kglhdadr = L2.kglhdpar and
L2.kglhdpar != L2.kglhdadr left join
x$kglob L3 on L2.kglhdadr = L3.kglhdpar and L2.kglhdpar != L3.kglhdadr
;
Columns KGLNAOBJ vs. KGLFNOBJ
The column kglnaobj
is a varchar2(1000)
, kglfnobj
a clob
.
Thus, kglnaobj
can be used to search for an object (select * from x$kglob where kglnaobj like 'select abc from …
);
select
max(length(kglnaobj)), -- likely to be 1000
max(length(kglfnobj)) -- likely to exceed 1000
from
x$kglob;