How to calculate SAP/Oracle Performance parameter Sunday, March 22, 2009

Dear All,

Recently i stuck with SAP performance issues So maximum time its related to Database so Here i have oracle and i am sharing a report and script through which you can find out the optimum Oracle database Parameters :

Steps:
1) Log-in to SAP system
2) Go to SA38/Se38
3) Give report name RSORADJV
4) Paste this script in provide window ( Script is for 10.2.0.2 only)

select
name,
substr(order_recommendation,3) recommendation,
remark,
"SET",
is_value,
should_be_value,
substr(order_recommendation,1,1) "ID",
inst_id
from
(
select
decode(substr(pis.name,1,3),
'***',-1,pis.inst_id) inst_id,
decode(substr(pis.name,1,3),
'***',upper(pis.name),
decode(pis.subname,
' ',pis.name,
pis.name||' ('||pis.subname||')')) name,
decode(substr(pis.name,1,3),
'***','* '||
decode(substr(pis.name,17,2),
' 1','Last change: March, 10th, 2009',
' 2','Note/Version: 830576/179',
' 3','Evaluation Date/Time: '||to_char(sysdate,'YYYY-MM-DD/HH24:MI:SS'),
' 4','DB Startup Date/Time: '||to_char(ext_startup,'YYYY-MM-DD/HH24:MI:SS')
||decode(ext_rac_enabled,'TRUE',' (data of instance '||pis.inst_id||')',''),
' 5','OLAP: '||decode(substr(upper(''),1,1),'Y','TRUE','FALSE'),
' 6','Patchset: '||ext_version
||decode(ext_rac_enabled,'TRUE',' (data of instance '||pis.inst_id||')',''),
' 7','Mergefix: '||ext_mergefix
||decode(ext_rac_enabled,'TRUE',' (data of instance '||pis.inst_id||')',''),
' 8','RAC: '||ext_rac_enabled
||decode(ext_rac_enabled,' (data of other instances at the end of the list)',''),
' 9','Platform: '||ext_platform_name
||decode(ext_rac_enabled,'TRUE',' (data of instance '||pis.inst_id||')',''),
'10','Event Check: '||decode(ext_event_contains_colon,
0,'reliable',
'not reliable [event separator ":" unsupported; see note 830576]')),
decode(pis.isdefault,
'TRUE',decode(pshould.value,
null,
'O ok (not set; mentioned with other prerequisites/not mentioned in note)',
decode(substr(pshould.value,1,5),
'-man-',
'D check if default value "'||pis.value||'" is suitable ('||substr(pshould.value,6)||')',
'-aut-',
'G automatic check ok; doublecheck if default value "'||pis.value||'" is suitable ('||substr(pshould.value,6)||')',
'-any-',
'N ok (not set; any value recommended)',
'-del-',
'J ok (not set; not to be set as explicitly mentioned in note)',
decode(upper(pis.value),
upper(pshould.value),
'I add explicitly with default value "'||pshould.value||'"',
'A add with value "'||pshould.value||'"'))),
decode(pshould.value,
null,
'F check why set but mentioned with other prerequisites/not mentioned in note',
decode(substr(pshould.value,1,5),
'-man-',
'E check if value "'||pis.value||'" is suitable ('||substr(pshould.value,6)||')',
'-aut-',
'H automatic check ok; doublecheck if value "'||pis.value||'" is suitable ('||substr(pshould.value,6)||')',
'-any-',
'M ok (set; any value recommended)',
'-del-',
'B delete (set; not to be set as explicitly mentioned in note)',
decode(
decode(
substr(replace(upper(pis.value),' ',''),1,length(
substr(replace(upper(pshould.value),' ',''),1,
instr(replace(upper(pshould.value),' ',''),'[')-1))),
substr(replace(upper(pshould.value),' ',''),1,
instr(replace(upper(pshould.value),' ',''),'[')-1),'X',
' ')||
decode(
substr(replace(upper(pis.value),' ',''),-length(
substr(replace(upper(pshould.value),' ',''),
instr(replace(upper(pshould.value),' ',''),']')+1))),
substr(replace(upper(pshould.value),' ',''),
instr(replace(upper(pshould.value),' ',''),']')+1),'X',
' '),
'XX',
'K ok (set correctly =)',
decode(sign(
decode(rpad('>=',length(pshould.value),'X'),
translate(pshould.value,'1234567890','XXXXXXXXXX'),
to_number(pis.value)-to_number(substr(pshould.value,3))+1,
0)),
1,
'L ok (set correctly >=)',
'C change value to "'||pshould.value||'"')))))) order_recommendation,
decode(substr(pis.name,1,3),
'***',' ',
decode(pis.isdefault,
'TRUE','NO',
'YES')) "SET",
pis.value is_value,
decode(substr(pshould.value,1,5),
'-man-',substr(pshould.value,6),
'-aut-',substr(pshould.value,6),
'-any-','any value',
'-del-','deleted '||chr(102)||'rom parameter file',
pshould.value) should_be_value,
pshould."comment" remark
from
(
select
inst_id,
name,
subname,
value,
vs,
"comment",
hide,
ext_mergefix,
ext_rac_enabled,
ext_version,
ext_startup,
ext_platform_name,
ext_event_contains_colon
from
(
select
original.inst_id,
lower(decode(instr(original.n,','),0,original.n,substr(original.n,1,instr(original.n,',')-1))) name,
lower(decode(instr(original.n,','),0,' ',substr(original.n,instr(original.n,',')+1))) subname,
replace(decode(original.n,
'PARALLEL_MAX_SERVERS',decode(ext_cpu_count.cpu_count*10-ext_para_max.para_max,
0,'-aut-'||substr(original.w,6),original.w),
'PGA_AGGREGATE_TARGET',decode(sign(round(ext_pgastat.MAX_since_start/ext_pgastat.limit_value*100)-90),
-1,decode(sign(round(ext_pgastat.MAX_since_start/ext_pgastat.limit_value*100)-75),
1,'-aut-'||substr(original.w,6),
original.w),
original.w),
'PROCESSES',decode(sign(round(ext_resource_limit.MAX_UTILIZATION/ext_resource_limit.limit_value*100)-75),
-1,'-aut-'||substr(original.w,6),original.w),
'SESSIONS',decode(sign(round(ext_resource_limit.MAX_UTILIZATION/ext_resource_limit.limit_value*100)-75),
-1,'-aut-'||substr(original.w,6),original.w),
'SHARED_POOL_SIZE',decode(sign(ext_shared_pool_size.shared_pool_size-400*1000*1000),
-1,'>= 400 MB',
decode(sign(ext_shared_pool_size.shared_pool_size-4*1024*1024*1024),
1,'<= 4GB, if no special reason for the high setting',
decode(sign(round(ext_pools_free.min_from_history/ext_shared_pool_size.shared_pool_size*100)-90),
-1,decode(sign(round(ext_pools_free.min_from_history/ext_shared_pool_size.shared_pool_size*100)-75),
1,'-aut-'||substr(original.w,6),
original.w),
original.w))),
'UNDO_RETENTION',decode(ext_undostat.max_stolen,
0,'-aut-'||substr(original.w,6),original.w),
original.w),'[SID]',ext_database.name) value,
original.v vs,
decode(original.n,
'PARALLEL_MAX_SERVERS','Max used (gv$resource_limit): '||ext_resource_limit.MAX_UTILIZATION
||' ('||round(ext_resource_limit.MAX_UTILIZATION/ext_para_max.para_max*100)
||'%); '
||replace(original.c,'[CPU_COUNT]',to_char(ext_cpu_count.cpu_count)),
'PGA_AGGREGATE_TARGET','Max used MB (gv$pgastat): '||round(ext_pgastat.MAX_since_start/1024/1024)
||' ('||round(ext_pgastat.MAX_since_start/ext_pgastat.limit_value*100)
||'%) ',
'PROCESSES','Max used (gv$resource_limit): '||ext_resource_limit.MAX_UTILIZATION
||' ('||round(ext_resource_limit.MAX_UTILIZATION/ext_resource_limit.limit_value*100)
||'%)',
'SESSIONS','Max used (gv$resource_limit): '||ext_resource_limit.MAX_UTILIZATION
||' ('||round(ext_resource_limit.MAX_UTILIZATION/ext_resource_limit.limit_value*100)
||'%); '
||replace(original.c,'[PROCESSES]',to_char(ext_processes.processes)),
'SHARED_POOL_SIZE',
'Max used MB (dba_hist_sgastat): '||
round((ext_shared_pool_size.shared_pool_size-ext_pools_free.min_from_history)/1024/1024)
||' ('||round((ext_shared_pool_size.shared_pool_size-ext_pools_free.min_from_history)/
ext_shared_pool_size.shared_pool_size*100)
||'%)',
'UNDO_RETENTION','Max unexpired stolen blocks (gv$undostat): '||ext_undostat.max_stolen,
original.c) "comment",
decode(instr(lower(original.n),'_fix_control'),0,'FALSE',decode(ext_fix_control.bugno,null,'TRUE','FALSE')) hide,
ext_mergefix.mergefix_at_least ext_mergefix,
ext_rac.enabled ext_rac_enabled,
original.version ext_version,
original.startup_time ext_startup,
ext_database.platform_name ext_platform_name,
ext_event.contains_colon ext_event_contains_colon
from
(
select
i.inst_id inst_id,
startup_time,
version,
n,w,v,r,c
from
(
select
'*** INFORMATION '||lpad(rownum,2)||' ***' n,
'' w,
'XXXXXX' v,
'' r,
'' c from gv$parameter2 where rownum < 11 union ( select
'BACKGROUND_DUMP_DEST' n,
'/oracle/[SID]/saptrace/background' w,
'XXXXXX' v,
'OS_FAMILY[UNIX]' r,
'' c from dual ) union ( select
'BACKGROUND_DUMP_DEST' n,
'[DRIVE]:\oracle\[SID]\saptrace\background' w,
'XXXXXX' v,
'OS_FAMILY[WINDOWS]' r,
'' c from dual ) union ( select
'CLUSTER_DATABASE' n,
'-any-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'COMMIT_WRITE' n,
'-del-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'COMPATIBLE' n,
'10.2.0' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'CONTROL_FILES' n,
'-any-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'CONTROL_FILE_RECORD_KEEP_TIME' n,
'>=30' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'CORE_DUMP_DEST' n,
'/oracle/[SID]/saptrace/background' w,
'XXXXXX' v,
'OS_FAMILY[UNIX]' r,
'' c from dual ) union ( select
'CORE_DUMP_DEST' n,
'[DRIVE]:\oracle\[SID]\saptrace\background' w,
'XXXXXX' v,
'OS_FAMILY[WINDOWS]' r,
'' c from dual ) union ( select
'DB_BLOCK_BUFFERS' n,
'-del-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'DB_BLOCK_SIZE' n,
'8192' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'DB_CACHE_SIZE' n,
'-man-appropriately set' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'DB_FILE_MULTIBLOCK_READ_COUNT' n,
'-del-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'DB_FILES' n,
'-any-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'DB_NAME' n,
'[SID]' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'DB_WRITER_PROCESSES' n,
'-man-change default in case of dbwr problems only' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'EVENT,10027' n,
'10027 trace name context forever, level 1' w,
'XXXXXX' v,
'' r,
'avoid process state dump at deadlock' c from dual ) union ( select
'EVENT,10028' n,
'10028 trace name context forever, level 1' w,
'XXXXXX' v,
'' r,
'do not wait while writing deadlock trace' c from dual ) union ( select
'EVENT,10049' n,
'-man-set with level 2 if minipatch 5-9 is installed' w,
' X ' v,
'OS_FAMILY[WINDOWS]' r,
'avoid ORA-07445/ORA-00600 as of minipatch 5' c from dual ) union ( select
'EVENT,10091' n,
'10091 trace name context forever, level 1' w,
' X ' v,
'' r,
'avoid CU Enqueue during parsing' c from dual ) union ( select
'EVENT,10091' n,
'10091 trace name context forever, level 1' w,
' X ' v,
'MF[00,01,02]' r,
'avoid CU Enqueue during parsing' c from dual ) union ( select
'EVENT,10142' n,
'10142 trace name context forever, level 1' w,
' XXX' v,
'' r,
'avoid Btree Bitmap Conversion plans' c from dual ) union ( select
'EVENT,10162' n,
'10162 trace name context forever, level 1' w,
' X ' v,
'' r,
'avoid wrong values' c from dual ) union ( select
'EVENT,10183' n,
'10183 trace name context forever, level 1' w,
'XXXXXX' v,
'' r,
'avoid rounding during cost calculation' c from dual ) union ( select
'EVENT,10191' n,
'10191 trace name context forever, level 1' w,
'XXXXXX' v,
'' r,
'avoid high CBO memory consumption' c from dual ) union ( select
'EVENT,10411' n,
'10411 trace name context forever, level 1' w,
' XXX' v,
'' r,
'fixes int-does-not-correspond-to-number bug' c from dual ) union ( select
'EVENT,10629' n,
'10629 trace name context forever, level 32' w,
'XXXXXX' v,
'' r,
'influence rebuild online error handling' c from dual ) union ( select
'EVENT,10891' n,
'10891 trace name context forever, level 1' w,
'XXXXXX' v,
'' r,
'avoid high parsing times joining many tables' c from dual ) union ( select
'EVENT,14532' n,
'-man-set with level 1 if fix 5618049 is installed' w,
' X ' v,
'' r,
'avoid massive shared pool consumption' c from dual ) union ( select
'EVENT,14532' n,
'14532 trace name context forever, level 1' w,
' XXXX' v,
'' r,
'avoid massive shared pool consumption' c from dual ) union ( select
'EVENT,38068' n,
'38068 trace name context forever, level 100' w,
'XXXXXX' v,
'' r,
'long raw statistic; implement note 948197' c from dual ) union ( select
'EVENT,38085' n,
'38085 trace name context forever, level 1' w,
' XXX' v,
'' r,
'consider cost adjust for index fast full scan' c from dual ) union ( select
'EVENT,38087' n,
'-man-set with level 1 if fix 5842686 is installed' w,
' X ' v,
'' r,
'avoid ora-600 at star transformation' c from dual ) union ( select
'EVENT,38087' n,
'38087 trace name context forever, level 1' w,
' XXXX' v,
'' r,
'avoid ora-600 at star transformation' c from dual ) union ( select
'EVENT,44951' n,
'-man-set with level 1024 if fix 6376915 is installed' w,
' X ' v,
'' r,
'avoid HW enqueues during LOB inserts' c from dual ) union ( select
'EVENT,44951' n,
'44951 trace name context forever, level 1024' w,
' XXX' v,
'' r,
'avoid HW enqueues during LOB inserts' c from dual ) union ( select
'FILESYSTEMIO_OPTIONS' n,
'SETALL' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'HPUX_SCHED_NOAGE' n,
'178' w,
'XXXXXX' v,
'RAC[FALSE]' r,
'performance' c from dual ) union ( select
'LOG_ARCHIVE_DEST' n,
'-del-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'LOG_ARCHIVE_DEST_1' n,
'LOCATION=/oracle/[SID]/oraarch/[SID]arch' w,
'XXXXXX' v,
'OS_FAMILY[UNIX]' r,
'note 966073' c from dual ) union ( select
'LOG_ARCHIVE_DEST_1' n,
'LOCATION=[drive]:\oracle\[SID]\oraarch\[SID]arch' w,
'XXXXXX' v,
'OS_FAMILY[WINDOWS]' r,
'note 966073' c from dual ) union ( select
'LOG_ARCHIVE_FORMAT' n,
'%t_%s_%r.dbf' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'LOG_BUFFER' n,
'>=1048576' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'LOG_CHECKPOINTS_TO_ALERT' n,
'TRUE' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'MAX_DUMP_FILE_SIZE' n,
'20000' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'OPEN_CURSORS' n,
'>=800' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'OPTIMIZER_DYNAMIC_SAMPLING' n,
'6' w,
' XXX' v,
'' r,
'est. % of index cached (inlist, nested loop)' c from dual ) union ( select
'OPTIMIZER_FEATURES_ENABLE' n,
'-del-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'OPTIMIZER_INDEX_CACHING' n,
'-del-' w,
'XXXXXX' v,
'' r,
'est. % of index cached (inlist, nested loop)' c from dual ) union ( select
'OPTIMIZER_INDEX_COST_ADJ' n,
'20' w,
'RRRRRR' v,
'' r,
'' c from dual ) union ( select
'OPTIMIZER_INDEX_COST_ADJ' n,
'-del-' w,
'BBBBBB' v,
'' r,
'' c from dual ) union ( select
'OPTIMIZER_MODE' n,
'-del-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'PARALLEL_EXECUTION_MESSAGE_SIZE' n,
'16384' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'PARALLEL_MAX_SERVERS' n,
'-man-#DB-CPU-CORES*10' w,
'XXXXXX' v,
'' r,
'CPU_COUNT=[CPU_COUNT]' c from dual ) union ( select
'PARALLEL_THREADS_PER_CPU' n,
'1' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'PGA_AGGREGATE_TARGET' n,
'-man-appropriately set' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'PROCESSES' n,
'-man-formula how to set in parameter note' w,
'XXXXXX' v,
'' r,
'dependent: SESSIONS' c from dual ) union ( select
'QUERY_REWRITE_ENABLED' n,
'FALSE' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'RECYCLEBIN' n,
'OFF' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'REMOTE_OS_AUTHENT' n,
'TRUE' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'REPLICATION_DEPENDENCY_TRACKING' n,
'-any-' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'SESSIONS' n,
'-man-2*PROCESSES' w,
'XXXXXX' v,
'' r,
'PROCESSES=[PROCESSES]' c from dual ) union ( select
'SHARED_POOL_SIZE' n,
'-man-appropriately set' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'STAR_TRANSFORMATION_ENABLED' n,
'TRUE' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'UNDO_MANAGEMENT' n,
'AUTO' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'UNDO_TABLESPACE' n,
'PSAPUNDO' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'UNDO_RETENTION' n,
'-man-appropriately set' w,
'XXXXXX' v,
'' r,
'' c from dual ) union ( select
'USER_DUMP_DEST' n,
'/oracle/[SID]/saptrace/usertrace' w,
'XXXXXX' v,
'OS_FAMILY[UNIX]' r,
'' c from dual ) union ( select
'USER_DUMP_DEST' n,
'[DRIVE]:\oracle\[SID]\saptrace\usertrace' w,
'XXXXXX' v,
'OS_FAMILY[WINDOWS]' r,
'' c from dual ) union ( select
'_B_TREE_BITMAP_PLANS' n,
'FALSE' w,
' X ' v,
'' r,
'avoid b*tree conversion to bitmap' c from dual ) union ( select
'_BLOOM_FILTER_ENABLED' n,
'FALSE' w,
' X ' v,
'' r,
'avoid wrong values' c from dual ) union ( select
'_DB_BLOCK_NUMA' n,
'-man-without CLM: =1, OTHERWISE: do not set' w,
'XXXXXX' v,
'OS[HP-UX IA (64-bit),HP-UX (64-bit)]' r,
'performance; note 1225732' c from dual ) union ( select
'_ENABLE_NUMA_OPTIMIZATION' n,
'-man-without CLM: =FALSE, OTHERWISE: do not set' w,
'XXXXXX' v,
'OS[HP-UX IA (64-bit),HP-UX (64-bit)]' r,
'performance; note 1225732' c from dual ) union ( select
'_FIX_CONTROL,4728348' n,
'4728348:OFF' w,
' X ' v,
'MF[00,01,02]' r,
'avoid wrong values; notes 964858 and 997889' c from dual ) union ( select
'_FIX_CONTROL,5705630' n,
'5705630:ON' w,
' X XXX' v,
'' r,
'use optimal OR concatenation; note 176754' c from dual ) union ( select
'_FIX_CONTROL,5765456' n,
'5765456:3' w,
' XXX' v,
'' r,
'no further information available' c from dual ) union ( select
'_FIX_CONTROL,6120483' n,
'6120483:OFF' w,
' X ' v,
'MF[00,01,02,03,04,05]' r,
'avoid wrong plan in simple query;notes 981875,1165319' c from dual ) union ( select
'_FIX_CONTROL,6120483' n,
'6120483:OFF' w,
' X ' v,
'MF[13,14]' r,
'avoid wrong plan in simple query;notes 981875,1165319' c from dual ) union ( select
'_FIX_CONTROL,6221403' n,
'6221403:ON' w,
' XXX' v,
'' r,
'correct selectivity; note 1165319' c from dual ) union ( select
'_FIX_CONTROL,6329318' n,
'6329318:OFF' w,
' X ' v,
'MF[01,02,03,04,05]' r,
'avoid between costs lower than =; note 1165319' c from dual ) union ( select
'_FIX_CONTROL,6329318' n,
'6329318:ON' w,
' X ' v,
'MF[06,07,08,09,10,11,12,13,14,15,16,17,18]' r,
'avoid between costs lower than =; note 1165319' c from dual ) union ( select
'_FIX_CONTROL,6430500' n,
'6430500:ON' w,
' X XXX' v,
'' r,
'avoid that unique index not chosen' c from dual ) union ( select
'_FIX_CONTROL,6440977' n,
'6440977:ON' w,
' X XXX' v,
'' r,
'consider redundant predicates in join; note 981875' c from dual ) union ( select
'_FIX_CONTROL,6626018' n,
'6626018:ON' w,
' X XXX' v,
'' r,
'avoid to low filter costs; note 981875' c from dual ) union ( select
'_FIX_CONTROL,6660162' n,
'6660162:ON' w,
' X ' v,
'' r,
'choose right index; note 981875' c from dual ) union ( select
'_FIX_CONTROL,6670551' n,
'6670551:ON' w,
' X ' v,
'' r,
'calculate stats on empty table; note 1165319' c from dual ) union ( select
'_FIX_CONTROL,6972291' n,
'6972291:ON' w,
' XXX' v,
'' r,
'use column group selectivity with hgrm;note 1165319' c from dual ) union ( select
'_FIX_CONTROL,7325597' n,
'7325597:ON' w,
' X XXX' v,
'' r,
'Avoid wrong Index after optimizer mergefix' c from dual ) union ( select
'_FIX_CONTROL,7692248' n,
'7692248:ON' w,
' XXX' v,
'' r,
'collect always histogram information' c from dual ) union ( select
'_FIRST_SPARE_PARAMETER' n,
'-man-set to 1 if fix 6904068 is installed' w,
' XXX' v,
'' r,
'Avoid high CPU consumption for Mutex requests' c from dual ) union ( select
'_INDEX_JOIN_ENABLED' n,
'FALSE' w,
' X ' v,
'' r,
'avoid wrong values; workaround for note 981875' c from dual ) union ( select
'_IN_MEMORY_UNDO' n,
'FALSE' w,
' X ' v,
'' r,
'avoid corruptions' c from dual ) union ( select
'_OPTIM_PEEK_USER_BINDS' n,
'FALSE' w,
'XXXXXX' v,
'' r,
'avoid bind value peaking' c from dual ) union ( select
'_OPTIMIZER_BETTER_INLIST_COSTING' n,
'OFF' w,
' RRR' v,
'' r,
'avoid preference of index supporting inlist' c from dual ) union ( select
'_OPTIMIZER_MJC_ENABLED' n,
'FALSE' w,
'XXXXXX' v,
'' r,
'avoid cartesean merge joins in general' c from dual ) union ( select
'_PUSH_JOIN_UNION_VIEW' n,
'-man-set to false if fix 7155655 is not installed' w,
' X ' v,
'MF[00,01,02,03,04,05,06]' r,
'avoid wrong values' c from dual ) union ( select
'_SORT_ELIMINATION_COST_RATIO' n,
'10' w,
'XXXXXX' v,
'' r,
'use non-order-by-sorted indexes (first_rows)' c from dual ) union ( select
'_TABLE_LOOKUP_PREFETCH_SIZE' n,
'0' w,
' X ' v,
'' r,
'avoid wrong values; note 1109753' c from dual )
),
gv$instance i
)
original,
( select
instance_number inst_id,
decode(pool,
'shared pool','SHARED_POOL_SIZE',
'java pool','JAVA_POOL_SIZE') pool,
min(bytes) min_from_history
from
dba_hist_sgastat
where
pool in ('shared pool', 'java pool') and
name = 'free memory'
group by
instance_number,
pool
)
ext_pools_free,
( SELECT
inst_id,
upper(RESOURCE_NAME) RESOURCE_NAME,
limit_value,
MAX_UTILIZATION
FROM
gv$RESOURCE_LIMIT
WHERE
RESOURCE_NAME IN (
'processes',
'sessions',
'parallel_max_servers')
)
ext_resource_limit,
( select
pga.inst_id,
pga.value max_since_start,
param.value limit_value
from
gv$pgastat pga,
gv$parameter2 param
where
pga.inst_id=param.inst_id and
pga.name='maximum PGA allocated' and
param.name='pga_aggregate_target')
ext_pgastat,
( select inst_id, value processes from gv$parameter2 where name = 'processes')
ext_processes,
( select inst_id, value para_max from gv$parameter2 where name = 'parallel_max_servers')
ext_para_max,
( select inst_id, value cpu_count from gv$parameter2 where name = 'cpu_count')
ext_cpu_count,
( select inst_id, value shared_pool_size from gv$parameter2 where name = 'shared_pool_size')
ext_shared_pool_size,
( select inst_id, max(UNXPBLKRELCNT+UNXPBLKREUCNT) max_stolen from gv$undostat group by inst_id)
ext_undostat,
( select
nvl(max(bf.nr),0) mergefix_at_least
from
( select bg, nr, '10.2.0.2' patchset from
( select
5648287 bg, 16 nr from dual union ( select
6399597 bg, 16 nr from dual ) union ( select
6430500 bg, 16 nr from dual ) union ( select
7325597 bg, 16 nr from dual ) union ( select
6440977 bg, 14 nr from dual ) union ( select
6120483 bg, 13 nr from dual ) union ( select
6626018 bg, 13 nr from dual ) union ( select
6660162 bg, 12 nr from dual ) union ( select
6239971 bg, 12 nr from dual ) union ( select
4567767 bg, 12 nr from dual ) union ( select
6251917 bg, 11 nr from dual ) union ( select
6062266 bg, 10 nr from dual ) union ( select
6087237 bg, 9 nr from dual ) union ( select
6007259 bg, 9 nr from dual ) union ( select
6151963 bg, 9 nr from dual ) union ( select
5882954 bg, 8 nr from dual ) union ( select
4708389 bg, 8 nr from dual ) union ( select
5944076 bg, 7 nr from dual ) union ( select
6051211 bg, 7 nr from dual ) union ( select
6082745 bg, 7 nr from dual ) union ( select
5705630 bg, 7 nr from dual ) union ( select
6070954 bg, 7 nr from dual ) union ( select
5976822 bg, 7 nr from dual ) union ( select
5838613 bg, 7 nr from dual ) union ( select
5949981 bg, 7 nr from dual ) union ( select
5680702 bg, 6 nr from dual ) union ( select
5884780 bg, 3 nr from dual ) union ( select
5084239 bg, 2 nr from dual ) union ( select
5912195 bg, 1 nr from dual ) union ( select
4273361 bg, 1 nr from dual ) union ( select
4483240 bg, 1 nr from dual ) union ( select
4712638 bg, 1 nr from dual ) union ( select
5449488 bg, 1 nr from dual ) union ( select
5483301 bg, 1 nr from dual ) union ( select
5547058 bg, 1 nr from dual ) union ( select
5694984 bg, 1 nr from dual ) union ( select
5705257 bg, 1 nr from dual ) union ( select
5741121 bg, 1 nr from dual ) union ( select
5762598 bg, 1 nr from dual )
) union (
select bg, nr, '10.2.0.4' patchset from
( select
7272039 bg,11 nr from dual union ( select
7692248 bg,11 nr from dual ) union ( select
5099019 bg,10 nr from dual ) union ( select
7295298 bg, 8 nr from dual ) union ( select
7430474 bg, 7 nr from dual ) union ( select
5648287 bg, 6 nr from dual ) union ( select
6430500 bg, 6 nr from dual ) union ( select
7236148 bg, 6 nr from dual ) union ( select
7325597 bg, 6 nr from dual ) union ( select
7138405 bg, 5 nr from dual ) union ( select
6845871 bg, 5 nr from dual ) union ( select
6399597 bg, 4 nr from dual ) union ( select
6221403 bg, 3 nr from dual ) union ( select
6440977 bg, 3 nr from dual ) union ( select
6972291 bg, 3 nr from dual ) union ( select
5714944 bg, 1 nr from dual ) union ( select
6120483 bg, 1 nr from dual ) union ( select
6329318 bg, 1 nr from dual ) union ( select
6626018 bg, 1 nr from dual ) union ( select
6670551 bg, 1 nr from dual )
))
) bf,
v$system_fix_control fc,
v$instance i
where
bf.bg=fc.bugno and
substr(i.version,1,instr(i.version,'.',1,4)-1)=bf.patchset)
ext_mergefix,
v$system_fix_control
ext_fix_control,
( select decode(instr(value,'/'),0,'WINDOWS','UNIX') os_family from
v$parameter2 where name = 'control_files' and rownum < 2)
ext_os_family,
v$database
ext_database,
( select value enabled from v$parameter2 where name = 'cluster_database' )
ext_rac,
( select count(*) contains_colon from gv$parameter2 where name = 'event' and instr(value,':')>0)
ext_event
where
substr(original.v,decode(
replace(substr(original.version,1,instr(original.version,'.',1,4)-1),'.',null),
'10201',1,'10202',2,'10203',3,'10204',4,'10205',5,'10206',6),1)
in ('X', decode(substr(upper(''),1,1),'Y','B','R')) and
original.inst_id = ext_pools_free.inst_id(+) and
original.n = ext_pools_free.pool(+) and
original.inst_id = ext_resource_limit.inst_id(+) and
original.n = ext_resource_limit.RESOURCE_NAME(+) and
original.inst_id = ext_pgastat.inst_id and
original.inst_id = ext_processes.inst_id and
original.inst_id = ext_para_max.inst_id and
original.inst_id = ext_cpu_count.inst_id and
original.inst_id = ext_shared_pool_size.inst_id and
original.inst_id = ext_undostat.inst_id and
(
instr(' '||original.r,'MF[')=0 or
instr(original.r,'MF[')>0 and
instr(
substr(original.r,
instr(original.r,'MF['),
instr(original.r,']',
instr(original.r,'MF['))-
instr(original.r,'MF[')+1),
lpad(ext_mergefix.mergefix_at_least,2,'0')) >0
) and
lower(decode(instr(original.n,','),0,' ',substr(original.n,instr(original.n,',')+1)))=
to_char(ext_fix_control.bugno(+)) and
decode(ext_fix_control.bugno(+),
null, decode(instr(lower(original.n),'_fix_control'),
0,'OK',
'HIDE'),
'OK')='OK' and
(
instr(' '||original.r,'OS_FAMILY[')=0 or
instr(original.r,'OS_FAMILY[')>0 and instr(original.r,ext_os_family.os_family)>0
) and
(
instr(' '||original.r,'OS[')=0 or
instr(original.r,'OS[')>0 and instr(original.r,ext_database.platform_name)>0
) and
(
instr(' '||original.r,'RAC[')=0 or
instr(original.r,'RAC[TRUE]')>0 and ext_rac.enabled='TRUE' or
instr(original.r,'RAC[FALSE]')>0 and ext_rac.enabled='FALSE'
)
)
where hide='FALSE'
) pshould,
(
select
inst_id,
name,
subname,
trim(substr(max(sort_string),1,5)) isdefault,
substr(max(sort_string),6)||
decode(count(*),1,'',
decode(name,'event','',
decode(substr(name,1,1),'_','',
', ...'))) value
from
(
select
inst_id,
lower(name) name,
' ' subname,
concat(lpad(isdefault,5),value) sort_string
from
gv$parameter2
where
name not in ('event','_fix_control')
union
(
select
inst_id,
'_fix_control' name,
substr(trim(value),1,instr(trim(value),':')-1) subname,
concat('FALSE',trim(value)) sort_string
from
gv$parameter2
where
name='_fix_control'
)
union
(
select
inst_id,
decode(substr(lower(n),1,5),
'event','event',
'_fix_','_fix_control',
lower(n)) name,
decode(substr(lower(n),1,5),
'event',substr(n,7),
'_fix_',substr(n,14),
' ') subname,
' TRUE ' sort_string
from
(
select
inst_id,
'*** INFORMATION '||lpad(rownum,2)||
' ***' n
from
gv$mystat
where
rownum < 11
union
(
select
inst_id,
n
from
(
select '_B_TREE_BITMAP_PLANS' n from dual
union ( select '_BLOOM_FILTER_ENABLED' n from dual )
union ( select '_DB_BLOCK_NUMA' n from dual )
union ( select '_ENABLE_NUMA_OPTIMIZATION' n from dual )
union ( select '_FIRST_SPARE_PARAMETER' n from dual )
union ( select '_FIX_CONTROL 4728348' n from dual )
union ( select '_FIX_CONTROL 5705630' n from dual )
union ( select '_FIX_CONTROL 5765456' n from dual )
union ( select '_FIX_CONTROL 6120483' n from dual )
union ( select '_FIX_CONTROL 6221403' n from dual )
union ( select '_FIX_CONTROL 6329318' n from dual )
union ( select '_FIX_CONTROL 6430500' n from dual )
union ( select '_FIX_CONTROL 6440977' n from dual )
union ( select '_FIX_CONTROL 6626018' n from dual )
union ( select '_FIX_CONTROL 6660162' n from dual )
union ( select '_FIX_CONTROL 6670551' n from dual )
union ( select '_FIX_CONTROL 6972291' n from dual )
union ( select '_FIX_CONTROL 7325597' n from dual )
union ( select '_FIX_CONTROL 7692248' n from dual )
union ( select '_INDEX_JOIN_ENABLED' n from dual )
union ( select '_IN_MEMORY_UNDO' n from dual )
union ( select '_OPTIM_PEEK_USER_BINDS' n from dual )
union ( select '_OPTIMIZER_BETTER_INLIST_COSTING' n from dual )
union ( select '_OPTIMIZER_MJC_ENABLED' n from dual )
union ( select '_PUSH_JOIN_UNION_VIEW' n from dual )
union ( select '_SORT_ELIMINATION_COST_RATIO' n from dual )
union ( select '_TABLE_LOOKUP_PREFETCH_SIZE' n from dual )
union ( select 'EVENT 10027' n from dual )
union ( select 'EVENT 10028' n from dual )
union ( select 'EVENT 10049' n from dual )
union ( select 'EVENT 10091' n from dual )
union ( select 'EVENT 10142' n from dual )
union ( select 'EVENT 10162' n from dual )
union ( select 'EVENT 10183' n from dual )
union ( select 'EVENT 10191' n from dual )
union ( select 'EVENT 10411' n from dual )
union ( select 'EVENT 10629' n from dual )
union ( select 'EVENT 10891' n from dual )
union ( select 'EVENT 14532' n from dual )
union ( select 'EVENT 38068' n from dual )
union ( select 'EVENT 38085' n from dual )
union ( select 'EVENT 38087' n from dual )
union ( select 'EVENT 44951' n from dual )
),
gv$instance)
) underscore
)
union
(
select
inst_id,
'event' name,
substr(trim(translate(value,
chr(10)||chr(13)||chr(9),' ')),1,5) subname,
concat('FALSE',trim(translate(value,
chr(10)||chr(13)||chr(9),' '))) sort_string
from
(
select
vparam.inst_id,
substr(':'||vparam.value, instr(':'||vparam.value,':',1,vcnt.cnt)+1,
decode(instr(':'||vparam.value,':',1,vcnt.cnt+1),0,
length(':'||vparam.value),instr(':'||vparam.value,':',1,vcnt.cnt+1)-1)-
decode(instr(':'||vparam.value,':',1,vcnt.cnt ),0,
length(':'||vparam.value),instr(':'||vparam.value,':',1,vcnt.cnt))) value
from
gv$parameter2 vparam,
(select rownum cnt from gv$parameter2 where rownum <= 20) vcnt
where
vparam.name='event'
)
where
value is not null
)
)
group by
inst_id,
name,
subname
) pis
where
pis.inst_id=pshould.inst_id(+) and
pis.name=pshould.name(+) and
pis.subname=pshould.subname(+)
)
order by
inst_id,
id,
name;



