oracle压力测试过程

  • 格式:doc
  • 大小:45.50 KB
  • 文档页数:5

Oracle10g中可以使用两个命令就可以知道,该版本的数据库系统是下载版还是商业版,使用两个命令就可以确定。

最大session数:show parameters session.....................170 sessions //170是下载版数值当前连接数:select * from v$bgprocess最大进程数:show parameters process....................150 processes //150也是下载版数值查看当前连接到数据库的用户:select * from v$session默认系统最大session=min( session,process * 1.1 +5 )2SELECT * FROM V$PARAMETER WHERE NAME LIKE 'proc%';SQL>SQL> show parameter processesNAME TYPE V ALUE------------------------------------ ------- ------------------------------aq_tm_processes integer 1db_writer_processes integer 1job_queue_processes integer 4log_archive_max_processes integer 1processes integer 200这里为200个用户。

Select * from v$license 其中sessions_highwater纪录曾经到达的最大会话数。

3如何调整Oracle参数,使它支持更多的用户连接,在参数文件中有三个参数processeslicense_max_sessionslicense_max_users这三个参数相互作用影响着用户连接数license_max_sessions (同时连接数据库的会话数)license_max_users (数据库能够创建的用户数)如果设置为0就是不加限制。

如何查看Oracle的连接数?SQL> select count(*) from v$session #查看当前Oracle的连接数SQL> Select count(*) from v$session where status='ACTIVE'#查看当前Oracle的并发连接数SQL> show parameter processes #如何查看Oracle的最大进程数最大连接SQL> alter system set processes = value scope = spfile;重启数据库#修改连接如何对操作系统进行调优,使操作系统支持最大连接数?在solaris下,在安装Oracle前必须要调整系统参数,该参数文件位于/etc/下,名为system,里面有一个参数semsys:seminfo_semmns=1024,这个值是processor的最终控制值,这个参数表示UNIX系统总共可以分配的进程。

当Oracle的进程数超过操作系统的限制时,就会出现这样的错误。

maximum number of processes(150)exceeded,现在,你可以检查根据你自己的操作系统检查一下看怎样找到该参数。

AIX操作系统下,smIT chgsys 查看Maximum number of PROCESSES allowed per user系统缺省128。

如果连接数超过,也会有访问不了Oracle的问题.1,数据库压力测试工具JMeter 2.3.1下载地址:/site/downloads/downloads_jmeter.cgi2,压力测试参考教程/blog/620186简单介绍如下:JMeter 10步搞定ORACLE数据库并发测试与LoadRunner相比,JMeter是一个轻量级的测试工具,入门也简单,功能简单但都很实用,本文主要介绍其中一个功能点,数据库JDBC并发访问测试。

共分以下10个步骤。

1、下载软件,目前最新版为jmeter 2.3.12、COPY ORACLE的JDBC驱动JAR包文件(ojdbc14.jar)到JMeter的lib目录下。

ojdbc14.jar文件一般位于ORACLE的安装目录下的jdbc\lib目录中。

本人的就在C:\oracle\ora92\jdbc\lib目录中。

3、进入bin目录运行jmeter.bat启动jmeter.4、从测试计划里新增一个线程组.5、再从线程组下新增一个JDBC连接池配置.6、接着新增一个JDBC访问测试.7、再配置一个聚合报告,用来显示测试结果的.8、保存测试计划.9、从运行菜单启动测试.10、从聚合报告查看测试结果.3,pga的相关知识[转]Oracle如何估算PGA,SGA的大小,配置数据库服务器的内存ORACLE给的建议是: OLTP系统PGA=(Total Memory)*80%*20%。

DSS系统PGA=(Total Memory)*80%*50%。

ORACLE建议一个数据库服务器,分80%的内存给数据库,20%的内存给操作系统,那怎么给一个数据库服务器配内存呢?SQL> select * from v$pgastat;NAME V ALUE UNIT---------------------------------------------------------------- ---------- ------------aggregate PGA target parameter 104857600 bytes-----这个值等于参数PGA_AGGREGATE_TARGET的值,如果此值为0,表示禁用了PGA 自动管理。

