Friday, September 30, 2022

SQL script to find SQL ID's having more than one hash plan

 

SQL script to find SQL ID's having more than one hash plan

This will be for the last 7 days.

Script:

SELECT
    sql_id, COUNT(DISTINCT plan_hash_value)
   FROM
    dba_hist_sqlstat  stat,
    dba_hist_snapshot ss
WHERE
        stat.snap_id = ss.snap_id
    AND ss.dbid = stat.dbid
    AND ss.instance_number = stat.instance_number
    AND ss.begin_interval_time >= sysdate - 7
    AND ss.end_interval_time <= sysdate
    AND stat.plan_hash_value <> 0
    AND stat.executions_delta > 0
    AND stat.parsing_schema_name NOT IN ( 'SYS', 'SYSTEM' )
 GROUP BY
    sql_id
having COUNT(DISTINCT plan_hash_value) >1
ORDER BY
    1;



PL/SQL to Compare if they are the same or different


Script:

SET SERVEROUTPUT ON
DECLARE
    v_count number := 0;
    CURSOR SQLID IS
SELECT
    sql_id,
    COUNT(DISTINCT plan_hash_value) cnt
FROM
    dba_hist_sqlstat  stat,
    dba_hist_snapshot ss
WHERE
        stat.snap_id = ss.snap_id
    AND ss.dbid = stat.dbid
    AND ss.instance_number = stat.instance_number
    AND ss.begin_interval_time >= sysdate - 7
    AND ss.end_interval_time <= sysdate
    AND stat.plan_hash_value <> 0
    AND stat.executions_delta > 0
    AND stat.parsing_schema_name NOT IN ( 'SYS', 'SYSTEM' )
GROUP BY
    sql_id
ORDER BY
    1;

BEGIN
    FOR I IN SQLID
    loop
    DBMS_OUTPUT.PUT_LINE ('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
        IF I.cnt > 1 THEN
            DBMS_OUTPUT.PUT_LINE ('Multiple plan for this sql :-'||I.sql_id||'. Checked for last 7 days. Please login to DB and do action item as needed ');
       ELSE
             DBMS_OUTPUT.PUT_LINE ('This sqlid '||I.sql_id||' has more than one plan, but the plan was not changed since last 7days'); 
        END IF;
        
    end loop;
END;
/

Thursday, September 8, 2022

sqlflip2.sql

 set lines 155

----------------------------------------------------------------------------------------

--

-- File name:   sqlflip2.sql

--

-- Purpose:     Attempts to find SQL statements with plan instability.

--

---------------------------------------------------------------------------------------

col execs for 999,999,999

col etime for 999,999,999.9

col avg_etime for 999,999.999

col avg_cpu_time for 999,999.999

col avg_lio for 999,999,999.9

col avg_pio for 9,999,999.9

col begin_interval_time for a30

col node for 99999

break on plan_hash_value on startup_time skip 1

select sql_id, plan_hash_value, 

sum(execs) execs, 

-- sum(etime) etime, 

sum(etime)/sum(execs) avg_etime, 

sum(cpu_time)/sum(execs) avg_cpu_time,

sum(lio)/sum(execs) avg_lio, 

sum(pio)/sum(execs) avg_pio

from (

select ss.snap_id, ss.instance_number node, begin_interval_time, sql_id, plan_hash_value,

nvl(executions_delta,0) execs,

elapsed_time_delta/1000000 etime,

(elapsed_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta))/1000000 avg_etime,

buffer_gets_delta lio,

disk_reads_delta pio,

cpu_time_delta/1000000 cpu_time,

(buffer_gets_delta/decode(nvl(buffer_gets_delta,0),0,1,executions_delta)) avg_lio,

(cpu_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta)) avg_cpu_time

from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS

where sql_id = nvl('&sql_id','4dqs2k5tynk61')

and ss.snap_id = S.snap_id

and ss.instance_number = S.instance_number 

-- and executions_delta > 0

)

group by sql_id, plan_hash_value

order by 5

/

sqlflip1.sql

 ----------------------------------------------------------------------------------------

--

-- File name:   sqlflip1.sql

--

-- Purpose:     Provides list of all PHVs their execution count and resource consumption

--

---------------------------------------------------------------------------------------

set lines 155

col execs for 999,999,999

col min_etime for 999,999.99

col max_etime for 999,999.99

col avg_etime for 999,999.999

col avg_lio for 999,999,999.9

col norm_stddev for 999,999.9999

col begin_interval_time for a30

col node for 99999

break on plan_hash_value on startup_time skip 1

