AgilePLM数据库参数优化建议

本文介绍了在AgilePLM系统维护中,如何根据并发用户数和应用数动态调整Oracle数据库参数以预防问题。主要内容包括最大连接数的计算方法,考虑并发用户数和应用数的影响,以及内存参数如SGA、PGA和memory_target的调整策略。操作步骤包括检查和修改数据库参数,并提供了重启数据库的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求描述

在AgilePLM的维护过程中随着用户数和应用数的增加会遇到一些数据库的问题,建议大家提前调整好数据库的参数,可以有效预防问题发生。避免对生产环境造成不必要的损失。

主要问题

  1. AgilePLM Oracle默认的链接数为150,需要根据并发用户数和应用数动态调整。
  2. AgilePLM Oracle的内存设置需要根据并发用户数以及物理内存动态调整。

解决思路

Oracle最大连接数

最大连接数的建议值和如下参数息息相关。

并发用户数

首先并发用户数最多,连接数就要调的越大。那什么是并发用户数?

并发用户数指的是同时登录系统的用户数。举个例子:一个企业的内部管理系统,总共的注册用户数是1000,这个叫潜在用户数。

这1000的注册用户可能只有500个用户会每天登录系统使用系统。那这个才是并发用户数。不使用系统的用户是不会占用数据库连接数的。

最大连接数应该要大于并发用户数。在上面的案例中,最大连接数最好要>=500。

应用数

应用数是指连在同一个Oracle数据库上的系统数量。在AgilePLM的实施过程中,往往会开发额外的系统来提供额外的功能。每个系统都会有自己的数据库连接池。例如:

  1. Agile应用(包含文件服务器)
  2. 数据同步系统(CRM,ERP,MES等)
  3. Web操作系统(给Agile提供外挂菜单或者执行定时任务的系统)
  4. 事件程序系统(有的事件程序会额外创建数据库链接)

需要链接数据库的应用数越多,最大连接数就要设置的越大。因为每个应用都要占用数据库连接数。在使用Web程序界面做业务时,可能后台要连中间库,Agile数据库,还会触发事件程序。相对直接使用Agile标准功能,会额外占用数据连接数。

例如:在并发用户数不变的情况下,如果之前连接数为150可以满足日常使用,那应用数如果像上面的例子中,有4个,那建议将最大连接数调整到600以上。

注意:更大的连接数需要更大的内存设置作为支撑,连接数如果调整的过大内存支撑不了,数据库会报错,还需要相应的调整内存设置。

内存设置

内存设置指的是Oracle的SGA,PGA,共享池等相关设置。可以单独调整每一个参数,也可以通过一些目标参数来自动调整这些明细参数。

每个明细参数之间也是有关系,如果调整的不合理也会出现新的问题,所以这里建议对数据库调优不是特别熟悉的人调整目标参数。那目标参数有哪些?

Oracle 9i引入pga_aggregate_target,可以自动对PGA相关参数进行调整;

Oracle 10g引入sga_target,可以自动对SGA相关参数进行调整;

Oracle 11g则对这两部分进行综合,引入memory_target,可以自动调整所有的内存相关参数,也就是说只要调整这个参数Oracle就会自动帮我们调整好所有内存相关参数。那么memory_target调整到多大合适?

memory_target

一般来说,将memory_target设置为物理内存的50%到80%是比较安全的。具体的设置应根据系统负载、被调整服务器其他应用程序的需求和内存使用情况进行调整。确保在设置后监控数据库性能,以便根据实际情况进行进一步的优化。

例如:

假设您的服务器有64GB的物理内存,您可以考虑以下设置:

  • 保守设置:MEMORY_TARGET = 32G(50%)
  • 中等负载:MEMORY_TARGET = 40G(62.5%)
  • 高负载:MEMORY_TARGET = 48G(75%)

操作步骤

上面讲了很多的知识,这里给出实际的操作步骤。

注意事项

  1. 一旦用如下方式调整了数据库的参数,在windows操作系统中,如果使用系统服务的方式重启了数据库(或者断电自启)。参数是会重置的。这个时候需要用命令行的方式再重启一下,参数就会自动还原到服务重启前。知道怎么永久调整系统参数的小伙伴,也可以留言告知我。
  2. Agile数据库重启之后,还需要重启Agile应用以及所有关联应用。(文件服务器和Autovue可以不重启)

首先确保数据库使用spfile方式启动

--以下所有命令最好都在一个sqlplus命令行中执行。
-- 查看数据库是否亿spfile启动,如果values对应有值,表示是spfile启动的。否则就不是
show parameter spfile;
create spfile from pfile;

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup;
ORACLE 例程已经启动。

Total System Global Area                         3.4360E+10 bytes
Fixed Size                                          4639064 bytes
Variable Size                                    3892315816 bytes
Database Buffers                                 3.0400E+10 bytes
Redo Buffers                                       62468096 bytes
数据库装载完毕。
数据库已经打开。

--------------------- 内存参数调整 ---------------------------
--查看共享池大小
show parameter shared;
--查看target大小
show parameter target;
show parameter sga;

--先将sga和pga,target调成0,否则会影响memory_target的设置
alter system set sga_target=0 scope=spfile; 
alter system set pga_aggregate_target=0 scope=spfile;

--如果想要根据memory_target自动设置共享池大小,先将其设置为0
alter system set shared_pool_size=0 scope=spfile;  

--memory_target会自动调整sga_target和pga_aggregate_target以及所有内存相关参数
alter system set memory_target=16g scope=spfile; 

--------------------- 最大连接数调整 ---------------------------
-- 查看当前的连接数
select count(*) from v$process;
-- 查看最大连接数
show parameter processes;
show parameter session;
-- 修改最大连接数,session数会自动跟着调整
alter system set processes = 600 scope = spfile;


--------------------- 游标数调整 ---------------------------
--如果数据库报错ORA-01000: 超出打开游标的最大数
show parameter cursors;
alter system set open_cursors=1000 scope=both;

--重启让改动的设置生效
shutdown immediate;
startup;

问题解决

  1. 执行shutdown immediate命令关闭实例后,报错ORA-12514。
    1. 完整错误:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
    2. 解决方案:在链接数据库之前在cmd中执行set ORACLE_SID=agile9
  2. 为什么服务器断电或重启之后,系统会变得很慢。
    1. 原因:上文有提到,windows系统有一个Oracle的数据库服务,断电或者重启之后,服务会重启。这个时候参数会还原到初始值。这个问题在linux上不会出现。因为linux基本都是通过命令行启动数据库实例的。
    2. 解决方案:使用命令行重启一下数据库实例,之前优化的参数就会还原了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值