2026-03-12 20:23:15
This commit is contained in:
95
csierra/cs_internal/cs_dependency_part_keys.sql
Normal file
95
csierra/cs_internal/cs_dependency_part_keys.sql
Normal file
@@ -0,0 +1,95 @@
|
||||
COL part_sub FOR A12 HEA 'LEVEL';
|
||||
COL object_type FOR A5 HEA 'TYPE';
|
||||
COL owner FOR A30 TRUNC;
|
||||
COL name FOR A30 TRUNC;
|
||||
COL column_position FOR 999 HEA 'POS';
|
||||
COL column_name FOR A30 TRUNC;
|
||||
--
|
||||
PRO
|
||||
PRO PARTITION KEYS (dba_part_key_columns and dba_subpart_key_columns)
|
||||
PRO ~~~~~~~~~~~~~~
|
||||
--
|
||||
WITH /* PART_KEY_COLUMNS */
|
||||
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
|
||||
-- o.to_hash, o.to_address
|
||||
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
|
||||
),
|
||||
-- v_db_object_cache_m AS (
|
||||
-- SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(obj_cache) */
|
||||
-- DISTINCT
|
||||
-- SUBSTR(c.owner,1,30) AS object_owner,
|
||||
-- SUBSTR(c.name,1,30) AS object_name
|
||||
-- FROM v$db_object_cache c,
|
||||
-- v_object_dependency_m d
|
||||
-- WHERE c.type IN ('TABLE','VIEW')
|
||||
-- AND c.hash_value = d.to_hash
|
||||
-- AND c.addr = d.to_address
|
||||
-- ),
|
||||
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
|
||||
-- v_db_object_cache_m c
|
||||
-- WHERE t.owner = c.object_owner
|
||||
-- AND t.table_name = c.object_name
|
||||
WHERE t.owner = o.to_owner
|
||||
AND t.table_name = o.to_name
|
||||
),
|
||||
dba_indexes_m AS (
|
||||
SELECT /*+ MATERIALIZE NO_MERGE QB_NAME(dba_indexes) */
|
||||
i.owner,
|
||||
i.index_name
|
||||
FROM dba_tables_m t,
|
||||
dba_indexes i
|
||||
WHERE i.table_owner = t.owner
|
||||
AND i.table_name = t.table_name
|
||||
),
|
||||
objects_m AS (
|
||||
SELECT owner, table_name AS name, 'TABLE' AS object_type
|
||||
FROM dba_tables_m
|
||||
UNION
|
||||
SELECT owner, index_name AS name, 'INDEX' AS object_type
|
||||
FROM dba_indexes_m
|
||||
)
|
||||
SELECT 'PARTITION' AS part_sub,
|
||||
p.object_type,
|
||||
p.owner,
|
||||
p.name,
|
||||
p.column_position,
|
||||
p.column_name
|
||||
FROM dba_part_key_columns p,
|
||||
objects_m o
|
||||
WHERE o.owner = p.owner
|
||||
AND o.name = p.name
|
||||
AND o.object_type = p.object_type
|
||||
UNION ALL
|
||||
SELECT 'SUBPARTITION' AS part_sub,
|
||||
p.object_type,
|
||||
p.owner,
|
||||
p.name,
|
||||
p.column_position,
|
||||
p.column_name
|
||||
FROM dba_subpart_key_columns p,
|
||||
objects_m o
|
||||
WHERE o.owner = p.owner
|
||||
AND o.name = p.name
|
||||
AND o.object_type = p.object_type
|
||||
ORDER BY
|
||||
1 ASC, 2 DESC, 3, 4, 5
|
||||
/
|
||||
Reference in New Issue
Block a user