233 lines
6.9 KiB
MySQL
233 lines
6.9 KiB
MySQL
|
|
COL owner FOR A30 HEA 'Owner';
|
||
|
|
COL table_name FOR A30 HEA 'Table Name';
|
||
|
|
COL partitioned FOR A4 HEA 'Part';
|
||
|
|
COL degree FOR A10 HEA 'Degree';
|
||
|
|
COL temporary FOR A4 HEA 'Temp';
|
||
|
|
COL blocks FOR 999,999,990 HEA 'Blocks';
|
||
|
|
COL num_rows FOR 999,999,999,990 HEA 'Num Rows';
|
||
|
|
COL avg_row_len FOR 999,999,990 HEA 'Avg Row Len';
|
||
|
|
COL size_MiB FOR 999,999,990.000 HEA 'Size MiB';
|
||
|
|
COL seg_size_MiB FOR 999,999,990.000 HEA 'Seg Size MiB';
|
||
|
|
COL estimated_MiB FOR 999,999,990.000 HEA 'Estimated MiB';
|
||
|
|
COL size_MB FOR 999,999,990.000 HEA 'Size MB';
|
||
|
|
COL seg_size_MB FOR 999,999,990.000 HEA 'Seg Size MB';
|
||
|
|
COL estimated_MB FOR 999,999,990.000 HEA 'Estimated MB';
|
||
|
|
COL sample_size FOR 999,999,999,990 HEA 'Sample Size';
|
||
|
|
COL last_analyzed FOR A19 HEA 'Last Analyzed';
|
||
|
|
COL compression FOR A12 HEA 'Compression';
|
||
|
|
COL tablespace_name FOR A30 HEA 'Tablespace';
|
||
|
|
COL rn FOR 999;
|
||
|
|
--
|
||
|
|
PRO
|
||
|
|
PRO TABLES (dba_tables)
|
||
|
|
PRO ~~~~~~
|
||
|
|
WITH /* TABLES ACCESSED */
|
||
|
|
v_sqlarea_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(sqlarea) */
|
||
|
|
DISTINCT
|
||
|
|
hash_value, address
|
||
|
|
FROM v$sqlarea
|
||
|
|
WHERE sql_id = '&&cs_sql_id.'
|
||
|
|
),
|
||
|
|
v_object_dependency_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(obj_dependency) */
|
||
|
|
DISTINCT
|
||
|
|
o.to_owner, o.to_name
|
||
|
|
FROM v$object_dependency o,
|
||
|
|
v_sqlarea_m s
|
||
|
|
WHERE o.from_hash = s.hash_value
|
||
|
|
AND o.from_address = s.address
|
||
|
|
AND o.to_type = 2 -- table
|
||
|
|
),
|
||
|
|
dba_tables_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(dba_tables) */
|
||
|
|
t.owner,
|
||
|
|
t.table_name,
|
||
|
|
CASE t.partitioned WHEN 'YES' THEN (SELECT TRIM(TO_CHAR(COUNT(*))) FROM dba_tab_partitions tp WHERE tp.table_owner = t.owner AND tp.table_name = t.table_name) ELSE t.partitioned END AS partitioned,
|
||
|
|
t.degree,
|
||
|
|
t.temporary,
|
||
|
|
t.blocks,
|
||
|
|
COALESCE(b.block_size, TO_NUMBER(p.value)) AS block_size,
|
||
|
|
(SELECT SUM(s.bytes) / POWER(10,6) FROM dba_segments s WHERE s.owner = t.owner AND s.segment_name = t.table_name AND s.segment_type LIKE 'TABLE%') AS seg_size_MB,
|
||
|
|
t.num_rows,
|
||
|
|
t.avg_row_len,
|
||
|
|
t.sample_size,
|
||
|
|
t.last_analyzed,
|
||
|
|
t.compression,
|
||
|
|
t.tablespace_name
|
||
|
|
FROM dba_tables t,
|
||
|
|
v_object_dependency_m o,
|
||
|
|
dba_tablespaces b,
|
||
|
|
v$parameter p
|
||
|
|
WHERE t.owner = o.to_owner
|
||
|
|
AND t.table_name = o.to_name
|
||
|
|
AND b.tablespace_name(+) = t.tablespace_name
|
||
|
|
AND p.name = 'db_block_size'
|
||
|
|
)
|
||
|
|
SELECT /*+ QB_NAME(get_stats) */
|
||
|
|
owner,
|
||
|
|
table_name,
|
||
|
|
partitioned,
|
||
|
|
degree,
|
||
|
|
temporary,
|
||
|
|
blocks,
|
||
|
|
blocks * block_size / POWER(10,6) AS size_MB,
|
||
|
|
seg_size_MB,
|
||
|
|
num_rows,
|
||
|
|
avg_row_len,
|
||
|
|
num_rows * avg_row_len / POWER(10,6) AS estimated_MB,
|
||
|
|
sample_size,
|
||
|
|
TO_CHAR(last_analyzed, '&&cs_datetime_full_format.') AS last_analyzed,
|
||
|
|
compression,
|
||
|
|
tablespace_name
|
||
|
|
FROM dba_tables_m
|
||
|
|
ORDER BY
|
||
|
|
owner,
|
||
|
|
table_name
|
||
|
|
/
|
||
|
|
--
|
||
|
|
COL object_type HEA 'Object Type' FOR A30;
|
||
|
|
COL owner FOR A30 HEA 'Owner';
|
||
|
|
COL object_id FOR 999999999 HEA 'Object ID';
|
||
|
|
COL object_name FOR A30 HEA 'Object Name';
|
||
|
|
COL subobject_name FOR A30 HEA 'Sub Object Name';
|
||
|
|
COL created FOR A23 HEA 'Created';
|
||
|
|
COL last_ddl_time FOR A23 HEA 'Last DDL Time';
|
||
|
|
--
|
||
|
|
PRO
|
||
|
|
PRO TABLE OBJECTS (dba_objects) up to 100
|
||
|
|
PRO ~~~~~~~~~~~~~
|
||
|
|
WITH /* OBJECTS */
|
||
|
|
v_sqlarea_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(sqlarea) */
|
||
|
|
DISTINCT
|
||
|
|
hash_value, address
|
||
|
|
FROM v$sqlarea
|
||
|
|
WHERE sql_id = '&&cs_sql_id.'
|
||
|
|
),
|
||
|
|
v_object_dependency_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(obj_dependency) */
|
||
|
|
DISTINCT
|
||
|
|
o.to_owner, o.to_name
|
||
|
|
FROM v$object_dependency o,
|
||
|
|
v_sqlarea_m s
|
||
|
|
WHERE o.from_hash = s.hash_value
|
||
|
|
AND o.from_address = s.address
|
||
|
|
AND o.to_type = 2 -- table
|
||
|
|
),
|
||
|
|
dba_tables_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(dba_tables) */
|
||
|
|
t.owner,
|
||
|
|
t.table_name
|
||
|
|
FROM dba_tables t,
|
||
|
|
v_object_dependency_m o
|
||
|
|
WHERE t.owner = o.to_owner
|
||
|
|
AND t.table_name = o.to_name
|
||
|
|
)
|
||
|
|
SELECT o.object_type,
|
||
|
|
o.owner,
|
||
|
|
o.object_name,
|
||
|
|
o.subobject_name,
|
||
|
|
o.object_id,
|
||
|
|
TO_CHAR(o.created, '&&cs_datetime_full_format.') AS created,
|
||
|
|
TO_CHAR(o.last_ddl_time, '&&cs_datetime_full_format.') AS last_ddl_time
|
||
|
|
FROM dba_tables_m t,
|
||
|
|
dba_objects o
|
||
|
|
WHERE o.owner = t.owner
|
||
|
|
AND o.object_name = t.table_name
|
||
|
|
AND o.object_type LIKE 'TABLE%'
|
||
|
|
ORDER BY
|
||
|
|
o.object_type,
|
||
|
|
o.owner,
|
||
|
|
o.object_name,
|
||
|
|
o.subobject_name
|
||
|
|
FETCH FIRST 100 ROWS ONLY
|
||
|
|
/
|
||
|
|
--
|
||
|
|
COL object_type HEA 'Object Type';
|
||
|
|
COL owner FOR A30 HEA 'Owner';
|
||
|
|
COL object_id FOR 999999999 HEA 'Object ID';
|
||
|
|
COL object_name FOR A30 HEA 'Object Name';
|
||
|
|
COL subobject_name FOR A30 HEA 'Sub Object Name';
|
||
|
|
COL created FOR A23 HEA 'Created';
|
||
|
|
COL last_ddl_time FOR A23 HEA 'Last DDL Time';
|
||
|
|
COL analyzetime FOR A19 HEA 'Analyze Time';
|
||
|
|
COL savtime FOR A23 HEA 'Saved Time';
|
||
|
|
COL rowcnt FOR 999,999,999,990 HEA 'Row Count';
|
||
|
|
COL blkcnt FOR 999,999,990 HEA 'Block Count';
|
||
|
|
COL avgrln FOR 999,999,990 HEA 'Avg Row Len';
|
||
|
|
COL samplesize FOR 999,999,999,990 HEA 'Sample Size';
|
||
|
|
--
|
||
|
|
BREAK ON object_id SKIP 1 ON owner ON object_name ON created ON last_ddl_time;
|
||
|
|
--
|
||
|
|
PRO
|
||
|
|
PRO CBO STAT TABLE HISTORY (wri$_optstat_tab_history) up to 100 per Table
|
||
|
|
PRO ~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
WITH /* OBJECTS */
|
||
|
|
v_sqlarea_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(sqlarea) */
|
||
|
|
DISTINCT
|
||
|
|
hash_value, address
|
||
|
|
FROM v$sqlarea
|
||
|
|
WHERE sql_id = '&&cs_sql_id.'
|
||
|
|
),
|
||
|
|
v_object_dependency_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(obj_dependency) */
|
||
|
|
DISTINCT
|
||
|
|
o.to_owner, o.to_name
|
||
|
|
FROM v$object_dependency o,
|
||
|
|
v_sqlarea_m s
|
||
|
|
WHERE o.from_hash = s.hash_value
|
||
|
|
AND o.from_address = s.address
|
||
|
|
AND o.to_type = 2 -- table
|
||
|
|
),
|
||
|
|
dba_tables_m AS (
|
||
|
|
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(dba_tables) */
|
||
|
|
t.owner,
|
||
|
|
t.table_name
|
||
|
|
FROM dba_tables t,
|
||
|
|
v_object_dependency_m o
|
||
|
|
WHERE t.owner = o.to_owner
|
||
|
|
AND t.table_name = o.to_name
|
||
|
|
),
|
||
|
|
dba_tables_o AS (
|
||
|
|
SELECT o.owner,
|
||
|
|
o.object_name,
|
||
|
|
o.subobject_name,
|
||
|
|
o.object_id,
|
||
|
|
o.created,
|
||
|
|
o.last_ddl_time,
|
||
|
|
h.analyzetime,
|
||
|
|
h.savtime,
|
||
|
|
h.rowcnt,
|
||
|
|
h.blkcnt,
|
||
|
|
h.avgrln,
|
||
|
|
h.samplesize,
|
||
|
|
ROW_NUMBER() OVER (PARTITION BY o.object_id ORDER BY h.analyzetime DESC NULLS LAST, h.savtime DESC NULLS LAST) AS rn
|
||
|
|
FROM dba_tables_m t,
|
||
|
|
dba_objects o,
|
||
|
|
wri$_optstat_tab_history h
|
||
|
|
WHERE o.owner = t.owner
|
||
|
|
AND o.object_name = t.table_name
|
||
|
|
AND o.object_type = 'TABLE'
|
||
|
|
AND h.obj# = o.object_id
|
||
|
|
)
|
||
|
|
SELECT DISTINCT
|
||
|
|
o.owner,
|
||
|
|
o.object_name,
|
||
|
|
o.subobject_name,
|
||
|
|
o.object_id,
|
||
|
|
TO_CHAR(o.created, '&&cs_datetime_full_format.') AS created,
|
||
|
|
TO_CHAR(o.last_ddl_time, '&&cs_datetime_full_format.') AS last_ddl_time,
|
||
|
|
TO_CHAR(o.analyzetime, '&&cs_datetime_full_format.') AS analyzetime,
|
||
|
|
TO_CHAR(o.savtime, '&&cs_timestamp_full_format.') AS savtime,
|
||
|
|
o.rowcnt,
|
||
|
|
o.blkcnt,
|
||
|
|
o.avgrln,
|
||
|
|
o.samplesize
|
||
|
|
FROM dba_tables_o o
|
||
|
|
WHERE o.rn <= 100
|
||
|
|
ORDER BY 1, 2, 3, 4, 5, 6, 7 NULLS FIRST, 8 NULLS FIRST
|
||
|
|
/
|
||
|
|
--
|
||
|
|
CLEAR BREAK;
|