oracle查询导致 gc等待,如何诊断Oracle RAC系统中的等待事件gc cr multi block request?...
AIX上:
#no –a
udp_recvspace
udp_sendspace
o 设置udp_sendspace >=[(DB_BLOCK_SIZE * DB_FILE_MULTIBLOCK_READ_COUNT) + 4096],但是不低于 65536.
比如,DB_BLOCK_SIZE=8192, DB_FILE_MULTIBLOCK_READ_COUNT=16,那么udp_sendspace>= (8192 * 16) + 4096=135168.注意这个值只是最低值,并不是Oracle要求必须设置这么大。
o 设置udp_recvspace 为 4到10倍 udp_sendpace
o 由于sb_max 必须 >= udp_recvspaceIf ,可能需要增加sb_max的值(默认为1048576)
o 如果udp的参数设置不合理,可能会产生“socket buffer overflows”,如果这个值非0, 需要增加udp_recvspace:
netstat -s | grep "socket buffer overflows"
o 参考资料:http://www-03.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/WP100883
Minimum Software Versions and Patches Required to Support Oracle Products on IBM Power Systems (Doc ID 282036.1)
Linux上:
#More /etc/sysctl.conf
net.core.rmem_default
net.core.rmem_max
net.core.wmem_default
net.core.wmem_max
官方文档上要求的最低值:
http://docs.oracle.com/cd/E11882_01/install.112/e24321/pre_install.htm#BABDAEDB
Oracle Database Installation Guide
11g Release 2 (11.2) for Linux
E24321-07
rmem_default 262144
rmem_max 4194304
wmem_default 262144
wmem_max 1048576
可以将这几个值都设为4k:
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 4194304
net.core.wmem_max = 4194304
HP上:
请检查UDP设置是否足够大:
$ /bin/ndd -get /dev/sockets socket_udp_rcvbuf_default
$ /bin/ndd -get /dev/sockets socket_udp_sndbuf_default
确保socket_udp_rcvbuf_default至少是socket_udp_sndbuf_default的两倍。
Sun:
可以用下面的命令查看UDP设置:
ndd /dev/udp udp_xmit_hiwat
ndd /dev/udp udp_recv_hiwat
ndd /dev/udp udp_max_buf
可以用下面的命令设置这两个值为OS最大允许的:
ndd -set /dev/udp udp_xmit_hiwat
ndd -set /dev/udp udp_recv_hiwat
ndd -set /dev/udp udp_max_buf <1M or higher>
更多信息,可以参考MOS文档:
Tuning Inter-Instance Performance in RAC and OPS (Doc ID 181489.1)
第三步,查看网络情况。
比如用netstat -s 命令查看是否有bad data length, bad checksums, incomplete headers, socket buffer overflows等,注意这些值是累计的,需要查看它们在发生问题的时候是否有增加。
另外可以查看AWR中是否有 "Global Cache Blocks Lost" ,理想情况下这个值是0,如果有较大的block lost,说明网络有问题(按照MOS 文档563566.1进行网络检查)。
还可以请网管查看私网的性能情况。
第四步,检查LMS。
1. 查看LMS的trace file,查看是否有异常。
2. 查看LMS进程的优先级是否是实时的(real time)的?
比如AIX:
# ps -elf|grep lms
ps -elf|grep lms
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
240103 A oracle 4719002 1539 -- 8ae40b590 248856 Jul 28 - 570:45 ora_lms0_rac1
priority 越小说明优先级越高,PRI小于40说明是Real Time的:
http://aix4admins.blogspot.co.uk/2011/08/commands-and-processes-process-you-use.html
3. 查看LMS的个数:
SQL>show parameter GCS_SERVER_PROCESSES
这个值决定了LMS的个数
这个值依赖于CPU的个数(cpu_count),根据11.2官方文档:
http://docs.oracle.com/cd/E11882_01/server.112/e25513/initparams094.htm#REFRN10259
Default value
If 1 - 3 CPUS, then 1
If 4 - 15 CPUs, then 2
If 16 or more CPUs, then 2 + (CPUs / 32). If the result includes a fraction, then the fraction is disregarded. For example, if you had 20 CPUs, then 2 + (20 / 32) would equal 2 GCS processes.
If CLUSTER_DATABASE is set to false, then 0
If ASM, then 1
在AIX上,有的时候CPU可能是动态增加的,那么一定要注意检查LMS进程的个数是否随之调整了。
oracle查询导致 gc等待,如何诊断Oracle RAC系统中的等待事件gc cr multi block request?...相关推荐
- Oracle查询对应表是否在使用,oracle 中查询当前用户可以看到的表名、表对应的所有字段...
1.oracle 查询当前用户下的表名,表注释 select t.table_name, f.comments from user_tables t inner join user_tab_comme ...
- oracle查询超过5000行报错,oracle系列教材 (十七)- 阶段性练习2
8 个答案 inon 答案时间:2020-03-01 --查询部门编号大于等于50小于等于90的部门中工资小于5000的员工的编号.部门编号和工资 select employee_id,salary, ...
- oracle分布式事物锁,ORA-02049:超时:分布式事务处理等待锁诊断-Oracle
正式环境有两个数据库A和B,在A库上建的dblink,业务是要将A库中的一些表,通过dblink更新到B库中去,更新的时候总是报错:ORA-02049: 超时: 分布式事务处理等待超时. 之前我写过一 ...
- oracle查询游标行数,如何查找Oracle PL/SQL游标中的记录数量?
NB:我刚才重读你的问题..你要失败的.如果只有1个记录.. 我会后在某一时刻有新的更新.. ,让我们开始在这里.. 从的Oracle®数据库PL/SQL用户指南和参考 10g第2版(10.2) 型号 ...
- oracle查询第二个字为a,Oracle多表查询 - osc_yqnlq679的个人空间 - OSCHINA - 中文开源技术交流社区...
本节剖析Oracle多表查询中的相关内容. 本文所用到的表为oracle中scott用户下的emp表,dept表,数据如下: 一.笛卡尔集: 概念:假设A,B是2个集合,A X B所形成的集合叫笛卡尔 ...
- oracle父游标和子游标,诊断Oracle high version count(高版本游标)问题
什么是high version cursor(高版本游标)?对于一个特定的游标有多少个版本就属于高版本游标是没有明确定义的.对于不同的系统有不同 什么是high version cursor(高版本游 ...
- oracle查询案例,2道经典的oracle查询案例
第一题: 第一题: 直接贴代码: select Id,Name,Money,(select Money from test1 a where a.Id = decode(b.Id - 1,0,null ...
- oracle查询cpu占用率高,解决oracle进程CPU占用过高问题
解决问题的过程: 1)查看服务器CPU使用情况 输入top 会发现排在前面的都是oracle的进程,而且CPU占用率都是50以上. $top top - 16:28:41 up 4 days, 22: ...
- oracle查询时定义临时的变量,oracle学习笔记之临时变量的使用
在oracle中临时变量可以用&|&& name 的格式代表临时变量使用& 和使用&& 是有区别的 以下是一个不使用临时变量的查询语句: SQL&g ...
最新文章
- 小时代5-perl的INC设置分析
- idea 编写javafx_用JavaFX编写图块引擎
- 结构化数据建模——titanic数据集的模型建立和训练(Pytorch版)
- mysql rr和rc_MySQL Transaction--RC和RR区别
- spring mvc注解之@RequestBody和@RequestParm
- (转)Hibernate框架基础——多对多关联关系映射
- ASP.NET Core 新建项目(Windows) - ASP.NET Core 基础教程 - 简单教程,简单编程
- 3992. 树上有猴-AcWing题库
- Markdown桌面最佳编辑器
- bitset优化传递闭包
- 快速学习Ant Design-简介
- Java 分布式面试题集合
- 数学杂谈:高维空间向量夹角小记
- 账号密码管理系统html,管理员密码一般是啥
- 手机home键、POWER 键分别是什么
- macOS 中英文输入法切换终极解决方案
- 织梦php数据库修改密码,如何使用phpmyadmin修改织梦后台密码
- Java实现微信开发者-测试账号申请及配置
- 华为5g cpe 虚拟服务器,购买华为5G CPE Pro 2之前你需要知道这些
- STM32---设备电子签名