Oracle数据库测试方案
目 录
TOC \o "1-3" \h \z \u 1.测试背景 3
2.小机环境安装及配置 3
2.1.硬件需求 3
2.2.安装配置 3
2.3.补丁 3
3.安装Oracle及RAC 3
3.1.Oracle版本 3
3.2.数据库参数 3
4.划分存储 4
5.迁移数据 4
6.Oracle数据库压力测试 4
6.1.查看执行最频繁的sql 4
6.1.1.查看当前数据库执行次数最多的sql 4
6.1.2.查看历史快照中执行次数最多的sql 5
6.2.Jmeter配置 5
6.3.执行jmeter测试 6
7.变更字符集后数据库测试 6
7.1.数据库测试 6
7.1.1.查看当前数据库的字符集 6
7.1.2.数据测试 6
7.2.应用测试 7
7.2.1.综合统计系统 7
7.2.2.内主页 8
7.2.3.CMS 9
测试背景
信息中心提供AIX环境,安装oracle 11g RAC,作为测试机进行测试,为数据库迁移提供评估信息;同时要将数据库字符集从ZHS16GBK变更为AL32UTF8,为字符集变更进行测试。
小机环境安装及配置
硬件需求
1
OS
AIX7.xx
2
CPU
8物理cpu,32逻辑cpu
3
物理内存
32G
4
SWAP
32G
5
硬盘
rootvg:300G
6
存储
datavg:4T
7
硬件个数
2个小机Lpart组HA
安装配置
补丁
安装Oracle及RAC
Oracle版本
1
Oracle版本
11g,具体版本待定
2
RAC版本
同Oracle版本
3
字符集
AL32UTF8
3
数据库参数
同生产库
数据库参数
序号
参数
node1
node2
划分存储
存储需求
1
存储大小
4T
2
VG
datavg
迁移数据
Oracle数据库压力测试
基于生产库的数据基础,在测试机上对数据库性能进行压力测试,针对生产库的查询需求,以生产库中执行频繁的SQL为基础进行测试。
Oracle数据库压力测试采用jmeter对数据进行压力测试,测试sql采用生产数据库执行最频繁的TOP15
查看执行最频繁的sql
查看当前数据库执行次数最多的sql
通过查询V$SQLAREA或V$SQL的EXECUTIONS来查看SQL的执行次数,但是这个值的有效性需要结合FIRST_LOAD_TIME来判断。因为V$SQLAREA或V$SQL中不保存历史数据,具有一定的时效性,所以如果要查询很久以前的某个SQL执行次数是办不到的。
SELECT SQL_TEXT, EXECUTIONS
? FROM (SELECT SQL_TEXT,
?????????????? EXECUTIONS,
?????????????? RANK() OVER(ORDER?BY EXECUTIONS DESC) EXEC_RANK
????????? FROM V$SQLAREA)
?WHERE EXEC_RANK <= 15;
查看历史快照中执行次数最多的sql
通过DBA_HIST_SQLSTAT关联DBA_HIST_SNAPSHOT找出某些SQL的执行次数,但是部分快照如果没有捕获到有些SQL。这样也就无法通过下面SQL语句查看执行次数。也是就说这种方法是有缺陷的。执行越频繁的语句,也越容易被SNAPSHOT抓取到
SELECT M.SQL_ID ,
?????? TO_CHAR(N.BEGIN_INTERVAL_TIME, 'YYYY-MM-DD')?? "DATETIME",
?????? SUM(M.EXECUTIONS_DELTA)? EXECUTIONS
FROM DBA_HIST_SQLSTAT M, DBA_HIST_SNAPSHOT N
WHERE M.SNAP_ID? = N.SNAP_ID
? AND M.DBID = N.DBID
? AND M.INSTANCE_NUMBER = N.INSTANCE_NUMBER
? AND M.INSTANCE_NUMBER=1
? AND TO_CHAR(N.BEGIN_INTERVAL_TIME, 'YYYY-MM-DD') ='2014-11-20'
? AND M.SQL_ID=&SQL_ID
GROUP?BY M.SQL_ID , TO_CHAR(N.BEGIN_INTERVAL_TIME, 'YYYY-MM-DD')
ORDER?BY M.SQL_ID
Jmeter配置
(1) 复制ORACLE的JDBC驱