After This execute and you will be provided with current and expected value of DB parameters.

CHEERS.............


Regards,
Gagan Deep Kaushal

4 comments:

amitlal said...

Gagan,
Do you hold any script for 11g to check, we are upgraded to 11g performance is bad in BW here.
Let me know if you able to get.

Anonymous said...

Wouldn't be better that YOU provide the source of that script?
Lets say, indicate that you copy it from the SAP Note 1171650 "Automated Oracle DB parameter check"
That this check is updated frequently by SAP as the parameter recommendations change with the version and patches released (and "problems" found

Anonymous said...

Awesome blog. You always share the most complex scripts and tricky code that are not easy to build and construct. In the above article you have shared a script to calculate the performance parameter in SAP/Oracle. Thanks.
sap upgrade project

Anonymous said...

Dangerous stuff .. as well as previously mentioned that you did not mention the OSS Note number , you also didn't highlight that its written for OLTP and for OLAP you need to make changes to the script. You must read the note to understand what the script returns as its based on SAP Standards, which may not be the best for large scale SAP landscapes and you may have customized parameters.

A NOTE>>>

The articles here are based on my own experiences in using and learning BASIS . All resources related would be mentioned in every article.

Feel free to gave critics, correction, or encouragement. Any comment or question are welcomed.

Cheers,
Gagan Deep Kushal
zk.gagan@gmail.com