适用范围

数据库的默认参数对于大型系统来说,还远远不够。需要调整和设置如下的参数,保证系统稳定性、性能、可靠性等。

此文档主要基于云和恩墨客户众多客户案例和产品环境,总结提炼的Oracle 19c初始化参数设置。

参数详情

参数名称

参数值

参数含义

额外说明

_optimizer_adaptive_cursor_sharing

false

控制自适应游标共享功能是否开启

关闭adaptive cursor sharing,避免Oracle根据绑定变量的值改变执行计划,从而造成性能的波动

_optimizer_extended_cursor_sharing

none

是否允许优化器使用扩展游标共享

避免出现cursor sharing导致的子游标过多的问题

_optimizer_extended_cursor_sharing_rel

none

是否允许优化器针对关系对象使用扩展游标共享

避免出现cursor sharing导致的子游标过多的问题

_optimizer_use_feedback

false

是否开启优化器使用执行时的统计信息反馈功能

避免根据返回结果确定cardinality,该功能会造成执行计划不稳定易导致性能问题

_optimizer_gather_feedback

false

optimizer gather feedback

 

_gc_policy_time

0

控制oracle DRM功能是否开启

关闭RAC的DRM(dynamic remastering)特性,避免频繁的DRM使系统性能不稳定、严重的时候使数据库挂起。同时也关闭Read-mostly Locking新特性,这个特性目前会触发大量的BUG,严重时使数据库实例宕掉

_gc_undo_affinity

false

控制Oracle是否对于UNDO数据块开启DRM功能

关闭RAC的DRM(dynamic remastering)特性,避免频繁的DRM使系统性能不稳定、严重的时候使数据库挂起

_undo_autotune

false

是否开启UNDO的自动调整功能

关闭UNDO表空间的自动调整功能,避免出现UNDO表空间利用率过高或者UNDO段争用的问题

_use_adaptive_log_file_sync

false

是否启用自适应log file sync工作模式

关闭11203开始引入的LGWR自适应工作方式,这种方式存在bug,会导致前台log file sync等待延迟远远高于日志写的延迟,并引发严重的性能问题

_optimizer_mjc_enabled

false

是否优化器启用MERGE JOIN CARTESIAN功能

避免优化器在评估驱动表很小的情况下,选择MERGE JOIN CARTESIAN执行计划,如果出现评估错误或统计信息不准确的情况,笛卡尔积的出现将导致执行计划完全不可接受,出现严重的性能问题

_b_tree_bitmap_plans

false

是否允许优化器启用BITMAP索引转换功能

避免优化器考虑将BTREE索引转换为BITMAP索引,通过BITMAP索引的AND/OR操作后在转换为BTREE的ROWID方式,此种执行计划对于OLTP环境而言不应该出现,且Oracle难以准确的评估转换后的SQL性能

_partition_large_extents

false

是否针对分区使用大的扩展

避免分区表使用大的扩展,如果空分区较多将会导致严重的空间浪费

_index_partition_large_extents

false

是否针对索引分区使用大的扩展

避免分区索引使用大的扩展,如果空分区较多将会导致严重的空间浪费

audit_trail

none

开启或关闭Oracle的审计功能。


支持的值:


none或false: 关闭数据库审计


os: 开启数据库审计,审计记录写到操作系统的审计目录下


db或true:开启数据库审计,审计记录写入数据库审计表中(SYS.AUD$).


db_extended: 开启数据库审计,审计记录写入数据库审计表中(SYS.AUD$)。此外,将SQLBIND 和SQLTEXT的信息写入到SYS.AUD$ 表中.


关闭存储在数据库中的审计功能,避免造成SYSTEM表空间或AUD$表的快速增长

parallel_force_local

ture

是否强制并行子进程仅在并行语句发起节点启动

对于RAC环境,将并行进程完全在当前实例启动,避免并行进程启动到多个实例,从而造成的进程间数据交互导致的性能问题

deferred_segment_creation

false

是否开启延迟段创建的功能

关闭延迟段创建特性,该特性主要目的是为了避免空段造成的空间浪费,但是可能引发很多bug

_cursor_obsolete_threshold

200

一个父游标下允许保留多少个子游标

设置为200,避免单个父游标下子游标过多造成的cursor mutex等待

_optimizer_cartesian_enabled

false

关闭优化器通过笛卡尔积方式进行优化

优化器可能会选择返回结果为1的表与其他表进行笛卡尔积,从而达到优化执行计划的目的,但是如果统计信息不准确,可能会导致严重的性能问题,因此关闭这个优化设置