select * from (

select sql_id, sum(execs), min(avg_etime) min_etime, max(avg_etime) max_etime, stddev_etime/min(avg_etime) norm_stddev

from (

select sql_id, plan_hash_value, execs, avg_etime,

stddev(avg_etime) over (partition by sql_id) stddev_etime 

from (

select sql_id, plan_hash_value,

sum(nvl(executions_delta,0)) execs,

(sum(elapsed_time_delta)/decode(sum(nvl(executions_delta,0)),0,1,sum(executions_delta))/1000000) avg_etime

-- sum((buffer_gets_delta/decode(nvl(buffer_gets_delta,0),0,1,executions_delta))) avg_lio

from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS

where ss.snap_id = S.snap_id

and ss.instance_number = S.instance_number 

and executions_delta > 0

and elapsed_time_delta > 0

and s.snap_id > nvl('&earliest_snap_id',0)

group by sql_id, plan_hash_value

)

)

group by sql_id, stddev_etime

)

where norm_stddev > nvl(to_number('&min_stddev'),2)

and max_etime > nvl(to_number('&min_etime'),.1)

order by norm_stddev

/

validation


 col directory_path  for a100

set pages 1000 lines 150            

select directory_name,directory_path from dba_directories;


SET LINESIZE 150

COLUMN owner FORMAT A20
COLUMN directory_name FORMAT A25
COLUMN directory_path FORMAT A80

SELECT *
FROM   dba_directories
ORDER BY owner, directory_name;


+++++++++

SQL:

 

select 'CREATE OR REPLACE DIRECTORY '||directory_name||' as '''|| directory_path||''';' from dba_directories;

                                      

OR

 

update dir$ set OS_PATH=replace(OS_PATH,'&OLD_VALUE','&NEW_VALUE') where OS_PATH like '%&OLD_VALUE%';



+++


Update Site Name:

 

Update the Below function. Change the value according to the instance

 

update fnd_form_functions_tl

set user_function_name = ' from PROD (BKP 16-MAY-16)'

where function_id in (select function_id from fnd_form_functions where function_name = 'FWK_HOMEPAGE_BRAND') and LANGUAGE='US';

 

 

set pages 1000 lines 150

col user_function_name for a80

select LANGUAGE,FUNCTION_ID,user_function_name  from fnd_form_functions_tl where function_id in (select function_id from fnd_form_functions where function_name = 'FWK_HOMEPAGE_BRAND') and LANGUAGE='US';

 +++


Once REGOID is completed, we need to follow the attached mail steps to populate the data in OID tables.

 SQL>  execute fnd_oid_plug.setPlugin;

 

SQL> SELECT * FROM fnd_user_preferences WHERE user_name='#INTERNAL' AND module_name='OID_CONF';



Oracle E-Business Suite Release 12 Release-Specific Database Initialization Parameters for 19c

 


Release-Specific Database Initialization Parameters for 19c

 ####################################################################

#
# Oracle E-Business Suite Release 12
# Release-Specific Database Initialization Parameters for 19c
#
####################################################################

compatible = 19.0.0 #MP
optimizer_adaptive_plans = TRUE #MP
optimizer_adaptive_statistics = FALSE #MP
pga_aggregate_limit = 0 #MP
temp_undo_enabled = FALSE
_pdb_name_case_sensitive = TRUE #MP
event='10946 trace name context forever, level 8454144' #MP
_optimizer_gather_stats_on_conventional_dml = FALSE #MP
_optimizer_use_stats_on_conventional_dml = FALSE #MP
optimizer_real_time_statistics = FALSE #MP


###############################################################################
#
# End of Release-Specific Database Initialization Parameters Section for 19c
#
###############################################################################

Parameter Removal List for Oracle Database 19c

 egrep -i '_kks_use_mutex_pin|_shared_pool_reserved_min_alloc|_sqlexec_progression_cost|exafusion_enabled|exclude_seed_cdb_view|global_context_pool_size|max_enabled_roles|o7_dictionary_accessibility|olap_page_pool_size|optimizer_adaptive_features|optimizer_features_enable|parallel_automatic_tuning|parallel_degree_level|parallel_io_cap_enabled|parallel_server|parallel_server_instances|plsql_compiler_flags|plsql_native_library_dir|plsql_native_library_subdir_count|plsql_optimize_level|standby_archive_dest|timed_statistics|use_indirect_data_buffers|utl_file_dir' init19c.ora


++++++++++++


 Parameter Removal List for Oracle Database 19c

If they exist, you should remove the following parameters from your database initialization parameters file for Oracle Database 19c.

Note: Parameters may appear on a "removal list" because they are obsolete; because the default value is required and no other value may be set; or to cater for certain special cases where a non-default value has to be set to meet specific needs (currently, there is only one such case, which is described in Section 6).

_kks_use_mutex_pin
_shared_pool_reserved_min_alloc
_sqlexec_progression_cost
exafusion_enabled
exclude_seed_cdb_view
global_context_pool_size
max_enabled_roles
o7_dictionary_accessibility
olap_page_pool_size
optimizer_adaptive_features
optimizer_features_enable
parallel_automatic_tuning
parallel_degree_level
parallel_io_cap_enabled
parallel_server
parallel_server_instances
plsql_compiler_flags
plsql_native_library_dir
plsql_native_library_subdir_count
plsql_optimize_level
standby_archive_dest
timed_statistics
use_indirect_data_buffers
utl_file_dir