Search notes:
Oracle: X$KQFCO
select
tab.kqftanam tab_name,
col.kqfconam col_name,
decode (col.kqfcotyp,
0, 'hex string',
1, 'varchar2',
2, 'number',
11, 'word',
12, 'datetime' ,
23, 'raw',
'other'
) col_col_type,
decode (col.kqfcodty,
1, 'varchar2' ,
2, 'number' ,
12, 'date' ,
23, 'raw' ,
112, 'clob' ,
180, 'ts' ,
181, 'ts with tz',
col.kqfcodty) col_data_type,
col.kqfcosiz col_size,
col.kqfcolsz col_size_, -- ??
--
case when col.kqfcoidx > 0 then col.kqfcoidx end col_index_nr , -- If kqfcoidx <> 0, column is indexed (See v$indexed_fixed_column)
case when col.kqfcoidx > 0 then col.kqfcoipo end col_index_pos,
--
col.kqfcooff col_offset,
col.kqfcodty col_data_type_nr,
col.kqfcotyp col_type,
tab.kqftaver tab_version,
tab.kqftatyp tab_type,
tab.kqftaflg tab_flags,
tab.kqftacoc tab_coc,
col.kqfcomax col_max,
col.kqfcotob tab_obj, -- tab.kqftaobj
col.kqfcotab,
col.kqfcolof col_of,
col.indx col_indx,
tab.indx tab_indx,
col.kqfcocno col_no,
-- col.inst_id, tab.inst_id,
-- col.con_id , tab.con_id,
tab.kqftarsz tab_rowsize, -- ?
sum(col.kqfcosiz) over (partition by tab.indx) sum_col_size,
to_number(col.addr, 'xxxxxxxxxxxxxxxx') col_addr,
to_number(tab.addr, 'xxxxxxxxxxxxxxxx') tab_addr
from
x$kqfco col join
x$kqfta tab on col.kqfcotab = tab.indx
where
tab.kqftanam = 'X$KQFTA'
-- 'X$KSUPL' -- Table with three indexes
-- 'X$KESWXMON' -- Table with combined index
order by
tab_name,
col_no
;