名称 建议
    内存 禁用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。
    文档