control_file_record_keep_time

31

CONTROL_FILE_RECORD_KEEP_TIME设置控制文件中记录被重用的最小保留时间。当需要记录新的信息,且最老的记录还无法重用时,控制文件会进行扩展. 如果参数设置为0,则控制文件不会扩展,里面记录信息的空间根据需要会进行覆盖重用。

这个参数设置的是控制文件中循环使用的部分,比如归档记录和备份记录。而数据文件,表空间以及REDO线程配置等信息,不会被重用和覆盖,也不受这个参数的影响。

默认值:7 (days)

范围: 0 to 365 (days)

设置31天保证归档和备份信息不会过早被覆盖

result_cache_max_size

0

RESULT_CACHE_MAX_SIZE指定SGA中用于Result Cache的最大内存空间。参数值大于0时,会取整到下一个32K的整数倍。如果设置为0,则关闭Result Cache功能。


在RAC环境中,可以在所有节点设置0值关闭该功能,或者所有节点设置非0值,启用该功能。如果在某些节点启用,某些节点关闭则可能导致不正确的结果。

对于OLTP系统,关闭Result Cache功能

_datafile_write_errors_crash_instance

false

datafile write errors crash instance

数据文件发生写错误是否导致实例崩溃

_clusterwide_global_transactions

false

enable/disable clusterwide global transactions

当_clusterwide_global_transactions=false时,ORACLE会将这些本地事务当做单独的事务通过多阶段提交协调处理。

_keep_remote_column_size

true

remote column size does not get modified

避免通过DBLINK创建对象Oracle根据字符集长度的差异自动扩展列的长度

_cleanup_rollback_entries

>=2000

no. of undo entries to apply per transaction cleanup

设置较大的值可以加快死事务回滚的速度

_rollback_segment_count

2000

实例上设置的回滚段数量

对于OLTP系统,设置较高的回滚段数量可以降低回滚段争用

_sql_plan_directive_mgmt_control

0

controls internal SQL Plan Directive management activities

 

autotask_max_active_pdbs

4

控制同一时间窗口最大同时执行自动任务的pdb个数

 

awr_pdb_autoflush_enabled

true

指定是否为CDB中的所有PDB或CDB中的单个PDB启用或禁用自动工作负载存储库(AWR)快照

 

enable_ddl_logging

true

是否开启记录DDL日志

 

job_queue_processes

300

最大job队列进程个数

 

_ash_size

250M

To set the size of the in-memory Active Session History buffers

 

_lm_tickets

5000

GES messaging tickets

 

_optim_peek_user_binds

false

enable peeking of user binds

 

_report_capture_cycle_time

0

Time (in sec) between two cycles of report capture daemon

 

_dlm_stats_collect

0

DLM statistics collection(0 = disable, 1 = enable (default))

 

_drop_stat_segment

1

drop ilm statistics segment

 

_cursor_reload_failure_threshold

36

Number of failed reloads before marking cursor unusable

 

_sys_logon_delay

0

The failed logon delay for the database instance

 

_use_single_log_writer

true

Use a single process for redo log writing

 

_serial_direct_read

NEVER

从oracle 11g开始,有个新特性(自动serial direct path read特性),在进行全表扫描的时候会产生direct path read等待事件,可以设置参数“_serial_direct_read”的值为“NEVER” ,禁用这个新特性。出现这个等待事件时,一般物理IO都比较大。一般情况下,新装的11g、12c数据库,建议关闭掉这个新特性。

参考Higher ‘direct path read’ Waits in 11g when Compared to 10g (文档 ID 793845.1)

_part_access_version_by_number

FALSE

这个bug仅和分区表相关,在TRUNCATE操作之后访问分区的对象可能会报ORA-8103 (or ORA-600)错误。这个bug也体现在对分区表的查询可能给出错误的结果集。

Bug 19689979 - ORA-8103 or ORA-600 [ktecgsc:kcbz_objdchk] or Wrong Results on PARTITION table after TRUNCATE in 11.2.0.4 or above (文档 ID 19689979.8)

_lm_sync_timeout

1200

设置这个参数是防止重构时和DRM超时

“大于100G SGA的情况下,需要设置。 参考文档:Best Practices and Recommendations for RAC databases with SGA size over 100GB (文档 ID 1619155.1)”

LOG_ARCHIVE_MAX_PROCESSES

4

设置同时启动的最大归档进程数量

该默认值根据CPU数量生成,默认值太大,当standby产生大量gap时容易造成网络传输高峰导致网络带宽用满,从而导致正常业务受到影响