| 类 | 名称 | 建议 | |
|---|---|---|---|
| 内存 | 禁用AMM内存管理 | 条件 | 版本为11.1以上 |
| 建议 | alter system set sga_max_size=XX scope=spfile sid=’‘; alter system set sga_target=XX scope=spfile sid=’‘; alter system set pga_aggregate_target=XX scope=spfile sid=’‘; alter system set memory_target=0 scope=spfile sid=’‘; alter system set memory_max_target=0 scope=spfile sid=’‘; alter system reset memory_max_target scope=spfile sid=’‘; |
||
| 说明 | AMM与Huge Page不兼容,AMM自动调整可能导致内存波动大。 | ||
| 文档 | HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux (ID 749851.1) | ||
| 内存 | 为ASSM配置各内存池最小值 | 条件 | 版本为10.2以上 |
| 建议 | 参考最近AWR报告,向上取整配置Shared Pool大小,并且确保其至少为SGA大小的15%。 DB Cache大小为SGA大小减去Shared Pool大小和预留动态空间(SGA大小的10%或2GB)。 alter system set db_cache_size=xx; alter system set shared_pool_size=xx; |
||
| 说明 | 防止因频繁自动调整出现ORA-4031错误。 | ||
| 文档 | Common Cause for ORA-4031 in 10gR2, Excess “KGH: NO ACCESS” Memory Allocation ( ID 801787.1) Unpublished Bug 10204505 - SGA AUTOTUNE CAUSING LOTS OF ROW CACHE MISSES, LIBRARY CACHE RELOADS AND PARSING |
||
| 内存 | SGA自动调整间隔设置 | 条件 | 版本为10.2以上,涉及OLTP交易数据库。 |
| 建议 | 配置允许ASSM自动调整的时间间隔为999秒 alter system set “_memory_broker_stat_interval”=999; |
||
| 说明 | 防止因频繁自动调整出现ORA-4031错误。 | ||
| 文档 | Bug 6528336 - Automatic SGA may repeatedly shrink / grow the shared pool Bug 7189722 - Frequent grow/shrink SGA resize operations Bug 7189722 is fixed in 10.2.0.5 and 11.2.0.1. Bug 6528336 is fixed in 10.2.0.4 and 11.2.0.1. |
||
| 通用 | 关闭初始化extent的延迟创建 | 条件 | 版本为11.1以上 |
| 建议 | alter system set deferred_segment_creation=false scope=spfile sid=’*’; | ||
| 说明 | 如果表未曾插入记录,默认不会生成SEGMENT,EXPDP时候将出现报错 | ||
| 文档 | Deferred_segment_creation Behavior When Importing in 11g a Dump Created in 10g ( ID 1637985.1) | ||
| 通用 | 设置dump文件大小上限 | 条件 | 版本9.0以上 |
| 建议 | alter system set max_dump_file_size=’1024M’ scope=spfile sid=’*’; | ||
| 说明 | 避免异常时出现超过几十个G的trace,将文件系统撑爆。 | ||
| 文档 | 无 | ||
| 通用 | DBLINK往低版本插入数 | 条件 | 版本12.2,存在DBLINK的环境 |
| 建议 | alter system set “_qkslvc_extended_bind_sz”=0 scope=both; | ||
| 说明 | DBLINK往低版本数据库插入数据,如果最后一个字段不是VARCHAR2,可能报错ORA-01483或者ORA-01461。 | ||
| 文档 | OCI Application Fails With ORA-01483/ORA-01461 When Inserting VARCHAR2 Field From 12.2 Database Using Database Link To Lower Database Version. (文档 ID 2309285.1) | ||
| 通用 | KESWXCURNB- ROWS报错 |
条件 | 版本12.2 |
| 建议 | alter system set “_optimizer_use_feedback”=false scope=both; alter system set “_optimizer_gather_feedback”=false scope=both; alter system set “_iut_enable”=false scope=both; |
||
| 说明 | 避免错误Bug 2669342 ORA-7445 [KESWXCURNBROWS+61] IN TRANSFORMED SQL | ||
| 文档 | 无 | ||
| 通用 | Disable_OCM | 条件 | 版本11.2.0.3 |
| 建议 | exec dbms_scheduler.disable(‘ORACLE_OCM.MGMT_CONFIG_JOB’); exec dbms_scheduler.disable(‘ORACLE_OCM.MGMT_STATS_CONFIG_JOB’); |
||
| 说明 | Alert日志文件中会频繁出现报错 | ||
| 文档 | 无 | ||
| 稳定 | 死事务回滚调整 | 条件 | 可能涉及到大事务回滚的数据库。 |
| 建议 | alter system set fast_start_parallel_rollback=low; alter system set recovery_parallelism=10 scope=spfile; alter system set “_cleanup_rollback_entries”=10000 scope=spfile; |
||
| 说明 | 当事务回滚时候,将生成大量并行回滚子进程,可能耗尽存储IO性能, | ||
| 文档 | 无 | ||
| 稳定 | 避免索引根节点分裂时间过长导致交易不稳定 | 条件 | 高并发OLTP生产数据库 |
| 建议 | alter system set event ‘43822 trace name context forever,level 1’ sid=’*’ scope=spfile; | ||
| 说明 | 为防止索引根节点分裂时间过长,需要设置事件43822,则索引根节点分裂的时候不会在空块寻找上花费很多时间,而是分配新的空块。 | ||
| 文档 | |||
| 稳定 | 文件写入失败实例不Crash | 条件 | 版本11.2.0.2以上,涉及可用性等级较高的业务 |
| 建议 | alter system set “_datafile_write_errors_crash_instance”=false scope=spfile; | ||
| 说明 | 11.2.0.2开始,设置写入数据文件/临时文件错误不会导致instance crash。 | ||
| 文档 | 无 | ||
| 稳定 | 禁用SQL自动优化 | 条件 | 版本为11.2以上 |
| 建议 | 禁用“Automatic SQL Tuning Advisor” exec dbms_auto_task_admin.disable(client_name => ‘sql tuning advisor’,operation => NULL,window_name => NULL); |
||
| 说明 | 该任务在指定时间窗口内模拟执行高消耗SQL语句,并且可能Library Cache Latch问题。 | ||
| 文档 | 无 | ||
| 稳定 | 禁用空间自动优化 | 条件 | 版本为11.2以上 |
| 建议 | 禁用“Auto Space Advisor” exec dbms_auto_task_admin.disable(client_name => ‘auto space advisor’,operation => NULL,window_name => NULL); |
||
| 说明 | 可能导致性能问题 | ||
| 文档 | 无 | ||
| 稳定 | 禁用 Optimizer Statistics Advisor Task |
条件 | 版本12.1上 |
| 建议 | DECLARE filter1 CLOB; BEGIN filter1 := DBMS_STATS.CONFIGURE_ADVISOR_RULE_FILTER(‘AUTO_STATS_ADVISOR_TASK’,’EXECUTE’,NULL,’DISABLE’); END; / |
||
| 说明 | 可能导致SYSAUX表空间中SM/ADVISOR组件消耗过大 | ||
| 文档 | SYSAUX Tablespace Grows Rapidly After Upgrading Database to 12.2.0.1 Due To Statistics Advisor (文档 ID 2305512.1) | ||
| 稳定 | 进程优先级 | 条件 | HP-UX IA64平台,版本8i以上 |
| 建议 | 参数hpux_sched_noage调整范围:154 to 255 (For HP-UX 11.0) 178 to 255 (For HP-UX 11i) SQL> alter system set “hpux_sched_noage”=178; |
||
| 说明 | 防止数据库进行优先级过低 | ||
| 文档 | 无 | ||
| 稳定 | 关闭RAC全局事务支持 | 条件 | RAC环境,使用了OGG软件。 |
| 建议 | alter system set “_clusterwide_global_transactions”=false sid=’*’ scope=spfile; | ||
| 说明 | OGG不支持XA。 | ||
| 文档 | |||
| 稳定 | LMS进行优先级 | 条件 | HP-UX IA64平台,版本8i以上 |
| 建议 | 参数_os_sched_high_priority,范围为2到31: SQL> alter system set “_os_sched_high_priority”=2; |
||
| 说明 | 防止LMS进程优先级过低 | ||
| 文档 | 无 | ||
| 稳定 | 大SGA下DRM稳定参数 | 条件 | 版本为10.2以上,SGA大小超过100GB并且开启DRM的RAC环境 |
| 建议 | alter system set “_lm_sync_timeout”=1200 scope=spfile; alter system set “_lm_tickets”=5000 scope=spfile; (non-rolling when decreasing) alter system set “_gc_policy_minimum”=15000 scope=spfile; (non-rolling) |
||
| 说明 | SGA超过100GB,配置DRM的Ticket数目和超时时间。 | ||
| 文档 | Best Practices and Recommendations for RAC databases with SGA size over 100GB ( ID 1619155.1) | ||
| 稳定 | 加大LMS进程数目 | 条件 | 版本为10.2以上,SGA大小超过100GB的RAC环境 |
| 建议 | $ ps -ef|grep lms 查看每个节点有多少个LMS进程,并将其乘以2作为新参数值。 alter system set gcs_server_processes=xx scope=spfile; |
||
| 说明 | SGA超过100GB,将LMS进程的数目翻倍。 | ||
| 文档 | Best Practices and Recommendations for RAC databases with SGA size over 100GB ( ID 1619155.1) | ||
| 性能 | AWR收集间隔 | 条件 | 版本为10.2以上 |
| 建议 | AWR收集间隔修改为30分钟,保留期限为30天(确保SYSAUX表空间至少为8GB) exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>302460); |
||
| 说明 | 默认10.2保留7天,11.2保留8天,采集间隔1小时。 保留更长和更精确的性能数据库,方便出现问题后的原因分析。 |
||
| 文档 | 无 | ||
| 性能 | 恢复LGWR的post/wait通知方式 | 条件 | 版本为11.2.0.3至18.1.0,涉及OLTP交易数据库, |
| 建议 | alter system set “_use_adaptive_log_file_sync”=false sid=’*’ scope=spfile; | ||
| 说明 | 11.2.0.3版本里面,LGWR会自动选择两种方法来通知其他进程commit已经写入:post/wait、polling。前者LGWR负担较重,后者等待时间会过长,特别是高负载的OLTP系统中。在10g及之前的版本中是post/wait方式,将这个参数设置为false恢复到以前版本方式。 | ||
| 文档 | Bug 27143321 - LGWR May Not Switch Back to post/wait Mode (文档 ID 27143321.8) | ||
| 性能 | 禁用LGWR并行 | 条件 | 12.1以上版本,OLTP业务。 |
| 建议 | alter system set “_use_single_log_writer” = TRUE scope=spfile sid=’‘; alter system set “_max_outstanding_log_writes”=1 scope=spfile sid=’‘; |
||
| 说明 | 导致LGWR写入的IOPS次数高,影响存储性能。 | ||
| 文档 | Error ORA-742: Log Read Detects Lost Write In Alert Log (文档 ID 2354255.1) | ||
| 性能 | 关闭自动串行直接路径读 | 条件 | 版本11.2以上,SQL代码质量较差,存在频繁全表扫描环境 |
| 建议 | alter system set event=’10949 trace name context forever,level 1’ sid=’*’ scope=spfile; | ||
| 说明 | 10949事件用于关闭11g的自动serial direct path read特性。 避免出现过多的直接路径读,消耗过多的IO资源。 |
||
| 文档 | 无 | ||
| 性能 | 关闭延迟用户验证 | 条件 | 版本11.2以上,业务密码需要定期修改环境 |
| 建议 | alter system set event=’28401 trace name context forever,level 1’ sid=’*’ scope=spfile; alter system set “_sys_logon_delay”=0 scope=spfile; —12.2 |
||
| 说明 | 28401事件用于关闭11g数据库中用户持续输入错误密码时的延迟用户验证特性,避免用户持续输入错误密码时产生大量的row cache lock或library cache lock等待,严重时使数据库完全不能登录。 | ||
| 文档 | After 3 successive failures a sleep delay is introduced starting at 1 second and extending to 10 seconds max. | ||
| 性能 | 调整默认分区大小 | 条件 | 版本11.2以上 |
| 建议 | alter system set “_partition_large_extents”=false scope=spfile sid=’*’; | ||
| 说明 | 默认分区大小为8M,如果提前创建了很多未来的分区时,即使是空分区,表的尺寸也非常大,出现全分区扫描时,逻辑备份或SQL性能低下。 | ||
| 文档 | 无 | ||
| 性能 | 关闭Result_cache | 条件 | 版本11.2以上,OLTP或数据修改较多的环境 |
| 建议 | alter system set result_cache_max_size=0 scope=spfile sid=’*’; | ||
| 说明 | 如果数据修改较多,维护Result Cache需要较大成本。 | ||
| 文档 | 无 | ||
| 性能 | 关闭DRM | 条件 | 版本10.2以上,RAC环境 |
| 建议 | alter system set “_gc_policy_time”=0 sid=’‘ scope=spfile; alter system set “_gc_undo_affinity”=false sid=’‘ scope=spfile; 执行完上述操作需要重启实例。 |
||
| 说明 | 因DRM导致的问题非常多 | ||
| 文档 | 无 | ||
| 性能 | 设置在线状态的回滚段数量 | 条件 | 高并发OLTP数据库 |
| 建议 | alter system set “_rollback_segment_count” =2000 scope=spfile sid=’*’; | ||
| 说明 | 由于事务风暴、阻塞雪崩效应、应用重启、或者秒杀促销等高并发场景,数据库内短暂时间将需要将大量的undo seg从offline变成online,而smon没有处理得那么快,故可能出现短暂的大量enq:US-contention和 latch: rowcache objects等待。需要提前设置_ROLLBACK_SEGMENT_COUNT为一个较大的值,保持一定数量的undosegments始终是online状态 | ||
| 文档 | |||
| 性能 | 增加实例延迟降级锁的时长 | 条件 | RAC环境,11.2.0.2和11.2.0.3版本需要调整,11.2.0.4版本不调整 |
| 建议 | alter system set “_gc_defer_time”=3 scope=spfile sid=’*’; | ||
| 说明 | 增加为3秒,避免遇到一些导致实例crash的bug | ||
| 文档 | Bug 13718279 - DB instance terminated due to ORA-29770 in RAC (Doc ID 13718279.8) | ||
| 性能 | 加大AUDSES$跳号缓存 | 条件 | 版本10.2.0.3之前 |
| 建议 | alter sequence sys.audses$ cache 10000; | ||
| 说明 | 业务登录频繁可能导致系统卡顿 | ||
| 文档 | 无 | ||
| 优化器 | 关闭自适应游标共享 | 条件 | 版本11.2以上,12.2以下 |
| 建议 | alter system set “_optimizer_adaptive_cursor_sharing”=false sid=’‘ scope=spfile; alter system set “_optimizer_extended_cursor_sharing”=none sid=’‘ scope=spfile; alter system set “_optimizer_extended_cursor_sharing_rel”=none sid=’*’ scope=spfile; |
||
| 说明 | 自适应游标共享可能会带来过多子游标的问题,我们将其关闭。 | ||
| 文档 | 无 | ||
| 优化器 | 关闭Cardinality feedback | 条件 | 版本11.2以上 |
| 建议 | alter system set “_optimizer_use_feedback”=false sid =’*’ scope=spfile; | ||
| 说明 | 可能会导致执行计划的不稳定 | ||
| 文档 | 无 | ||
| 优化器 | 根据上次执行结果动态维护统计信息 | 条件 | 版本12.1至18.1 |
| 建议 | alter system set “_optimizer_dsdir_usage_control”=0 scope=both; | ||
| 说明 | Adaptive Statistics 允许Oracle根据上次执行结果动态维护统计信息,可能触发对大表的动态采样。 | ||
| 文档 | 无 | ||
| 优化器 | 禁用 Expression statistics monitoring | 条件 | 版本12cR2+ |
| 建议 | alter system set “_column_tracking_level”=17 scope=both; | ||
| 说明 | 12C以后版本,Oracle为了进一步实现在线统计信息的准确性,在DML时会自动将列数据变化的情况保存到数据库,类似modification那些数据字典里存的东西。这个功能在并发DML比较频繁的系统里,会非常影响性能。 | ||
| 文档 | Optimizer Expression Statistics Tracking/Monitoring Generates Growth in Tablespace SYSAUX (Doc ID 2354960.1) | ||
| 优化器 | 优化latch: ges resource hash list等待事件 | 条件 | RAC环境,版本19c |
| 建议 | alter system set “_lm_res_hash_bucket”=4194250 scope=spfile; | ||
| 说明 | 降低高负载期间latch: ges resource hash list等待事件 | ||
| 文档 | |||
| 优化器 | 防止View Merge安全特性对执行计划影响 | 条件 | 版本19c |
| 建议 | alter system set optimizer_secure_view_merging=false; | ||
| 说明 | 如果视图不属于当前执行语句的用户,执行计划不会优先将过滤条件带入视图中。 | ||
| 文档 | |||
| 优化器 | 子游标过期参数 | 条件 | 版本12cR1,12cR2,18c,19c |
| 建议 | alter system set “_cursor_obsolete_threshold”=100 scope=spfile; | ||
| 说明 | 单个SQL_ID下子游标数达到多少值,开始废弃子游标,11gR2默认值为100,12cR1为1024,18c为4096,19c为8192。除非CDB环境中,包含很多业务类似的的PDB,否则建议修改回100。 | ||
| 文档 | |||
| 并行 | 设置并行子进程的数量上限 | 条件 | 非全固态存储数据库 |
| 建议 | alter system set parallel_max_servers=128 scope=spfile sid=’*’; | ||
| 说明 | 手工设置并行子进程的数量上限为物理CPU个数*2,避免数据库自动算的值太大。 备注:IBM POWER 7/8采用SMT4,虚拟CPU为物理CPU的4倍,该参数需要调小。 |
||
| 文档 | 无 | ||
| 并行 | 关闭跨实例并行 | 条件 | 版本11.2以上,12.1以下 |
| 建议 | alter system set parallel_force_local=true scope=spfile sid=’*’; | ||
| 说明 | 跨节点并行可能增加私网流量,12.1如果需要执行Datapatch需要恢复该参数。 | ||
| 文档 | 无 | ||
| 并行 | 使并行会话改为使用Large Pool | 条件 | 版本11.2以上 |
| 建议 | alter system set “_px_use_large_pool”=true sid =’*’ scope=spfile; | ||
| 说明 | 并行会话默认使用的是shared pool用于并行执行时的消息缓冲区,并行过多时容易造成shared pool不足,使数据库报ORA-4031错误。 | ||
| 文档 | 无 | ||
| 并行 | 并行执行消息大小 | 条件 | OLAP或DSS数据库 |
| 建议 | alter system set parallel_execution_message_size=2148 scope=spfile; | ||
| 说明 | 16384 bytes if COMPATIBLE is set to 11.2.0 or higher 4096 bytes if COMPATIBLE is less than 11.2.0 and PARALLEL_AUTOMATIC_TUNING is set to true 2148 bytes if COMPATIBLE is less than 11.2.0 and PARALLEL_AUTOMATIC_TUNING is set to false |
||
| 文档 | 无 | ||
| 备份 | 允许循环归档 | 条件 | 版本10.1之前 |
| 建议 | alter system set log_archive_start=true scope=spfile; | ||
| 说明 | 允许循环归档,必须调整该参数,否则无法正常归档 | ||
| 文档 | 无 | ||
| 通用 | 规范归档文件名 | 条件 | 开启归档的数据库 |
| 建议 | alter system set logarchive_format=’orcl%t%s%r.arc’; | ||
| 说明 | 库名使用UNIQUE_DB_NAME,默认后缀修改为ARC | ||
| 文档 | 无 | ||
| 备份 | 加大控制文件保留时间 | 条件 | 开启归档或配置RMAN备份的数据库 |
| 建议 | alter system set control_file_record_keep_time=60; | ||
| 说明 | 默认为7天,每周1个全备情况下可能出现最早全备信息丢失,导致增备变成全备。 建议调整为全备周期的2~3倍时间。 |
||
| 文档 | 无 | ||
| 备份 | 修改控制文件的Snapshot到共享存储 | 条件 | 配置RMAN备份的数据库 |
| 建议 | RMAN> configure snapshot controlfile name to ‘+FRA/snapcf_orcl.f’; | ||
| 说明 | 修改控制文件的snapshot到共享存储上,11g的控制文件从数据库级的control file enqueue调整为文件级的锁,因此需要共享,否则备份控制文件失败 | ||
| 文档 | 无 | ||
| 备份 | 开启块跟踪 | 条件 | 版本10.2以上,开启RMAN备份且容量较大数据库 |
| 建议 | 如果启用增量备份,则开启BCT。 alter database enable block change tracking using file ‘+DATA’; |
||
| 说明 | 通过块跟踪文件可以大大缩短增量备份时间。 12c以下版本需要注意备份期间所有实例开启,否则增量备份无法使用BCT文件(Bug 16812848) |
||
| 文档 | Bug 16812848 BCT is not used in RAC when at least one instance is shutdown | ||
| 安全 | 解除密码过期限制 | 条件 | 无强制安全规范需求的数据库 |
| 建议 | alter profile default limit PASSWORD_LIFE_TIME unlimited; alter profile default limit PASSWORD_LOCK_TIME unlimited; alter profile default limit PASSWORD_GRACE_TIME unlimited; alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited; |
||
| 说明 | 防止默认180天密码会自动过期 | ||
| 文档 | 无 | ||
| 安全 | 关闭密码大小写敏感 | 条件 | 无强制安全规范需求的数据库,12c禁止设置。 |
| 建议 | alter system set sec_case_sensitive_logon=false scope=spfile sid=’*’; | ||
| 说明 | 密码大小写不敏感 | ||
| 文档 | 无 | ||
| 安全 | 关闭登录、登出的审计日志 | 条件 | 版本11.2以上,短连接较多数据库 |
| 建议 | noaudit create session; | ||
| 说明 | 如果短连接比较多,则会导致system表空间被撑爆。 | ||
| 文档 | 无 | ||
| 网络 | 允许低版本 客户端连接 Oracle12c |
条件 | 版本12.1以上 |
| 建议 | Oracle用户 $ vi $ORACLE_HOME/network/admin/sqlnet.ora SQLNET.ALLOWED_LOGON_VERSION_SERVER=10 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10 |
||
| 说明 | 版本 12.1:参数的默认设置为 11;版本 12.2:参数的默认设置为 12。 | ||
| 文档 | 无 |
