【Oracle专栏】ORA-04036 报错 PGA设置
Oracle相关文档,希望互相学习,共同进步
风123456789~-CSDN博客
1.背景
同事反馈系统页面点击一直在加载,等好久都不行,系统一直卡顿的没法用。
后台应用程序服务日志,提示: broken pipe
数据库Oracle19c, 检查session,发现没有锁表。
但是top命令看 很多会话的cpu使用率达到100%。
分析:
1)按经验猜想可能是哪里sql写的不当 或 近期有升级考虑有疏漏导致。
但是发现session 中没有锁表,近期也没有升级。
2)猜想,可能是用户集中使用,并发数多导致服务器资源瓶颈。
但是发现服务器资源空闲还比较多。
3)检查业务发生时数据库报错日志,针对具体问题进行处理
ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT
本文针对以上数据库报错进行解决。
2. 实验
2.1 查询锁表 及 pid 对应SQL
--通过spid 查询正在执行的语句
SELECT a.SQL_TEXT, b.sid,b.serial#, a.SQL_ID, PROGRAM, MACHINE
FROM V$SQLAREA a, v$session b
WHERE b.sid = any ( select s.sid from gv$process p, gv$session s where p.addr = s.paddr
and p.inst_id = s.inst_id and p.spid =171211 )
and a.ADDRESS = b.sql_ADDRESS ;
--查询锁表
select object_name, machine, s.sid, s.serial#,'alter system kill session '||s.sid||','|| s.serial# ||' ;' ss
from v$locked_object l, dba_objects o, v$session s
where l.object_id = o.object_id
and l.session_id = s.sid
--查询session
select count(*) from v$session
结果:
2.2 业务库报错查询
报错信息:ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT