2026-03-12 20:23:15
This commit is contained in:
119
csierra/cs_internal/cs_tables_internal.sql
Normal file
119
csierra/cs_internal/cs_tables_internal.sql
Normal file
@@ -0,0 +1,119 @@
|
||||
COL owner FOR A30;
|
||||
COL table_name FOR A30;
|
||||
COL tablespace_name FOR A30;
|
||||
COL total_MB NEW_V total_MB FOR 99,999,990.000 HEA 'Total MB';
|
||||
COL table_MB NEW_V table_MB FOR 99,999,990.000 HEA 'Table MB';
|
||||
COL indexes_MB NEW_V indexes_MB FOR 99,999,990.000 HEA 'Index(es) MB';
|
||||
COL lobs_MB NEW_V lobs_MB FOR 99,999,990.000 HEA 'Lob(s) MB';
|
||||
COL est_data_MB FOR 99,999,990.000 HEA 'Est Data MB';
|
||||
COL tabs FOR 9990;
|
||||
COL lobs FOR 9990;
|
||||
COL idxs FOR 9990;
|
||||
COL num_rows FOR 999,999,999,990;
|
||||
COL avg_row_len FOR 999,999,990;
|
||||
COL last_analyzed FOR A19;
|
||||
--
|
||||
WITH
|
||||
tables AS (
|
||||
SELECT /*+ MATERIALIZE NO_MERGE */
|
||||
s.owner,
|
||||
s.segment_name AS table_name,
|
||||
MAX(s.tablespace_name) AS tablespace_name,
|
||||
SUM(s.bytes) AS bytes
|
||||
FROM dba_segments s,
|
||||
dba_users u
|
||||
WHERE s.segment_type LIKE 'TABLE%'
|
||||
AND s.owner = COALESCE('&&specific_owner.', s.owner)
|
||||
AND s.segment_name = COALESCE('&&specific_table.', s.segment_name)
|
||||
AND u.username = s.owner
|
||||
AND u.oracle_maintained = 'N'
|
||||
GROUP BY
|
||||
s.owner,
|
||||
s.segment_name
|
||||
),
|
||||
dtables AS (
|
||||
SELECT /*+ MATERIALIZE NO_MERGE */
|
||||
t.owner,
|
||||
t.table_name,
|
||||
t.num_rows,
|
||||
t.avg_row_len,
|
||||
t.last_analyzed,
|
||||
t.tablespace_name
|
||||
FROM dba_tables t,
|
||||
dba_users u
|
||||
WHERE u.username = t.owner
|
||||
AND u.oracle_maintained = 'N'
|
||||
AND t.owner = COALESCE('&&specific_owner.', t.owner)
|
||||
AND t.table_name = COALESCE('&&specific_table.', t.table_name)
|
||||
),
|
||||
indexes AS (
|
||||
SELECT /*+ MATERIALIZE NO_MERGE */
|
||||
s.owner,
|
||||
i.table_name,
|
||||
SUM(s.bytes) AS bytes,
|
||||
COUNT(DISTINCT s.segment_name) AS cnt
|
||||
FROM dba_segments s,
|
||||
dba_users u,
|
||||
dba_indexes i
|
||||
WHERE s.segment_type LIKE '%INDEX%'
|
||||
AND s.owner = COALESCE('&&specific_owner.', s.owner)
|
||||
AND u.username = s.owner
|
||||
AND u.oracle_maintained = 'N'
|
||||
AND u.common = 'NO'
|
||||
AND i.owner = s.owner
|
||||
AND i.index_name = s.segment_name
|
||||
AND i.table_name = COALESCE('&&specific_table.', i.table_name)
|
||||
GROUP BY
|
||||
s.owner,
|
||||
i.table_name
|
||||
),
|
||||
lobs AS (
|
||||
SELECT /*+ MATERIALIZE NO_MERGE */
|
||||
s.owner,
|
||||
l.table_name,
|
||||
SUM(s.bytes) AS bytes,
|
||||
COUNT(DISTINCT s.segment_name) AS cnt
|
||||
FROM dba_segments s,
|
||||
dba_users u,
|
||||
dba_lobs l
|
||||
WHERE s.segment_type LIKE 'LOB%'
|
||||
AND s.segment_type <> 'LOBINDEX'
|
||||
AND s.owner = COALESCE('&&specific_owner.', s.owner)
|
||||
AND u.username = s.owner
|
||||
AND u.oracle_maintained = 'N'
|
||||
AND l.owner = s.owner
|
||||
AND l.segment_name = s.segment_name
|
||||
AND l.table_name = COALESCE('&&specific_table.', l.table_name)
|
||||
GROUP BY
|
||||
s.owner,
|
||||
l.table_name
|
||||
)
|
||||
SELECT /*+ MONITOR GATHER_PLAN_STATISTICS */
|
||||
t.owner,
|
||||
t.table_name,
|
||||
NVL(d.tablespace_name, t.tablespace_name) AS tablespace_name,
|
||||
(NVL(t.bytes,0)+NVL(i.bytes,0)+NVL(l.bytes,0))/POWER(10,6) AS total_MB,
|
||||
NVL(t.bytes,0)/POWER(10,6) AS table_MB,
|
||||
NVL(l.bytes,0)/POWER(10,6) AS lobs_MB,
|
||||
NVL(i.bytes,0)/POWER(10,6) AS indexes_MB,
|
||||
1 AS tabs,
|
||||
NVL(l.cnt,0) AS lobs,
|
||||
NVL(i.cnt,0) AS idxs,
|
||||
NVL(d.num_rows,0) AS num_rows,
|
||||
NVL(d.avg_row_len,0) AS avg_row_len,
|
||||
NVL(d.num_rows*d.avg_row_len,0)/POWER(10,6) AS est_data_MB,
|
||||
d.last_analyzed
|
||||
FROM tables t,
|
||||
dtables d,
|
||||
indexes i,
|
||||
lobs l
|
||||
WHERE d.owner(+) = t.owner
|
||||
AND d.table_name(+) = t.table_name
|
||||
AND i.owner(+) = t.owner
|
||||
AND i.table_name(+) = t.table_name
|
||||
AND l.owner(+) = t.owner
|
||||
AND l.table_name(+) = t.table_name
|
||||
ORDER BY
|
||||
&&order_by.
|
||||
FETCH FIRST &&fetch_first_N_rows. ROWS ONLY
|
||||
/
|
||||
Reference in New Issue
Block a user