Oracle RAC性能优化-RAC上线前的参数调整优化总结

    Oracle系统中有一类参数称之为隐藏参数 (hidden parameters) ,这些参数在所有 Oracle 官方提供的文档中都没有介绍,他们的命名有一个共同特征就是都以 '_' 作为参数的首字符。当然这部分的参数是不建议用户进行修改的,除非你对ORACLE的整体架构相当熟悉,对整个参数修改所带来的影响有个清晰的认识。

  • 1.隐藏参数

示例:如果想查看_db_block_hash_buckets的参数值
col ksppinm for a50
col ksppstvl for a50
col ksppdesc for a50
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx AND ksppinm = ‘_db_block_hash_buckets’;

1.自适应游标共享开启可能会触发性能问题,建议关闭

alter system set "_optimizer_adaptive_cursor_sharing"=FALSE;
alter system set "_optimizer_extended_cursor_sharing"='NONE';
alter system set "_optimizer_extended_cursor_sharing_rel"='NONE';

2.执行的从属进程在工作时需要交换数据和信息

默认从 Shared Pool 中分配内存空间。
当 _PX_use_large_pool=TRUE 时并行进程将从 Large Pool 中分配内存,
减少对共享池(Shared Pool )的争用
alter system set "_PX_use_large_pool"=TRUE scope=spfile

3.避免出现UNDO表空间利用率过高

或者UNDO段争用的问题
alter system set "_undo_autotune"=FALSE;

4.如果有遇到Log file sync问题

考虑设上进行隔离规避,建议关闭此功
alter system set "_use_adaptive_log_file_sync"=FALSE;

5 DRM

4.DRM负责将 Cache 资源 Remaster 到频繁访问这部分数据的节点上,
从而提高 RAC 的性能。但是 DRM 在实际使用中存在诸多 Bug ,
频繁的 DRM 会引发实例长时间 Hang 住甚至是宕机,建议关闭 DRM 

alter system set "_gc_policy_time"=0;
alter system set "_gc_undo_affinity"=FALSE;

6.避免表初始化分区过大


alter system set "_partition_large_extents"=FALSE;

6.关闭自适应执行计划


alter system set "_optimizer_adaptive_plans"=FALSE

7.12c 中关闭result_cache ,容易触发latch free 等bug


alter system set "_optimizer_ads_use_result_cache" = FALSE;



8.延迟降级锁的时长(隐含参数)如果延迟降级锁的时间过低,


可能导致节点之间心跳超时,导致脑裂。
alter system set "_gc_defer_time" = 3;
 

9.减少对LOBs字段频繁的update


alter system set "_securefiles_concurrency_estimate" = 50;



10当非系统表空间的数据文件出现I/O问题时,不强制将实例crash


alter system set "_datafile_open_errors_crash_instance" = FALSE;
alter system set "_datafile_write_errors_crash_instance" = FALSE;

  • 2.常规参数

1.最大数据文件数默认值为200,建议调大


system set db_files=2000 scope=spfile;



2.限制trc文件大小,避免文件系统使用率过高


alter system set max_dump_file_size=104857600 scope=both;



3.RAC环境,为了降低集群间的数据交互建议并行进程强制在本地实例分配

以便降低集群间的数据交互。
alter system set parallel_force_local=TRUE scope=spfile;



4.由于审计表(AUD$ )存放在SYSTEM 表空间


因此为了不影响系统的性能,保护SYSTEM 表空间,
建议把AUD$ 移动到其他的表空间上,或者关闭审计。
alter system set audit_trail='NONE';



5.调整undo信息保存时间3小时


增加后需关注Undo表空间使用率
alter system set undo_retention=10800 scope=both;



6.指定会话可缓存在用户私有区的游标数目


建议根据实际情况调整
alter system set session_cached_cursors=300 scope=both;



7.延迟段创建会导致使用 Direct 方式的 


Export 出来的 DMP 文件无法正常导入
alter system set deferred_segment_creation=FALSE;



8.多列统计信息自动收集功能是自适应查询优化器的一部分


一般来说自动功能bug比较多,建议设置为fasle进行规避
alter system set optimizer_adaptive_plans=FALSE scope=both;



9.默认7天,建议控制文件中的元数据保留时间设置为31天


alter system set control_file_record_keep_time=31 scope=both;


10.数据库默认连接方式为独占模式

共享连接模式几乎不用,建议设置为0关闭。
alter system set max_shared_servers=0 scope=both;
alter system set shared_servers=0 scope=both;

  • 3.操作系统调参

1.HugePages


