Oracle Logminer性能测试
1 测试介绍
1.1 测试目的
通过模拟不同环境下LogMiner解析联机/归档日志文件运行情况,通过测试所获取的数据分析,通过对以下两点的验证来确定通过LogMiner技术技术可行性:
1、在日志文件不同大小、不同数据压力情况下对数据库服务器内存、CPU的影响;
2、并通过查询LogMiner的动态表和实际物理表中数据数目是否一致,验证其准确性。
1.2 测试环境
用途及说明 |
硬件配置 |
软件配置 |
其它说明 |
数据库服务器 |
型号:T420i 处理器:Intel(R)core(TM) i5 CPU M430 主频:2.2G 内存:2G 硬盘:300G |
操作系统:WindowXP 数据库及版本:Oracle10.2g IP地址:10.88.54.83 |
|
测试机 |
型号:T420i 处理器:Intel(R)core(TM) i5 CPU M430 主频:2.2GHz 内存:1.8 GB 显示器:1280*800 宽屏 |
操作系统:windows xp 浏览器及版本:ie8 |
1.3 测试方案
1.3.1 性能影响(针对目标一)
为了模拟实际运行环境,加入了Logminer运行背景环境,分别测试数据库在无操作、300个插入/秒操作、500个插入/秒操作情况下运行情况,并且对比日志文件50M、100M大小下运行情况
1.3.2 准确性(针对目标二)
1、数据类型
序号 |
数据类型 |
是否支持 |
问题处理 |
1 |
BINARY_DOUBLE |
8.1及以上 |
|
2 |
BINARY_FLOAT |
8.1及以上 |
|
3 |
CHAR |
8.1及以上 |
|
4 |
DATE |
8.1及以上 |
需设置时间格式,否则只能同步日期 alter system set nls_date_format='yyyy-MM-dd HH24:mi:ss' scope=spfile; |
5 |
INTERVAL DAY |
8.1及以上 |
|
6 |
INTERVAL YEAR |
8.1及以上 |
|
7 |
NUMBER |
8.1及以上 |
|
8 |
NVARCHAR2 |
8.1及以上 |
|
9 |
RAW |
8.1及以上 |
|
10 |
TIMESTAMP |
8.1及以上 |
|
11 |
TIMESTAMP WITH LOCAL TIME ZONE |
8.1及以上 |
|
12 |
VARCHAR2 |
8.1及以上 |
|
13 |
LONG |
9.2及以上 |
|
14 |
CLOB |
10.1及以上 |
需要设置如下: ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 插入时分为两条语句,另外插入二进制数据未进行测试 |
15 |
BLOB |
10.0及以上 |
2、DDL语句测试(未测试完毕)
序号 |
类型 |
是否支持 |
1 |
创建表(Create table) |
支持 |
2 |
删除表(Drop table) |
支持,出现两个语句,首先修改表名为临时表名,然后删除该临时表 监控该类型需要进行合并处理 |
3 |
创建作业(Create job) |
不支持 |
4 |
创建序列(Create sequence) |
支持 |
5 |
创建存储过程(Create pocedure) |
支持 |
6 |
增加字段(alter table TABLE add column) |
支持 |
7 |
删除字段(alter table emp drop column) |
支持 |
8 |
修改字段(alter table emp modify column) |
支持 |
9 |
修改列名(alter table rename column) |
支持 |
10 |
修改表名(rename emp to TABLE) |
支持 |
11 |
清除表数据(truncate table TABLE) |
支持 |
12 |
删除表(drop table TABLE) |
支持 |
13 |
恢复被删除的表(Flashback table TABLE to before drop) |
支持 |
14 |
NOT NULL约束(alter table TABLE modify COLUMN not null) |
支持 |
15 |
UNIQUE约束 |
支持 |
16 |
PRIMARY KEY约束 |
支持 |
17 |
FOREIGN KEY 约束 |
支持 |
18 |
CKECK 约束 |
支持 |
19 |
禁用/激活约束 |
支持 |
20 |
删除约束 |
支持 |
21 |
创建不唯一索引 |
支持 |
22 |
创建唯一索引 |
支持 |
23 |
创建位图索引 |
支持 |
24 |
创建反序索引 |
支持 |
25 |
创建函数索引 |
支持 |
26 |
修改索引 |
支持 |
27 |
合并索引 |
支持 |
28 |
重建索引 |
支持 |
29 |
删除索引 |
支持 |
30 |
创建视图(CREATE VIEW) |
支持 |
31 |
修改视图(CREATE OR REPLACE VIEW) |
支持 |
32 |
删除视图(DROP VIEW) |
支持 |
33 |
创建序列(CREATE SEQUENCE) |
支持 |
34 |
修改序列(ALTER SEQUENCE) |
支持 |
35 |
删除序列(DROP SEQUENCE) |
支持 |
3、其他问题测试
序号 |
问题 |
现象及处理方式 |
1 |
主子表插入数据测试 |
能够正常插入及同步 |
2 |
事务提交(commit、rollback) |
能够看到提交和未提交的内容,考虑在产品设计中加入DBMS_LOGMNR.COMMITTED_DATA_ONLY 参数,该参数只读取已经提交事务 |
3 |
批量更新时,影响多条数据,在联机日志中每一条更新数据对应生成一条语句 |
不影响,可同步获取再执行 |
4 |
更新和删除语句中带rowid |
加入去除rowid参数dbms_logmnr.NO_ROWID_IN_STMT |
5 |
2 测试结论
2.1 测试初步结论
1. 从性能影响测试中可以看出:
a) logminer加载分析过程随机器根据负载不同在6~21秒完成;
b) 加载分析过程并不随日志文件个数增加在时间、CPU、内存有较大变化;
c) 加载分析过程中受分析日志文件个数最大是内存,其次是CPU,耗时应影响较小;
2. 从准确性测试来看
a) 通过设置基本上能够获取DML语句(其中LOB字段还需要进行测试);
b) 从现有情况来看,DDL支持并不充分,需要进一步测试;
附测试数据:
|
联机日志大小 |
读取文件个数 |
运行作业数目 |
插入数据量 |
生成字典文件 |
加载处理 |
分析处理 |
log_contents |
|||||
大小(M) |
时间(秒) |
耗时(秒) |
CPU(%) |
内存(M) |
耗时(秒) |
CPU(%) |
内存(M) |
||||||
方案一 |
50M |
1个 |
0个 |
0笔/秒 |
47.5 |
12.7 |
1 |
1 |
309 |
5.5 |
25 |
438 |
600 |
3个 |
0个 |
0笔/秒 |
1 |
1 |
309 |
5.7 |
25 |
444 |
222,236 |
||||
5个 |
0个 |
0笔/秒 |
1 |
1 |
326 |
5.6 |
25 |
445 |
492,606 |
||||
10个 |
0个 |
0笔/秒 |
1 |
1 |
326 |
5.6 |
25 |
445 |
1,149,284 |
||||
方案二 |
50M |
1个 |
500个 |
估计300笔/秒 |
47.5 |
20 |
1 |
26 |
391 |
6.7 |
35 |
530 |
111,328 |
3个 |
500个 |
估计300笔/秒 |
1 |
21 |
473 |
6.4 |
37 |
619 |
372,389 |
||||
5个 |
500个 |
估计300笔/秒 |
1 |
25 |
534 |
6.8 |
44 |
692 |
622,390 |
||||
10个 |
500个 |
估计300笔/秒 |
1 |
30 |
624 |
6.7 |
39 |
780 |
1,254,748 |
||||
方案三 |
50M(未运行CPU80%,680M) |
1个 |
1000个 |
估计500笔/秒 |
47.5 |
54.7 |
3.5 |
71 |
688 |
15 |
80 |
806 |
35,892 |
3个 |
1000个 |
估计500笔/秒 |
1.5 |
41 |
688 |
14.4 |
78 |
777 |
384,743 |
||||
5个 |
1000个 |
估计500笔/秒 |
1 |
68 |
687 |
75 |
805 |
652,148 |
|||||
10个 |
1000个 |
估计500笔/秒 |
10 |
80 |
689 |
13.2 |
79 |
806 |
1,295,158 |
||||
方案四 |
50M(未运行CPU80%,667M) |
1个 |
2000个 |
估计1000笔/秒 |
47.5 |
73.7 |
5.5 |
84 |
691 |
14.6 |
78 |
808 |
133,844 |
3个 |
2000个 |
估计1000笔/秒 |
11.4 |
70 |
691 |
12 |
75 |
809 |
390,029 |
||||
5个 |
2000个 |
估计1000笔/秒 |
5.5 |
76 |
690 |
13.6 |
76 |
806 |
668,013 |
||||
10个 |
2000个 |
估计1000笔/秒 |
6.1 |
40 |
690 |
15.4 |
88 |
809 |
1,335,587 |
||||
方案五 |
100M(未运行CPU25%,464M) |
1个 |
500个 |
估计300笔/秒 |
23.8 |
8.7 |
0.8 |
26 |
484 |
4.1 |
30 |
573 |
268,715 |
3个 |
500个 |
估计300笔/秒 |
0.9 |
25 |
534 |
3.2 |
36 |
622 |
768,989 |
||||
5个 |
500个 |
估计300笔/秒 |
0.9 |
27 |
581 |
3.2 |
35 |
662 |
1,324,447 |
||||
10个 |
500个 |
估计300笔/秒 |
1.1 |
29 |
690 |
5.2 |
35 |
763 |
2,619,322 |