1.Environment
11.2.0.4 RAC

2.Symptoms
rac的一节点alert日志一直刷ORA-4031报错,提示shared pool不足,二节点并没有此报错

Sat Oct 09 09:53:30 2021
Errors in file /data1/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_smon_7537104.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 3896 bytes of shared memory ("shared pool","update sys.mon_mods$ set ins...","sga heap(1,0)","kglsim object batch")
Errors in file /data1/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_smon_7537104.trc:
ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 3896 bytes of shared memory ("shared pool","select ts#,file#,block#,cols...","sga heap(2,0)","kglsim object batch")

XXX:/data1/app/oracle$ oerr ora 4031
04031, 00000, "unable to allocate %s bytes of shared memory (\"%s\",\"%s\",\"%s\",\"%s\")"
// *Cause: More shared memory is needed than was allocated in the shared
// pool or Streams pool.
// *Action: If the shared pool is out of memory, either use the
// DBMS_SHARED_POOL package to pin large packages,
// reduce your use of shared memory, or increase the amount of
// available shared memory by increasing the value of the
// initialization parameters SHARED_POOL_RESERVED_SIZE and
// SHARED_POOL_SIZE.
// If the large pool is out of memory, increase the initialization
// parameter LARGE_POOL_SIZE.
// If the error is issued from an Oracle Streams or XStream process,
// increase the initialization parameter STREAMS_POOL_SIZE or increase
// the capture or apply parameter MAX_SGA_SIZE.
XXXX:/data1/app/oracle$

3.Changes
巡检时发现

4.Cause
sys@PES1DB2>show spparameter sga

SID NAME TYPE VALUE
-------- ----------------------------- ---------------------- ----------------------------
* lock_sga boolean
* pre_page_sga boolean
* sga_max_size big integer 3G
orcl1 sga_target big integer 1472M
* sga_target big integer 3G

两节点sga设置不一致,正常情况下,sga的设置所有节点生效,默认是*,此环境指定实例,指定实例的参数优先级更高,虽然*的设置为3G,但是实际上1G的参数生效。
规范的做法是删除指定实例的sga参数,需要重启。为了缩小影响,且sga_target参数为动态参数,故重新设置为3G即可。

5.Solution
ALTER SYSTEM SET sga_target='3G' SCOPE=BOTH SID='orcl1';

sys@PES1DB2>show spparameter sga

SID NAME TYPE VALUE
-------- ----------------------------- ---------------------- ----------------------------
* lock_sga boolean
* pre_page_sga boolean
* sga_max_size big integer 3G
orcl1 sga_target big integer 3G
* sga_target big integer 3G
sys@PES1DB2>

延续:主机收到告警
告警描述:#(系统+计算)内存使用率持续10分钟超过95%,内存使用中会发生换页空间切换,影响实际数据调用,可综合考虑是否扩容
告警时间:2021.10.09 11:21:12

---------
orcl1:/data1/app/oracle$ ps aux | head -1 ; ps aux | sort -rn +3 | head -10
查看确实是数据库相关的进程占用内存,进一步分析
8G主机内存,SGA 3G,PGA 1G,调整sga为2G,主机内存(nmon->m)从96%降为86%。

sys@PES1DB1>show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
pga_aggregate_target big integer 1000M

sys@PES1DB1>show parameter process

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
aq_tm_processes integer 1
cell_offload_processing boolean TRUE
db_writer_processes integer 4
gcs_server_processes integer 3
global_txn_processes integer 1
job_queue_processes integer 1000
log_archive_max_processes integer 4
processes integer 1000
processor_group_name string
sys@PES1DB1>show parameter session

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
session_cached_cursors integer 50
session_max_open_files integer 10
sessions integer 1536
shared_server_sessions integer

6.References
Diagnosing and Resolving Error ORA-04031 on the Shared Pool or Other Memory Pools (Doc ID 146599.1)
参考中还有更加详细的解释和介绍。
http://blog.itpub.net/26736162/viewspace-2137064/

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(10-7)译 -> TPH继承模型中使用存储过程
  2. 译:DOM2中的高级事件处理(转)
  3. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.0,完善基础功能(源码)
  4. Linux下MakeFile初探
  5. heartbeat安装与配置
  6. Linux----七个有效的文本编辑习惯
  7. Merge Two Sorted Lists—LeetCode
  8. HDU 3401 Trade(单调队列优化)
  9. Python in minute
  10. mysql进阶(五)数据表中带OR的多条件查询
  11. Hadoop-2.9.2单机版安装(伪分布式模式)(一)
  12. 嵌入式Linux系统的构成和启动过程
  13. Linux 学习之路 --------ip地址虚拟网络
  14. Kivy中文编程指南--https://cycleuser.gitbooks.io/kivy-guide-chinese/content/
  15. Linux 下安装 Mongodb
  16. quartz定时任务cron表达式详解
  17. pytorch实现autoencoder
  18. 26.如何使用python操作我们自己创建的docker image呢?
  19. 【AtCoder】ARC099题解
  20. BZOJ1558 等差数列

热门文章

  1. Spring之AspectJ
  2. 用vue实现扫描二维码跳转页面功能
  3. Blazor WebAssembly 应用程序中进行 HTTP 请求
  4. 检测一个页面所用的时间的js
  5. 剑指 Offer 33. 二叉搜索树的后序遍历序列
  6. 板子题 Sol
  7. Vue获取Abp VNext Token
  8. SpringSecurity-图解
  9. 动态拼接表达式——Expression
  10. Typescript详解