aggregate PGA auto target 75220992 bytes-----表示PGA还能提供多少内存给自动运行模式,通常这个值接近pga_aggregate_target-total pga inuse.global memory bound 20971520 bytes-----工作区执行的最大值,如果这个值小于1M,马上增加PGA大小total PGA inuse 30167040 bytes-----当前分配PGA的总大小,这个值有可能大于PGA,如果PGA设置太小.这个值接近select sum(pga_used_mem) from v$process.total PGA allocated 52124672 bytes-----工作区花费的总大小maximum PGA allocated 67066880 bytestotal freeable PGA memory 0 bytes ----没有了空闲的PGAprocess count 23 ----当前一个有23个processmax processes count 25PGA memory freed back to OS 0 bytestotal PGA used for auto workareas 8891392 bytesmaximum PGA used for auto workareas 22263808 bytestotal PGA used for manual workareas 0 bytes ---为0自动管理maximum PGA used for manual workareas 0 bytes ---为0自动管理over allocation count 0如果PGA设置太小,导致PGA有时大于PGA_AGGREGATE_TARGET的值,此处为0,说明PGA没有扩展大于TARGET的值,如果此值出现过,那么增加PGA大小。

bytes processed 124434432 bytesextra bytes read/written 0 bytescache hit percentage 100 percent ---命中率为100%,如果太小增加PGArecompute count (total) 665119 rows selectedSQL> select max(pga_used_mem)/1024/1024 M from v$process; ----当前一个process消耗最大的内存M----------9.12815189SQL> select min(pga_used_mem)/1024/1024 M from v$process where pga_used_mem>0; ---process消耗最少内存M----------0.19186878SQL> select max(pga_used_mem)/1024/1024 M from v$process ; ----process曾经消耗的最大内存M----------9.12815189SQL> select sum(pga_used_mem)/1024/1024 from v$process; ----当前process一共消耗的PGASUM(PGA_USED_MEM)/1024/1024---------------------------28.8192501068115如何设置PGA呢?我们可以在压力测试阶段,模拟一下系统的运行,然后运行select (select sum(pga_used_mem)/1024/1024 from v$process) /(select count(*) from v$process) from dual;得到一个process大约占用了多少的内存,然后估算系统一共会有多少连接,比如一共有500个连接,那么Sessions=1.1*process +5=500,那么processes=450,再乘以一个process需要消耗的内存,就能大约估算出PGA需要设置多大。

最好将PGA设置的值比计算出的值大一点,PGA值设定好后,就可以根据系统的性质,如果系统为OLTOP,那么总的内存可以设置为PGA/0.16,最后也能估算出SGA的大小,建议还是多配点内存,反正便宜。

下面摘抄eygle的关于一个process能够分配的最大内存(串行操作)的规则:10gR1之前,对于串行操作(非并行)一个process能够分配的最大的内存为min(5%pga_aggregate_target,100m)10gR2之后,对于串行操作(非并行)一个process能够分配的最大内存有如下规则:如果pga_aggregate_target<=500m,那么最大的内存为20%*pga_aggregate_target.如果500m<pga_aggregate_target<=1000m,那么最大内存为100m.如果1000m<pga_aggregate_target<=2.5G,那么最大内存为10%*pga_aggregate_target.如果pga_aggregate_target>2.5G,那么最大内存为2.5G.SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ2 FROM SYS.x$ksppi x, SYS.x$ksppcv y3 WHERE x.inst_id = USERENV ('Instance')4 AND y.inst_id = USERENV ('Instance')5 AND x.indx = y.indx6 AND x.ksppinm LIKE '%&par%'7 /NAME V ALUE DESCRIB------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------_smm_max_size 20480 maximum work area size in auto mode (serial)SQL> show parameter pgaNAME TYPE V ALUE------------------------------------ ----------- ------------------------------pga_aggregate_target big integer 100M此处我的一个process能够分配的最大内存为20M,因为我的PGA=100M,符合上面的规则。