Tuesday, June 4, 2019

Init parameter in 12c database

Database Initialization Parameters for Oracle E-Business Suite Release 12 (Doc ID 396009.1) has recommendations on parameter values.  Below lists init parameters that are not set as the default to support a R12.1.3 instance with about 300 users at peak time.

NAMEVALUE
_b_tree_bitmap_plansFALSE
_fast_full_scan_enabledFALSE
_like_with_bind_as_equalityTRUE
_optimizer_autostats_jobFALSE
_sort_elimination_cost_ratio5
_sqlexec_progression_cost2147483647
_system_trig_enabledTRUE
_use_single_log_writerTRUE
aq_tm_processes4
audit_sys_operationsTRUE
audit_trailDB (default is NONE)
compatible12.1.0
control_file_record_keep_time30
control_files/path/to1/ctrl01.dbf, /path/to2/ctrl02.dbf, /path/to3/ctrl03.dbf
cursor_sharingEXACT
db_block_checkingFALSE
db_block_checksumTRUE
db_block_size8192
db_cache_size5368709120 (or, 5G)
db_files1000
db_nameEBSPROD
diagnostic_dest/path/to/db_ebsprod/admin/EBSPROD_ebsdb1p
dml_locks10000
filesystemio_optionssetall
java_jit_enabledFALSE
job_queue_processes20
local_listener(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EBSPROD_ipc)))
log_archive_dest/path/to/EBSPROD/arch/arch.log
log_buffer10485760 (or, 10M)
log_checkpoint_interval100000
log_checkpoint_timeout1200
log_checkpoints_to_alertTRUE
max_dump_file_size10000
memory_max_target25769803776 (or, 24G)
memory_target25769803776
nls_compbinary
nls_date_formatDD-MON-RR
nls_languageAMERICAN
nls_length_semanticsBYTE
nls_numeric_characters.,
nls_sortbinary
nls_territoryAMERICA
olap_page_pool_size4194304 (or, 4M)
open_cursors4096
optimizer_adaptive_features FALSE
optimizer_secure_view_mergingFALSE
os_authent_prefixext$
parallel_max_servers64
parallel_min_servers0
parallel_servers_target64
parallel_threads_per_cpu2
pga_aggregate_limit0
pga_aggregate_target0 (this is the default. Could be set to 1G)
plsql_code_typeINTERPRETED
plsql_optimize_level0
processes3000
query_rewrite_enabledtrue
recovery_parallelism1
recyclebinON
remote_login_passwordfileNONE
remote_os_authentFALSE
sec_case_sensitive_logonFALSE
sec_protocol_error_further_action  drop,3
session_cached_cursors500
session_max_open_files100
sessions4536
sga_max_size25769803776 (or, 24G)
shared_pool_reserved_size214748364
shared_pool_size4294967296 (or, 4G)
sql92_securityTRUE
temp_undo_enabledTRUE
timed_statisticsTRUE
undo_managementAUTO
undo_retention43200
undo_tablespaceAPPS_UNDO_TBS
utl_file_dir/path/to/EBSPROD/utl_dir, /usr/tmp
workarea_size_policyAUTO

The database server is an IBM LPAR configuration. 4 Oracle databases on it share its resources of 6 cores CPUs and 92 GB memory, and it is all virtual.

parallel_max_servers =  Maximum value should be 2 X #of CPUs.
This parameter depends on the number of cores. It uses logical CPUs and 5 cores (4-way SMP).  The SMP threads don’t really replicate a full core.

optimizer_adaptive_features = FALSE
If it is set to true, queries may run OK on a first run, but poorly on subsequent runs. Oracle will try to adapt the plans using cardinality feedback and other features that can be good, but can also cause issues.

parallel_threads_per_cpu = 2
Because the core CPU are 4-way SMP, it shows 4x more CPUs than it really has. If it set to a higher value (say, 16), Oracle will keep overallocating the CPU resources for parallel queries and spinning up too many parallel threads for the memory and CPU that it has.