Oracle 19c数据库参数最佳实践参考说明
-
optimizer_mode: 尽量使用自动优化器模式 (
optimizer_mode=ALL_ROWS
),除非有特定需求需要手动调整。 -
compatible: 设置为当前数据库版本 (
compatible=19.0.0.0.0
),以确保向后兼容性。 -
pga_aggregate_target: 根据实际内存资源和负载情况来调整,以控制排序、哈希操作等内存密集型操作。
-
sga_target: 根据实际内存资源和负载情况来调整,用于控制共享池、缓冲池等。
-
db_block_size: 根据应用需求和I/O配置选择合适的块大小。
-
filesystemio_options: 对于大多数现代操作系统,建议将其设置为
setall
,以获得更好的I/O性能。 -
log_buffer: 根据日志写入频率和事务活动来调整,以确保足够的空间来保存日志记录。
-
open_cursors: 根据应用的并发连接数来调整,以确保不会出现ORA-1000错误。
-
processes: 根据应用的并发连接数和操作系统资源来调整,以确保足够的进程可以服务于连接。
-
sessions: 设置为允许的最大会话数,根据实际需求来调整。
-
cursor_sharing: 除非有特定的需求,否则保持默认值
cursor_sharing=EXACT
。 -
optimizer_dynamic_sampling: 对于复杂查询,可以考虑适度提高动态采样级别。
-
optimizer_index_cost_adj 和 optimizer_index_caching: 在特定情况下可以用于调整索引访问成本和缓存。
-
db_writer_processes: 根据I/O配置和活动的并发用户来调整,以确保适当的写入进程。
-
db_file_multiblock_read_count: 根据系统的I/O性能来调整,以最大化读取效率。
-
undo_retention: 根据应用需求和事务特性来调整,以确保足够的UNDO保留时间。
-
optimizer_features_enable: 用于控制是否启用特定版本的优化功能。
-
parallel_max_servers: 根据实际需求和系统资源来调整,以控制并行查询的最大数量。
-
memory_target: 在允许的情况下,可以考虑使用
memory_target
参数来管理SGA和PGA的内存。 -
local_listener 和 remote_listener: 配置监听器信息以确保数据库可以正常连接。
-
audit_trail: 根据安全要求来启用审计功能。
-
pga_aggregate_limit: 设置一个保底值,以避免个别查询耗尽PGA内存。
-
optimizer_adaptive_features: 控制是否启用自适应优化特性。
-
plsql_optimize_level: 根据PL/SQL代码的特性来调整。
-
pga_advice: 根据PGA的使用情况来获取建议,以便调整
pga_aggregate_target
。 -
db_recovery_file_dest_size: 设置Flash Recovery Area (FRA) 的大小。
-
db_recovery_file_dest: 配置FRA的目录路径。
-
log_archive_dest_1 (2, 3, …): 配置归档日志目的地。
-
compatible: 设置为当前数据库版本,以确保向后兼容性。
-
optimizer_adaptive_reporting_only: 如果需要关闭自适应优化特性,则可以将其设置为TRUE。
-
optimizer_use_sql_plan_baselines: 控制是否使用SQL执行计划基线。
-
optimizer_capture_sql_plan_baselines: 控制是否捕获SQL执行计划基线。
-
query_rewrite_enabled: 控制查询重写功能是否启用。
-
db_securefile: 对于大型LOB对象,可以考虑启用SecureFile LOBs。
-
max_dump_file_size: 设置跟踪和日志文件的最大大小。
-
parallel_threads_per_cpu: 根据系统的CPU数量来调整,以控制并行查询的线程数。
-
optimizer_index_caching: 根据实际情况来调整索引缓存。
-
optimizer_index_cost_adj: 根据实际情况来调整索引访问成本。
-
optimizer_secure_view_merging: 控制是否安全地合并视图。
-
cursor_space_for_time: 根据需要,可以将其设置为TRUE以避免因超时而导致的游标关闭。
-
_optimizer_batch_table_access_by_rowid: 根据特定查询优化需求来调整。
-
_optimizer_extended_cursor_sharing_rel: 用于控制游标共享行为。
-
_optimizer_nlj_hj_adaptive_join: 控制自适应连接方法。
-
_optimizer_use_feedback: 控制是否使用反馈统计信息。
-
_fast_full_scan_enabled: 用于启用或禁用快速全表扫描。
-
_always_semi_join: 控制半连接的执行。
-
_pga_max_size: 设置PGA的最大大小,如果需要手动控制。
-
_optimizer_null_accepting_semijoin: 控制是否允许空值参与半连接。
-
_fix_control: 用于启用或禁用特定的数据库补丁。
-
_use_adaptive_log_file_sync: 控制是否使用自适应日志文件同步。
-
_small_table_threshold: 用于指定“小表”的阈值。
-
_cursor_obsolete_threshold: 控制游标变为过时状态的阈值。
-
_cursor_space_for_time: 控制是否为游标分配足够的空间以避免超时。
-
_pga_max_size: 控制PGA的最大大小。
-
_smm_advice_enabled: 控制是否启用Shared Memory Manager (SMM) 的建议功能。
-
_optimizer_dsdir_usage_control: 控制是否使用数据服务器目录(DSD)来加速查询。
-
_optimizer_use_invisible_indexes: 控制是否使用不可见索引。
-
_cursor_plan_enabled: 控制是否使用游标计划。
-
_serial_direct_read: 控制是否使用直接读取。
-
_db_aging_hot_criteria: 控制哪些对象将被认为是“热对象”。
-
_db_aging_cool_threshold: 控制“冷对象”的阈值。
-
_db_aging_freeze_cr: 控制在何时将对象冻结。
-
_db_file_noncontig_mblock_read_count: 控制非连续多块读取的次数。
-
_fast_full_scan_enabled: 控制是否启用快速全表扫描。
-
_use_hidden_partitions: 控制是否使用隐藏分区。
-
_bloom_minimal_huffman: 控制布隆过滤器压缩的最小哈夫曼值。
-
_cursor_auto_flush: 控制是否自动刷新游标。
-
_cursor_obsolete_threshold: 控制游标变为过时状态的阈值。
-
_plsql_optimize_level: 根据PL/SQL代码的特性来调整。
-
_kks_use_mutex_pin: 控制是否使用互斥锁来固定共享池中的游标。
-
_optimizer_undo_cost_change: 控制事务回滚成本的变化。
-
_optim_peek_user_binds: 控制是否启用用户绑定变量的预览。
-
_index_join_enabled: 控制是否启用索引连接。
-
_optimizer_multi_table_outerjoin: 控制多表外连接的执行。
-
_optimizer_use_old_cardinality: 控制是否使用旧的基数估算器。
-
_optimizer_unnest_disjunctive_subq: 控制非连续子查询的展开。
-
_fast_full_scan_enabled: 控制是否启用快速全表扫描。
-
_fix_control: 用于启用或禁用特定的数据库补丁。
-
_smm_advice_enabled: 控制是否启用Shared Memory Manager (SMM) 的建议功能。
-
_optimizer_use_invisible_indexes: 控制是否使用不可见索引。
-
_cursor_plan_enabled: 控制是否使用游标计划。
-
_bloom_minimal_huffman: 控制布隆过滤器压缩的最小哈夫曼值。
-
_cursor_auto_flush: 控制是否自动刷新游标。
-
_cursor_obsolete_threshold: 控制游标变为过时状态的阈值。
-
_plsql_optimize_level: 根据PL/SQL代码的特性来调整。
-
_kks_use_mutex_pin: 控制是否使用互斥锁来固定共享池中的游标。
-
_optimizer_undo_cost_change: 控制事务回滚成本的变化。
-
_optim_peek_user_binds: 控制是否启用用户绑定变量的预览。
-
_index_join_enabled: 控制是否启用索引连接。
-
_optimizer_multi_table_outerjoin: 控制多表外连接的执行。
-
_optimizer_use_old_cardinality: 控制是否使用旧的基数估算器。
-
_optimizer_unnest_disjunctive_subq: 控制非连续子查询的展开。
-
_first_k_rows_dynamic_proration: 控制前K行的动态优先级。
-
_optimizer_auto_degree: 控制自动并行度。
-
_optimizer_max_permutations: 控制查询优化器的最大排列数。
-
_optimizer_inmemory_aware: 控制是否考虑In-Memory列存储。
-
_optimizer_partial_join_eval: 控制部分连接的评估。
-
_optimizer_extend_jppd_viewtypes: 控制扩展视图类型。
-
_max_io_size: 控制最大I/O大小。
-
_db_time_per_usec: 控制每微秒的数据库时间。
请注意,这些参数的设置需要根据具体的环境、应用和负载情况来进行调整,建议在变更前先在测试环境中进行充分测试,以确保不会引发意外的问题。同时,一些参数(以_
开头的)是隐藏参数,使用时需要格外小心,并在Oracle官方文档和社区的指导下进行设置。