2026-03-12 20:23:15
This commit is contained in:
148
csierra/cs_table_redefinition_hist_report.sql
Normal file
148
csierra/cs_table_redefinition_hist_report.sql
Normal file
@@ -0,0 +1,148 @@
|
||||
----------------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: cs_table_redefinition_hist_report.sql
|
||||
--
|
||||
-- Purpose: Table Redefinition History Report (IOD_REPEATING_SPACE_MAINTENANCE log)
|
||||
--
|
||||
-- Author: Carlos Sierra
|
||||
--
|
||||
-- Version: 2021/10/18
|
||||
--
|
||||
-- Usage: Execute connected to CDB or PDB
|
||||
--
|
||||
-- Enter range of dates and filters when requested.
|
||||
--
|
||||
-- Example: $ sqlplus / as sysdba
|
||||
-- SQL> @cs_table_redefinition_hist_report.sql
|
||||
--
|
||||
-- Notes: Developed and tested on 12.1.0.2.
|
||||
--
|
||||
---------------------------------------------------------------------------------------
|
||||
--
|
||||
@@cs_internal/cs_primary.sql
|
||||
@@cs_internal/cs_set.sql
|
||||
@@cs_internal/cs_def.sql
|
||||
@@cs_internal/cs_file_prefix.sql
|
||||
--
|
||||
DEF cs_script_name = 'cs_table_redefinition_hist_report';
|
||||
DEF cs_hours_range_default = '48';
|
||||
--
|
||||
@@cs_internal/cs_sample_time_from_and_to.sql
|
||||
@@cs_internal/cs_snap_id_from_and_to.sql
|
||||
--
|
||||
@@cs_internal/&&cs_set_container_to_cdb_root.
|
||||
--
|
||||
SELECT DISTINCT owner table_owner
|
||||
FROM &&cs_tools_schema..table_redefinition_hist
|
||||
WHERE '&&cs_con_name.' IN (pdb_name, 'CDB$ROOT')
|
||||
ORDER BY 1
|
||||
/
|
||||
PRO
|
||||
PRO 3. Table Owner (opt):
|
||||
DEF table_owner = '&3.';
|
||||
UNDEF 3;
|
||||
--
|
||||
SELECT DISTINCT table_name
|
||||
FROM &&cs_tools_schema..table_redefinition_hist
|
||||
WHERE '&&cs_con_name.' IN (pdb_name, 'CDB$ROOT')
|
||||
AND owner = NVL(UPPER(TRIM('&&table_owner.')), owner)
|
||||
ORDER BY 1
|
||||
/
|
||||
PRO
|
||||
PRO 4. Table Name (opt):
|
||||
DEF table_name = '&4.';
|
||||
UNDEF 4;
|
||||
--
|
||||
SELECT '&&cs_file_prefix._&&cs_script_name.' cs_file_name FROM DUAL;
|
||||
--
|
||||
@@cs_internal/cs_spool_head.sql
|
||||
PRO SQL> @&&cs_script_name..sql "&&cs_sample_time_from." "&&cs_sample_time_to." "&&table_owner." "&&table_name."
|
||||
@@cs_internal/cs_spool_id.sql
|
||||
--
|
||||
@@cs_internal/cs_spool_id_sample_time.sql
|
||||
--
|
||||
PRO TIME_TO : &&cs_sample_time_to. (&&cs_snap_id_to.)
|
||||
PRO TABLE_OWNER : "&&table_owner."
|
||||
PRO TABLE_NAME : "&&table_name."
|
||||
--
|
||||
COL snap_time FOR A19 HEA 'CAPTURE_TIME';
|
||||
COL ddl_begin_time FOR A19;
|
||||
COL ddl_end_time FOR A19;
|
||||
COL ddl_secs FOR 999,990;
|
||||
COL pdb_name FOR A35;
|
||||
COL owner FOR A30;
|
||||
COL table_name FOR A30;
|
||||
COL total_saved_percent FOR 999,990.0 HEA 'Total|Saved|Percent';
|
||||
COL total_size_mbs_before FOR 999,990 HEA 'Total|Size (MBs)|Before';
|
||||
COL total_size_mbs_after FOR 999,990 HEA 'Total|Size (MBs)|After';
|
||||
COL table_saved_percent FOR 999,990.0 HEA 'Table|Saved|Percent';
|
||||
COL table_size_mbs_before FOR 999,990 HEA 'Table|Size (MBs)|Before';
|
||||
COL table_size_mbs_after FOR 999,990 HEA 'Table|Size (MBs)|After';
|
||||
COL indexes_saved_percent FOR 999,990.0 HEA 'Index(es)|Saved|Percent';
|
||||
COL all_index_size_mbs_before FOR 999,990 HEA 'Index(es)|Size (MBs)|Before';
|
||||
COL all_index_size_mbs_after FOR 999,990 HEA 'Index(es)|Size (MBs)|After';
|
||||
COL lobs_saved_percent FOR 999,990.0 HEA 'Lob(s)|Saved|Percent';
|
||||
COL all_lobs_size_mbs_before FOR 999,990 HEA 'Lob(s)|Size (MBs)|Before';
|
||||
COL all_lobs_size_mbs_after FOR 999,990 HEA 'Lob(s)|Size (MBs)|After';
|
||||
COL error_message FOR A120 HEA 'Error Message';
|
||||
--
|
||||
WITH
|
||||
hist AS (
|
||||
SELECT snap_time,
|
||||
ddl_begin_time,
|
||||
ddl_end_time,
|
||||
pdb_name,
|
||||
con_id,
|
||||
owner,
|
||||
table_name,
|
||||
NVL(table_size_mbs_before, 0) + NVL(all_index_size_mbs_before, 0) + NVL(all_lobs_size_mbs_before, 0) total_size_mbs_before,
|
||||
table_size_mbs_before,
|
||||
all_index_size_mbs_before,
|
||||
all_lobs_size_mbs_before,
|
||||
NVL(table_size_mbs_after, 0) + NVL(all_index_size_mbs_after, 0) + NVL(all_lobs_size_mbs_after, 0) total_size_mbs_after,
|
||||
table_size_mbs_after,
|
||||
all_index_size_mbs_after,
|
||||
all_lobs_size_mbs_after,
|
||||
error_message
|
||||
FROM &&cs_tools_schema..table_redefinition_hist
|
||||
WHERE '&&cs_con_name.' IN (pdb_name, 'CDB$ROOT')
|
||||
AND snap_time BETWEEN TO_DATE('&&cs_sample_time_from.', '&&cs_datetime_full_format.') AND TO_DATE('&&cs_sample_time_to.', '&&cs_datetime_full_format.')
|
||||
AND owner = NVL(UPPER(TRIM('&&table_owner.')), owner)
|
||||
AND table_name = NVL(UPPER(TRIM('&&table_name.')), table_name)
|
||||
)
|
||||
SELECT snap_time,
|
||||
ddl_begin_time,
|
||||
ddl_end_time,
|
||||
(ddl_end_time - ddl_begin_time) * 24 * 3600 ddl_secs,
|
||||
pdb_name||'('||con_id||')' pdb_name,
|
||||
owner,
|
||||
table_name,
|
||||
100 * (total_size_mbs_before - total_size_mbs_after) / NULLIF(total_size_mbs_before, 0) total_saved_percent,
|
||||
total_size_mbs_before,
|
||||
total_size_mbs_after,
|
||||
100 * (table_size_mbs_before - table_size_mbs_after) / NULLIF(table_size_mbs_before, 0) table_saved_percent,
|
||||
table_size_mbs_before,
|
||||
table_size_mbs_after,
|
||||
100 * (all_index_size_mbs_before - all_index_size_mbs_after) / NULLIF(all_index_size_mbs_before, 0) indexes_saved_percent,
|
||||
all_index_size_mbs_before,
|
||||
all_index_size_mbs_after,
|
||||
100 * (all_lobs_size_mbs_before - all_lobs_size_mbs_after) / NULLIF(all_lobs_size_mbs_before, 0) lobs_saved_percent,
|
||||
all_lobs_size_mbs_before,
|
||||
all_lobs_size_mbs_after,
|
||||
error_message
|
||||
FROM hist
|
||||
ORDER BY
|
||||
snap_time,
|
||||
ddl_begin_time
|
||||
/
|
||||
--
|
||||
PRO
|
||||
PRO SQL> @&&cs_script_name..sql "&&cs_sample_time_from." "&&cs_sample_time_to." "&&table_owner." "&&table_name."
|
||||
--
|
||||
@@cs_internal/cs_spool_tail.sql
|
||||
--
|
||||
@@cs_internal/&&cs_set_container_to_curr_pdb.
|
||||
--
|
||||
@@cs_internal/cs_undef.sql
|
||||
@@cs_internal/cs_reset.sql
|
||||
--
|
||||
Reference in New Issue
Block a user