2026-05-01 07:25:46
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
-- Transfer (copy) a SQL Profile from PDBx on CDBa into PDBy on CDBb
|
||||
SPO coe_xfr_sql_profile.log;
|
||||
SET DEF ON TERM OFF ECHO ON FEED OFF VER OFF HEA ON LIN 2000 PAGES 100 LONG 8000000 LONGC 800000 TRIMS ON TI OFF TIMI OFF SERVEROUT ON SIZE 1000000 NUMF "" SQLP SQL>;
|
||||
SET SERVEROUT ON SIZE UNL;
|
||||
REM
|
||||
REM $Header: 215187.1 coe_xfr_sql_profile.sql 11.4.5.5 2013/03/01 carlos.sierra $
|
||||
REM
|
||||
REM Copyright (c) 2000-2013, Oracle Corporation. All rights reserved.
|
||||
REM $Header: coe_xfr_sql_profile.sql 2020/03/10 carlos.sierra $
|
||||
REM
|
||||
REM AUTHOR
|
||||
REM carlos.sierra@oracle.com
|
||||
REM Carlos Sierra
|
||||
REM
|
||||
REM SCRIPT
|
||||
REM coe_xfr_sql_profile.sql
|
||||
@@ -51,13 +50,17 @@ REM sqlt/utl/sqltprofile.sql
|
||||
REM 3. Be aware that using DBMS_SQLTUNE requires a license for
|
||||
REM Oracle Tuning Pack.
|
||||
REM 4. Use a DBA user but not SYS.
|
||||
REM 5. If you get "ORA-06532: Subscript outside of limit, ORA-06512: at line 1"
|
||||
REM Then you may consider this change (only in a test and disposable system):
|
||||
REM create or replace TYPE sys.sqlprof_attr AS VARRAY(5000) of VARCHAR2(500);
|
||||
REM
|
||||
SET TERM ON ECHO OFF;
|
||||
PRO
|
||||
PRO Parameter 1:
|
||||
PRO SQL_ID (required)
|
||||
PRO
|
||||
DEF sql_id = '&1';
|
||||
DEF sql_id = '&1.';
|
||||
UNDEF 1;
|
||||
PRO
|
||||
WITH
|
||||
p AS (
|
||||
@@ -69,10 +72,12 @@ SELECT plan_hash_value
|
||||
SELECT plan_hash_value
|
||||
FROM dba_hist_sql_plan
|
||||
WHERE sql_id = TRIM('&&sql_id.')
|
||||
AND dbid = (SELECT dbid FROM v$database)
|
||||
AND other_xml IS NOT NULL ),
|
||||
m AS (
|
||||
SELECT plan_hash_value,
|
||||
SUM(elapsed_time)/SUM(executions) avg_et_secs
|
||||
SUM(elapsed_time)/SUM(executions) avg_et_secs,
|
||||
SUM(executions) executions
|
||||
FROM gv$sql
|
||||
WHERE sql_id = TRIM('&&sql_id.')
|
||||
AND executions > 0
|
||||
@@ -80,27 +85,33 @@ SELECT plan_hash_value,
|
||||
plan_hash_value ),
|
||||
a AS (
|
||||
SELECT plan_hash_value,
|
||||
SUM(elapsed_time_total)/SUM(executions_total) avg_et_secs
|
||||
SUM(elapsed_time_delta)/SUM(executions_delta) avg_et_secs,
|
||||
SUM(executions_delta) executions
|
||||
FROM dba_hist_sqlstat
|
||||
WHERE sql_id = TRIM('&&sql_id.')
|
||||
AND executions_total > 0
|
||||
AND executions_delta > 0
|
||||
GROUP BY
|
||||
plan_hash_value )
|
||||
SELECT p.plan_hash_value,
|
||||
ROUND(NVL(m.avg_et_secs, a.avg_et_secs)/1e6, 3) avg_et_secs
|
||||
SELECT
|
||||
TO_CHAR(ROUND(m.avg_et_secs/1e6, 6), '999,990.000000') avg_et_secs_mem,
|
||||
TO_CHAR(ROUND(a.avg_et_secs/1e6, 6), '999,990.000000') avg_et_secs_awr,
|
||||
p.plan_hash_value,
|
||||
m.executions executions_mem,
|
||||
a.executions executions_awr
|
||||
--TO_CHAR(ROUND(NVL(m.avg_et_secs, a.avg_et_secs)/1e6, 6), '999,990.000000') avg_et_secs
|
||||
FROM p, m, a
|
||||
WHERE p.plan_hash_value = m.plan_hash_value(+)
|
||||
AND p.plan_hash_value = a.plan_hash_value(+)
|
||||
ORDER BY
|
||||
avg_et_secs NULLS LAST;
|
||||
NVL(m.avg_et_secs, a.avg_et_secs) NULLS LAST, a.avg_et_secs;
|
||||
PRO
|
||||
PRO Parameter 2:
|
||||
PRO PLAN_HASH_VALUE (required)
|
||||
PRO
|
||||
DEF plan_hash_value = '&2';
|
||||
UNDEF 2;
|
||||
PRO
|
||||
PRO Values passed to coe_xfr_sql_profile:
|
||||
PRO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
PRO SQL_ID : "&&sql_id."
|
||||
PRO PLAN_HASH_VALUE: "&&plan_hash_value."
|
||||
PRO
|
||||
@@ -230,6 +241,7 @@ BEGIN
|
||||
FROM dba_hist_sql_plan
|
||||
WHERE sql_id = TRIM('&&sql_id.')
|
||||
AND plan_hash_value = TO_NUMBER(TRIM('&&plan_hash_value.'))
|
||||
AND dbid = (SELECT dbid FROM v$database)
|
||||
AND other_xml IS NOT NULL
|
||||
ORDER BY
|
||||
id)
|
||||
@@ -251,6 +263,7 @@ BEGIN
|
||||
FOR i IN (SELECT other_xml
|
||||
FROM gv$sql_plan
|
||||
WHERE plan_hash_value = TO_NUMBER(TRIM('&&plan_hash_value.'))
|
||||
--WHERE full_plan_hash_value = TO_NUMBER(TRIM('&&plan_hash_value.'))
|
||||
AND other_xml IS NOT NULL
|
||||
ORDER BY
|
||||
child_number, id)
|
||||
@@ -272,6 +285,8 @@ BEGIN
|
||||
FOR i IN (SELECT other_xml
|
||||
FROM dba_hist_sql_plan
|
||||
WHERE plan_hash_value = TO_NUMBER(TRIM('&&plan_hash_value.'))
|
||||
--WHERE full_plan_hash_value = TO_NUMBER(TRIM('&&plan_hash_value.'))
|
||||
AND dbid = (SELECT dbid FROM v$database)
|
||||
AND other_xml IS NOT NULL
|
||||
ORDER BY
|
||||
id)
|
||||
|
||||
Reference in New Issue
Block a user