---------------------------------------------------------------------------------------- -- -- File name: cs_extents_map.sql -- -- Purpose: Tablespace Block Map -- -- Author: Carlos Sierra -- -- Version: 2020/12/06 -- -- Usage: Execute connected to PDB. -- -- Parameters: 1. Tablespace Name -- -- 2. Grouping -- -- [{SEGMENT}|S|PARTITION|P] -- -- 3. Coalesce (on Map) Contiguos Extents of same Grouping -- -- [{Y}|N] -- -- 4. Smallest BLOCK_ID on Top (of Map) or at the Bottom -- -- [{BOTTOM}|B|TOP|T] -- -- Example(s): $ sqlplus / as sysdba -- SQL> @cs_extents_map.sql "KIEV" "PARTITION" "Y" "BOTTOM" -- SQL> @cs_extents_map.sql "KIEV" "P" "Y" "B" -- SQL> @cs_extents_map.sql KIEV S N T -- -- Notes: Source: https://oraboard.wordpress.com/2016/04/22/tablespace-block-map/ -- -- 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_extents_map'; -- --@@cs_internal/&&cs_set_container_to_cdb_root. -- SELECT tablespace_name FROM dba_tablespaces WHERE contents = 'PERMANENT' ORDER BY 1 / PRO PRO 1. Tablespace Name: DEF cs_tablespace_name = '&1.'; UNDEF 1; PRO PRO 2. Grouping: [{SEGMENT}|S|PARTITION|P] DEF cs_grouping = '&2.'; UNDEF 2; COL cs_grouping NEW_V cs_grouping NOPRI; SELECT CASE WHEN UPPER(NVL('&&cs_grouping.', 'SEGMENT')) LIKE '%P%' THEN 'PARTITION' ELSE 'SEGMENT' END AS cs_grouping FROM DUAL / PRO PRO 3. Coalesce (on Map) Contiguos Extents of same Grouping (&&cs_grouping.): [{Y}|N] DEF cs_coalesce_contiguous_extents = '&3.'; UNDEF 3; COL cs_coalesce_contiguous_extents NEW_V cs_coalesce_contiguous_extents NOPRI; SELECT CASE SUBSTR(UPPER(TRIM(NVL('&&cs_coalesce_contiguous_extents.', 'Y'))), 1, 1) WHEN 'N' THEN 'N' ELSE 'Y' END AS cs_coalesce_contiguous_extents FROM DUAL / PRO PRO 4. Smallest BLOCK_ID on Top (of Map) or at the Bottom: [{BOTTOM}|B|TOP|T] DEF cs_top_or_bottom = '&4.'; UNDEF 4; COL cs_top_or_bottom NEW_V cs_top_or_bottom NOPRI; SELECT CASE SUBSTR(UPPER(TRIM(NVL('&&cs_top_or_bottom.', 'BOTTOM'))), 1, 1) WHEN 'T' THEN 'TOP' ELSE 'BOTTOM' END AS cs_top_or_bottom FROM DUAL / -- SELECT '&&cs_file_prefix._&&cs_script_name._&&cs_tablespace_name.' cs_file_name FROM DUAL; -- DEF report_foot_note = 'SQL> @&&cs_script_name..sql "&&cs_tablespace_name." "&&cs_grouping." "&&cs_coalesce_contiguous_extents." "&&cs_top_or_bottom."'; -- SPO &&cs_file_name..html SET HEA OFF PAGES 0 SERVEROUT ON; DECLARE l_rowcount NUMBER := 0; l_group_count NUMBER := 0; l_cellcolor VARCHAR2(10); l_cellwidth NUMBER(3); l_file_id NUMBER := -1; l_datafile VARCHAR2(1024); l_segment VARCHAR2(512); l_prior_segment VARCHAR2(512); l_blocks NUMBER := 0; l_extents NUMBER := 0; l_tot_extents NUMBER := 0; l_block_id_from NUMBER; l_block_id_to NUMBER; l_group VARCHAR2(512); l_prior_group VARCHAR2(512); l_busy_blocks NUMBER := 0; l_free_blocks NUMBER := 0; l_block_size NUMBER; l_map_row NUMBER := 0; l_prior_file_id NUMBER; -- PROCEDURE print_line (p_line IN VARCHAR2) IS BEGIN DBMS_OUTPUT.put_line(p_line); END print_line; -- PROCEDURE put_line (l_prior_file_id IN NUMBER, p_map_row IN NUMBER, p_group_count IN NUMBER, p_line IN VARCHAR2) IS BEGIN INSERT INTO plan_table (statement_id, plan_id, parent_id, id, remarks) VALUES ('&&cs_file_date_time.', l_prior_file_id, p_map_row, p_group_count, p_line); --print_line(p_line); END put_line; BEGIN SELECT block_size INTO l_block_size FROM dba_tablespaces WHERE tablespace_name = '&&cs_tablespace_name.'; -- initial html print_line(''); print_line(''); print_line(''); print_line(''); print_line('
');
print_line('DATE_TIME : &&cs_date_time.Z');
print_line('REFERENCE : &&cs_reference.');
print_line('LOCALE : &&cs_realm. &&cs_region. &&cs_locale.');
print_line('DATABASE : &&cs_db_name_u. (&&cs_db_version.) STARTUP:&&cs_startup_time.');
print_line('CONTAINER : &&cs_db_name..&&cs_con_name. (&&cs_con_id.) &&cs_pdb_open_mode.');
print_line('CPU : CORES:&&cs_num_cpu_cores. THREADS:&&cs_num_cpus. COUNT:&&cs_cpu_count. ALLOTTED:&&cs_allotted_cpu. PLAN:&&cs_resource_manager_plan.');
print_line('HOST : &&cs_host_name.');
print_line('CONNECT_STRNG: &&cs_easy_connect_string.');
print_line('SCRIPT : &&cs_script_name..sql');
print_line('KIEV_VERSION : &&cs_kiev_version. (&&cs_schema_name.)');
print_line('');
print_line('L 59 80 PRO-- @@cs_internal/cs_spool_tail_chart.sql ROLLBACK; PRO PRO &&report_foot_note. -- --@@cs_internal/&&cs_set_container_to_curr_pdb. -- @@cs_internal/cs_undef.sql @@cs_internal/cs_reset.sql --