关于Oracle12C性能(sga、pga)调优记录

这篇博客记录了Oracle 12C数据库在面临并发访问时遇到的PGA_AGGREGATE_LIMIT和最大会话数问题。博主详细介绍了调优步骤,包括调整Linux系统参数如kernel.shmmax和kernel.shmall,以及优化Oracle数据库的SGA和PGA设置。在调优过程中,博主还处理了重启数据库时出现的ORA-27104和ORA-32001异常。

1、问题表现

系统因为访问并发量大,造成数据库连接失败,日志提取错误如下:

1.dpiStmt_execute: ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT

2.dpiStmt_execute: ORA-00018: maximum number of sessions exceeded

开发工程师建议研究一下这个两个报错,oracle数据库方面sessions  与  PGA_AGGREGATE_LIMIT 这两配置的方向。

2、系统环境

服务器(虚拟机)配置:40核CPU、32G内存

操作系统:Centos 7.6 64位

Oracle版本:oracle12c  12.2.0.*

3、调优步骤

3.1系统参数调优

查询系统物理内存(≈31G

> free

查询linux系统共享内存、消息队列、信号量的限制信息;

> ipcs -l

查询linux系统共享内存、消息队列、信号量的使用情况;

> ipcs -u

1)修改/etc/sysctl.conf 如下参数

经多人研究确认,oracle官方建议kernel.shmmax设置为系统内存的50%,也就是≈16G,所以就按这个调优了):

kernel.shmmax

当前内存为32G 时,kernel.shmmax值设为 内存 * 50% - 1  = 16*1024*1024*1024-1 = 17179869183

kernel.shmall

当前内存为32G 时,kernel.shmall值设为 内存 * 25% = 4194304    4G

2)使/etc/sysctl.conf生效

>/sbin/sysctl -p

3.2oracle参数调优

查询oracle当前参数配置情况(processs=500;sessions=2280

1)以dba身份登录查看sga和pga情况

SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。

SQL> show parameter sga;

NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
allow_group_access_to_sga      boolean  FALSE
lock_sga      boolean  FALSE
pre_page_sga      boolean  TRUE
sga_max_size      big integer 4816M   (计划改成 10000M)
sga_min_size      big integer 0
sga_target      big integer 4816M   (计划改成 10000M)
unified_audit_sga_queue_size      integer  1048576

PGA:Program Global Area是为每个连接到Oracle database的用户进程保留的内存 

SQL> show parameter pga;

pga_aggregate_limit      big integer 4500M  (计划改成 10000M)
pga_aggregate_target      big integer 1602M  (计划改成 4500M)

2)修改数据库参数

(sga_target不得大于sga_max_size,一般保持两者相等)

SQL> alter system set sga_max_size=10000M scope=spfile;
SQL> alter system set sga_target=10000M scope=spfile;
SQL> alter system set pga_aggregate_limit=10000M scope=spfile;
SQL> alter system set pga_aggregate_target=5000M scope=spfile;

3)重启数据库

SQL> shutdown immediate;

SQL> startup;

4、异常处理

4.1重启数据库异常ORA-27104

报错:ORA-27104: system-defined limits for shared memory was misconfigured   (原因:应该是oracle配置超出了linux内核共享内存的问题

查看参数文件恢复参数

修改:/home/app/oracle/product/12.2/dbs/spfileORCL.ora    (/home/app/oracle/product/12.2为安装目录

找到刚刚配置的*.sga_max_size和*.sga_target参数,恢复到初始值(可参考上方ORCL.__sga_target的值)。

4.2修改配置不生效异常ORA-32001

报错:ORA-32001:write to SPFILE requested but no SPFILE is in use

修复:

查看是否有spfile文件

sql> show parameter spfile;

如果没有,需要创建

sql> create spfile from pfile;

确认是否有了

sql> show parameter spfile;

然后再重新做3.2章节的修改配置。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值