ITPub博客

首页 > 数据库 > Oracle > oracle 服务内存告警

oracle 服务内存告警

原创 Oracle 作者:winnzheng 时间:2025-02-06 14:55:43 0 删除 编辑

查看整体PGA\SGA使用情况

select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctused from

(select 'SGA' name,(select sum(value/1024/1024) from v$sga) total,

(select sum(bytes/1024/1024) from v$sgastat where name='free memory')free from dual)

union

select name,total,round(used,2)used,round(total-used,2)free,round(used/total*100,2)pctused from (

select 'PGA' name,(select value/1024/1024 total from v$pgastat where name='aggregate PGA target parameter')total,

(select value/1024/1024 used from v$pgastat where name='total PGA allocated')used from dual);



查看占用PGA进程

/*select pid,spid,substr(username,1,20) "USER" ,program,PGA_USED_MEM,PGA_ALLOC_MEM,PGA_FREEABLE_MEM,PGA_MAX_MEM from v$process 

where pga_alloc_mem=(select max(pga_alloc_mem) from v$process where  program not like '%LGWR%');*/



select pid,spid,substr(username,1,20) "USER" ,program,PGA_USED_MEM,PGA_ALLOC_MEM,PGA_FREEABLE_MEM,PGA_MAX_MEM from v$process 

where pga_alloc_mem=(select max(pga_alloc_mem) from v$process);


OS层查看占用SWAP的进程


for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n -r | head -20

for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n -r | head -20 |grep -i oracle


查看具体的SQL(比较慢)

select sql_text from v$sqlarea where address in  (select sql_address from v$session where paddr in (select addr from v$process where spid = 5789));


查看服务器内存使用情况

free -g

              total        used        free      shared  buff/cache   available

Mem:            125          67           2          25          56          28

Swap:            63           1          62


zabbix监控memory,为物理内存,触发器90%

swap 也有监控,此次swap长时间使用18gb,后系统卡死,数据库卡死。未出现swap不足。


1.      针对服务器设定OS限制参数(APM(岁修)时设定),确保数据库不会因为内存耗尽无法连线

2.      设定长时间占用(1小时)硬碟警报,确保第一时间响应

3.      设定监控找到问题SQL,针对问题SQL确认单点 or 惯犯,单点人工删除,惯犯于当日做出短解改正2日内完成长解改正 

4. 增加内存

5. 盘点并清理数据看内数据保存过长或是无意义的数据


cat /etc/sysctl.conf

vm.min_free_kbytes = 512000

vm.zone_reclaim_mode = 1



256GB设置为2GB: 2048000


vm.min_free_kbytes = 2048000

#vm.zone_reclaim_mode = 1


vm.min_free_kbytes 建议每32G内存分配1G vm.min_free_kbytes,单位是KB

推荐值:vm.min_free_kbytes = <内存值>*2% (上限5G)

推荐值:vm.zone_reclaim_mode = 1


(在内存分配不足,且内存需求较多,建议关闭,加速cache回收!)


对于线上128G的内存的机器,可以考虑将min设置为512M左右。因为,太大了,可能会导致内存的浪费;当然如果只有40G的物理机,更不要考虑把min设置超过1G了,这样会导致频繁的触发内存回收;具体优化也要根据业务来看


swap:

https://www.sohu.com/a/797151090_374240

https://www.modb.pro/db/1780155186081763328

https://blog.51cto.com/u_11529070/9181060

https://www.cnblogs.com/zphj1987/p/13639801.html

https://mp.weixin.qq.com/s?__biz=MzI2NzM1OTM4OA==&mid=2247513326&idx=1&sn=3fbe7e57b1cfb839a15dfd2ec2fcaf4b&chksm=ebad86313a5c7f3b837c816c35922a218907146f3fa455c35db39946a049a752790638ad7576&scene=27


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70031606/viewspace-3071172/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Happy --开心 Appreciation --心怀感恩 Passion --激情四溢 Performance --出类拔萃 Young --充满活力

注册时间:2023-09-04

  • 博文量
    30
  • 访问量
    24390