共计 3234 个字符,预计需要花费 9 分钟才能阅读完成。
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 |
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140527.htm