ORACLE 11204 for Linux(RAC) 环境配置及数据库参数最佳实践
针对Linux 6.6(+)版本:
1、Linux 内核参数配置
vm.dirty_ratio=20
vm.dirty_background_ratio=3
vm.dirty_writeback_centisecs=100
vm.dirty_expire_centisecs=500
vm.swappiness=10
vm.min_free_kbytes=524288
##需要根据SGA来计算
vm.nr_hugepages = 6118828401
#rp_filter,这里假设eth2和eth3都是私有网卡
net.ipv4.conf.eth2.rp_filter = 2
net.ipv4.conf.eth3.rp_filter = 2
## fix packet reassembles failure
net.ipv4.ipfrag_high_thresh = 16777216
net.ipv4.ipfrag_low_thresh = 15728640
net.ipv4.ipfrag_time=60
参考文档:
RHEL 6.6: IPC Send timeout/node eviction etc with high packet reassembles failure(Doc ID 2008933.1)
RAC Cluster is Experiencing Node Evictions after Kernel Upgrade to OL6.6(Doc ID 2011957.1)
2、disable listener xml log
建议调整监听参数文件 DIAG_ADR_ENABLED_listener = OFF ,然后reload监听,监听就不会存放为XML文件格式,而是使用10g老的方式。
同时建议在SQLNET.ORA文件中设置参数 DIAG_ADR_ENABLED = OFF 来屏蔽ADR向ALERT写入错误信息(如ORA-609)。
3、调整ASM
- 调整数据库参数
SQL> alter system set memory_max_target=4096m scope=spfile;
SQL> alter system set memory_target=1536m scope=spfile;
SQL> alter system processes=200 scope=spfile;
- 调整AU大小
ASM磁盘组使用的是默认的1M AU大小,对于大型数据库,这会造成较多的内存占用,同时对性能略微有些影响,建议对于新增的用于放置数据文件的ASM磁盘组,
适当调大AU大小,比如4M或8M(2的幂值)。
根据电信运营商的实际经验,建议设置AU 为4m。
4、调整CHM日志保留时间
[root@db1 db1]# oclumon manage -get repsize 显示多少秒,当前是61624秒
CHM Repository Size = 61624
[root@db1 db1]# [oclumon](mailto:grid@hxjfdb1:~$oclumon) manage -repos resize 259200 调整为保留三天
5、调整归档目录
对于ADG环境,建议将归档存放在闪回目录中,避免归档被意外删除。
新建快速恢复区专用的磁盘组,修改参数db_recovery_file_dest和 db_recovery_file_dest_size,例如:
SQL> show parameter recovery
NAME TYPE VALUE
------------------------------------ -----------------------
db_recovery_file_dest string +FRADG
db_recovery_file_dest_size big integer 900G
6、调整CRS资源属性(对于网络环境不稳定的情况建议调整)
在Oracle 11.2.0.4版本中,CRS默认每秒检查一次网络健康情况,如果发现网络存在异常比如闪断;那么将会立刻将
SCAN/LISTENER等资源进行failover切换;可能影响业务。不仅如此,VIP资源也会收到影响。
建议将public 网络的检查频率从1秒修改为6秒。
crsctl modify res ora.net1.network -attr "CHECK_INTERVAL=6"
7、 时间窗口设置(基于业务进行调整)
如下结合运营商的实际情况进行调整。如果是其他行业客户,请酌情修改。
EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE('SATURDAY_WINDOW','repeat_interval','freq=daily;byday=SAT;byhour=22;byminute=0;bysecond=0');
EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE('SUNDAY_WINDOW','repeat_interval','freq=daily;byday=SUN;byhour=22;byminute=0;bysecond=0');
EXEC DBMS_SCHEDULER.SET_ATTRIBUTE('SATURDAY_WINDOW', 'duration', '+000 08:00:00');
EXEC DBMS_SCHEDULER.SET_ATTRIBUTE('SUNDAY_WINDOW', 'duration', '+000 08:00:00');
exec dbms_scheduler.disable('WEEKNIGHT_WINDOW', TRUE);
exec dbms_scheduler.disable('WEEKEND_WINDOW', TRUE);
8、关闭不必要的job
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB');
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB');
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'auto space advisor',
operation => NULL,
window_name => NULL);
END;
/
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(
client_name => 'sql tuning advisor',
operation => NULL,
window_name => NULL);
END;
/
9、修改AWR信息收集
请根据实际情况酌情调整
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(RETENTION=>44640,INTERVAL=>30); --将快照采集频率修改为30分钟
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(topnsql => 30); ---修改top SQL 为30
10、修改默认的profile属性
如下设置适用于绝大多数行业客户,个别特殊客户(例如对安全有极高要求),请酌情修改。
alter profile "DEFAULT" limit PASSWORD_GRACE_TIME UNLIMITED;
alter profile "DEFAULT" limit PASSWORD_LIFE_TIME UNLIMITED;
alter profile "DEFAULT" limit PASSWORD_LOCK_TIME UNLIMITED;
alter profile "DEFAULT" limit FAILED_LOGIN_ATTEMPTS UNLIMITED;
11、logminer设置
需要根据实际情况而定,打开附加日志会产生过多的redo
为了防止数据库出现一些误删除等操作时,能够利用logminer分析日志,建议开启数据库附加日志,如下:
alter database force logging;
alter database add supplemental log data;
alter database add supplemental log data (primary key);
alter database add supplemental log data (unique) columns;
12、 直方图收集设置
避免Oracle SQL执行计划频繁变动,设置数据库全局的统计信息收集不采集直方图:
exec dbms_stats.set_global_prefs(pname=>'METHOD_OPT',pvalue=>'for all columns size 1');
说明:针对个别数据倾斜严重的业务表,建议进行定制化统计信息收集(数据是否倾斜,需要跟客户进行沟通确认)。
13、调整数据库实例参数
如下数据库参数以Oracle 11.2.0.4版本为例:
参数名称 | 建议值 | 参数解释 |
resource_manager_plan | FORCE: | 关闭资源计划 |
audit_trail | None | 关闭数据库审计功能 |
undo_retention | 10800 | |
session_cached_cursors | 200 | |
archive_lag_target | 1800 | Dg环境设置归档定时产生,避免丢失 |
db_files | 4000 | |
max_shared_servers | 0 | |
sec_max_failed_login_attempts | 100 | |
deferred_segment_creation | FALSE | 关闭延迟段创建 |
parallel_force_local | TRUE | |
parallel_max_servers | 32 | |
sec_case_sensitive_logon | FALSE | 关闭密码大小写敏感 |
open_cursors | 3000 | |
open_link | 40 | |
open_links_per_instance | 40 | |
enable_ddl_logging | TRUE | |
sga_target | 0 | 关闭SGA自动调节 |
db_cache_size | 100G | |
shared_pool_size | 20G | shared pool大小控制在SGA的15%-20% |
large_pool_size | 2G | |
java_pool_size | 2G | |
db_cache_advice | OFF | |
cell_offload_processing | FALSE | 非exadata环境,建议关闭offload功能 |
gcs_server_processes | 6 | 防止RAC节点CPU不同出现性能问题,固定gcs server数量 |
result_cache_max_size | 0 | 关闭result cache功能,避免大量bug |
db_securefile | always | 启用securefile lob,优化lob性能 |
_kttext_warning | 1 | 数据文件自动扩展预警,默认为5%;避免文件预扩展出现问题 |
_ktb_debug_flags | 8 | 11g DataGuard switchover时可能出现Index损坏,这是bug 22241601; 设置该参数,启用Index 自动修复功能。 |
_optimizer_ads_use_result_cache | FALSE | 关闭result cache功能启用情况下优化器自适应功能 |
_b_tree_bitmap_plans | FALSE | |
_gc_policy_time | 0 | 关闭DRM |
_gc_defer_time | 3 | |
_lm_tickets | 5000 | 增加ticket,避免ticket不足导致ORA-481 |
_optimizer_use_feedback | FALSE | |
_undo_autotune | FALSE | |
_bloom_filter_enabled | FALSE | 关闭布隆过滤,屏蔽bug |
_cleanup_rollback_entries | 4000 | |
_px_use_large_pool | TRUE | 开启并行操作使用large pool |
_optimizer_extended_cursor_sharing_rel | NONE | 关闭11gR2自适应游标共享特性,屏蔽大量bug |
_optimizer_extended_cursor_sharing | NONE | 关闭11gR2自适应游标共享特性,屏蔽大量bug |
_optimizer_adaptive_cursor_sharinge | FALSE | 关闭11gR2自适应游标共享特性,屏蔽大量bug |
_optimizer_cartesian_enabled | NONE | 禁止带连接条件时时出现笛卡尔积连接 |
_sort_elimination_cost_ratio | 1 | |
_index_partition_large_extents=FALSE | FALSE | |
_memory_imm_mode_without_autosga=FALSE | FALSE | 关闭sga自动调节(注意shared pool,否则可能出现ORA-4031) |
_clusterwide_global_transactions=FALSE | FALSE | |
_part_access_version_by_number=FALSE | FALSE | |
_partition_large_extents=FALSE | FALSE | |
_use_adaptive_log_file_sync=FALSE | FALSE | |
_lm_sync_timeout=1200 | 1200 | |
_ksmg_granule_size | 134217728 | buffer cache超过100G时,调整内存粒度大小,提升性能 |
_external_scn_logging_threshold_seconds | 3600 | |
_high_priority_processes | LMS*|VKTM|LGWR | 提高LGWR优先级,避免log file sync(11.2.0.4仍然需要调整) |
_external_scn_rejection_threshold_hours | 24 | |
_datafile_write_errors_crash_instance | FALSE | 避免文件写IO错误终止实例 |
28401 TRACE NAME CONTEXT FOREVER, LEVEL 1’, ‘60025 trace name context forever’, ‘10943 trace name context level 2097152’, ‘10949 trace name context forever,level 1’ | Exadata环境不能关闭直接路径读。 |
命令供参考:
Alter system set resource_manager_planz=’FORCE:’ scope=spfile sid='*';
Alter system set audit_trail=none scope=spfile sid='*';
alter system set undo_retention=10800 scope=spfile sid='*';
alter system set session_cached_cursors=200 scope=spfile sid='*';
alter system set db_files=4000 scope=spfile sid='*';
alter system set max_shared_servers=0 scope=spfile sid='*';
alter system set sec_max_failed_login_attempts=100 scope=spfile sid='*';
alter system set deferred_segment_creation=false scope=spfile sid='*';
alter system set parallel_force_local=true scope=spfile sid='*';
alter system set parallel_max_servers=32 scope=spfile sid='*';
alter system set sec_case_sensitive_logon=false scope=spfile sid='*';
alter system set open_cursors=3000 scope=spfile sid='*';
alter system set open_link =40 scope=spfile sid='*';
alter system set open_links_per_instance =40 scope=spfile sid='*';
alter system set sga_target=0 scope=spfile sid='*';
alter system set db_cache_size=120g scope=spfile sid='*';
alter system set shared_pool_size=25g scope=spfile sid='*';
alter system set large_pool_size=512m scope=spfile sid='*';
alter system set java_pool_size=512m scope=spfile sid='*';
alter system set db_cache_advice=off scope=spfile sid='*';
alter system set gcs_server_processes=6 scope=spfile sid='*';
alter system set result_cache_max_size=0 scope=spfile sid='*';
alter system set enable_ddl_logging=true scope=spfile sid='*';
alter system set archive_lag_target=1800 scope=spfile sid='*';
alter system set db_securefile=always scope=spfile sid='*';
alter system set "_ktb_debug_flags"=8 scope=both sid='*';
alter system set cell_offload_processing=false scope=spfile sid='*';
alter system set "_kttext_warning"=1 scope=spfile sid='*';
alter system set "_optimizer_ads_use_result_cache" = FALSE scope=spfile sid='*';
alter system set "_b_tree_bitmap_plans"=false scope=spfile sid='*';
alter system set "_gc_policy_time"=0 scope=spfile sid='*';
alter system set "_gc_defer_time"=3 scope=spfile sid='*';
alter system set "_lm_tickets"=5000 scope=spfile sid='*';
alter system set "_optimizer_use_feedback"=false scope=spfile sid='*';;
alter system set "_high_priority_processes"='LMS*|VKTM|LGWR' scope=spfile sid='*';
alter system set "_undo_autotune"=false scope=both sid='*';
alter system set "_bloom_filter_enabled"=FALSE scope=spfile sid='*';
alter system set "_cleanup_rollback_entries"=4000 scope=spfile sid='*';
alter system set "_px_use_large_pool"=true scope=spfile sid='*';
alter system set "_optimizer_extended_cursor_sharing_rel"=NONE scope=spfile sid='*';
alter system set "_optimizer_extended_cursor_sharing"=NONE scope=spfile sid='*';
alter system set "_optimizer_adaptive_cursor_sharing"=false scope=spfile sid='*';
alter system set "_optimizer_cartesian_enabled"=FALSE scope=spfile sid='*';
alter system set "_sort_elimination_cost_ratio"=1 scope=spfile sid='*';
alter system set "_partition_large_extents"=FALSE scope=spfile sid='*';
alter system set "_index_partition_large_extents"=FALSE scope=spfile sid='*';
alter system set "_memory_imm_mode_without_autosga"=FALSE scope=spfile sid='*';
alter system set "_clusterwide_global_transactions"=FALSE scope=spfile sid='*';
alter system set "_part_access_version_by_number"=FALSE scope=spfile sid='*';
alter system set "_partition_large_extents"=FALSE scope=spfile sid='*';
alter system set "_sort_elimination_cost_ratio"=1 scope=spfile sid='*';
alter system set "_use_adaptive_log_file_sync"=FALSE scope=spfile sid='*';
alter system set "_lm_sync_timeout"=1200 scope=spfile sid='*';
alter system set "_ksmg_granule_size"=134217728 scope=spfile sid='*';
alter system set "_external_scn_logging_threshold_seconds"=3600 scope=spfile sid='*';
alter system set "_external_scn_rejection_thresh"=24 scope=spfile sid='*';
alter system set "_datafile_write_errors_crash_instance"=false scope=spfile sid='*';
alter system set event='28401 trace name context forever,level 1','60025 trace name context forever','10943 trace name context forever,level 2097152','10949 trace name context forever,level 1','10262 trace name context forever, level 90000' scope=spfile;
重要说明:
当设置sga_target=0,同时设置_memory_imm_mode_without_autosga 为false之后,将彻底禁用SGA自动调节;
务必确保shared pool 大小足够,否则可能引发性能问题(通常来讲,保持shared pool大小为SGA 的15%-20%是比较好的)。