HugePages是Linux内核与2.6版本集成的一个特性。
这个特性基本上提供了4K页面大小(IA64为16K)的替代方案,
提供更大的页面。HugePages是一种拥有更大页面的方法,
它对于处理非常大的内存非常有用

# Check for the kernel version
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`

# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`
if [ -z "$HPG_SZ" ];then
    echo "The hugepages may not be supported in the system where the script is being executed."
    exit 1
fi

# Initialize the counter
NUM_PG=0

# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | cut -c44-300 | awk '{print $1}' | grep "[0-9][0-9]*"`
do
    MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
    if [ $MIN_PG -gt 0 ]; then
        NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
    fi
done

RES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`

# An SGA less than 100MB does not make sense
# Bail out if that is the case
if [ $RES_BYTES -lt 100000000 ]; then
    echo "***********"
    echo "** ERROR **"
    echo "***********"
    echo "Sorry! There are not enough total of shared memory segments allocated for
HugePages configuration. HugePages can only be used for shared memory segments
that you can list by command:

    # ipcs -m

of a size that can match an Oracle Database SGA. Please make sure that:
 * Oracle Database instance is up and running
 * Oracle Database 11g Automatic Memory Management (AMM) is not configured"
    exit 1
fi

# Finish with results
case $KERN in
    '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
           echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
    '2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    '3.8') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    '3.10') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    '4.1') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    '4.14') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    '5.4') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    *) echo "Kernel version $KERN is not supported by this script (yet). Exiting." ;;
esac

# End
chmod +x hugepages_settings.sh

将上面脚本生成内容写入到/etc/sysctl.conf中,
通过下面命令生效
sysctl -p



2.RAC的私网


在/etc/sysctl.conf中添加以下内容并生效,
这样可以避免一些异常网络发包带来的一些问题:
net.ipv4.ipfrag_high_thresh=16777216
net.ipv4.ipfrag_low_thresh=15728640

一般要求DB服务器和心跳交换机的 mtu 值一致



3.limits.conf


memlock计算的原则:物理内存的90%(单位是KB)
vi /etc/security/limits.conf



4.修改内核参数


kernel.shmmax参数:需要根据实际物理内存计算,
此处按节点物理内存128GB计算;建议kernel.shmmax参数取值为节点物理内存的70%,
单位为字节,
即128*70%*1024*1024*1024=96207267430.4(向上取整为96207267430)。
kernel.shmall参数:根据SGA/PAGE_SIZE计算。
kernel.sem参数:如果客户单个数据库需要支持的process数超过12000,
请按照实际情况配置。

生效命令:/sbin/sysctl --system

  • 4.其他

1.列出回收哪些段空间可以回收,
给出建议(在实际运维中,实用性非常低)
BEGIN
  DBMS_AUTO_TASK_ADMIN.disable(
    client_name => 'sql tuning advisor',
    operation   => NULL,
    window_name => NULL);
END;
/
commit;

2.检测高负载的 SQL语句性能,
并给出调优建议(在实际运维中,实用性非常低)
BEGIN
  DBMS_AUTO_TASK_ADMIN.disable(
    client_name => 'auto space advisor',
    operation   => NULL,
    window_name => NULL);
END;
/
commit;

3.密码策略取消
alter profile default limit PASSWORD_LIFE_TIME unlimited;
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
alter profile default limit  PASSWORD_LOCK_TIME unlimited;
alter profile default limit PASSWORD_GRACE_TIME unlimited;

4.低版本客户端登录
报错:ORA-28040: No matching authentication protocol
sqlnet.ora文件中加 
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

5.快速恢复区的设置
SYS@mesdb1> show parameter recover;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string
db_recovery_file_dest_size           big integer 0
db_unrecoverable_scn_tracking        boolean     TRUE
recovery_parallelism                 integer     0
remote_recovery_file_dest            string


6.快速恢复区设置
是一个默认放置所有备份恢复操作有关文件的地方,
包括:控制文件在线镜像、在线重做日志、归档日志、外来归档日志、控制文件镜像复制、数据文件镜像复制、RMAN备份片和闪回日志。
如果启用的快速恢复区,它就成了RMAN备份默认的去处,无论是RMAN备份片、镜像复制、还是控制文件自动备份,
只要没有在RMAN配置或则backup命令中指明路径就全部进入快速恢复区。

SQL> alter system set db_recovery_file_dest_size=40G scope=spfile;
SQL> alter system set db_recovery_file_dest='+ARCH' scope=spfile;

  • 5.总结

目录 推荐序 言 第1章 认识Oracle RAC 1.1 RAC产生的背景 1.2 RAC体系结构 1.2.1整体结构 1.2.2物理层次结构 1.2.3逻辑层次结构 1.3 RAC的特点 1.3.1双机并行 1.3.2高可用性 1.3.3易伸缩性 1.3.4低成本 1.3.5高吞吐量 1.4 RAC存在的问题 1.4.1稳定性 1.4.2高性能 1.5 RAC软件 1.5.1存储管理软件 1.5.2集群管理软件 1.5.3数据库管理软件 1.6本章小结 第2章 搭建类似生产环境的RAC 2.1搭建环境 2.1.1 RAC的物理结构 2.1.硬件环境 2.1.3软件环境 2.2搭建存储服务器 2.2.1安装Openfiler操作系统 2.2.2Openfiler主界面 2.2.3配置iSCSI磁盘 2.3搭建数据库服务器 2.3.1为服务器配置4个网卡 2.3.2安装Linux操作系统 2.3.3挂载iSCSI磁盘 2.3.4配置udev固定iSCSI磁盘设备名称 2.3.5配置服务器的图形化环境 2.4 RAC运行环境安装检查 2.4.1服务器检查 2.4.2存储检查 2.4.3网络检查 2.5配置数据库服务器 2.5.1安装软件包 2.5.2修改系统参数 2.5.3配置域名解析服务 2.5.4配置hosts文件 2.5.5创建组、用户和目录 2.5.6设置环境变量 2.5.7配置SSH用户等效性 2.5.8配置时间同步服务 2.5.9安装cvuqdisk包 2.5.10 CVU验证安装环境 2.6创建ASM磁盘 2.6.1安装ASMLib驱动 2.6.2创建ASMLib磁盘 2.7部署RAC 2.7.1安装Grid Infrastructure 2.7.2安装Database DBMS 2.7.3创建ASM磁盘组 2.7.4创建RAC数据库 2.8测试RAC 2.8.1连接方式测试 2.8.2异常情况测试 2.9虚拟机搭建RAC 2.9.1虚拟机Xen简介 2.9.2启动主机Xen内核 2.9.3 Xen虚拟机创建网络环境 2.9.4创建Xen存储服务器 2.9.5创建Xen数据库服务器 2.10本章小结 第3章 Clusterware集群软件 3.1 Grid Infrastructure架构 3.1.1 GI的特点 3.1.2 GI的应用 3.1.3 Clusterware的特点 3.1.4 Clusterware增强的特性 3.2 Clusterware磁盘文件 3.2.1表决磁盘 3.2.2集群注册表 3.2.3本地注册表 3.3 Clusterware启动流程 3.3.1启动流程 3.3.2后台进程 3.4 Clusterware隔离机制 3.4.1 Clusterware心跳 3.4.2 Clusterware隔离特性IPMI 3.4.3 RAC隔离体系 3.5网格即插即用 3.5.1 GPnP结构 3.5.2 GPnP profile文件 3.5.3 mDNS服务 3.6日志体系 3.6.1 ADR的特点 3.6.2 ADR目录结构 3.6.3命令行工具ADRCI 3.6.4 Clusterware日志文件 3.6.5 ASM实例和监听日志文件 3.6.6 Database日志文件 3.7本章小结 第4章 ASM存储软件 4.1 ASM简介 4.1.1 ASM的特点 4.1.2 ASM实例的功能 4.2 ASM磁盘组 4.2.1 ASM磁盘 4.2.2共享ASM磁盘组 4.2.3 ASM逻辑结构 4.2.4 ASM故障组 4.2.5 ASM条带化 4.3 ASM文件 4.3.1 ASM文件类型 4.3.2 ASM别名 4.3.3 ASM文件模板 4.4 ASM数据结构 4.4.1物理元数据 4.4.2虚拟元数据 4.5 ASM操作 4.5.1 RDBMS操作ASM文件 4.5.2 ASM文件的分配 4.5.3 ASM区间读写特性 4.5.4 ASM同步技术 4.5.5 ASM实例恢复和Crash恢复 4.5.6 ASM磁盘组操作 4.6 ACFS集群文件系统 4.6.1 ACFS概述 4.6.2 ADVM动态卷管理 4.6.3 ACFS快照 4.6.4 ACFS的备份和恢复 4.6.5 ACFS同ASM整合 4.7本章小结 第5章 RAC工作原理 5.1单实例并发与一致性 5.1.1数据读一致性与写一致性 5.1.2多版本数据块 5.1.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值