本文介绍Oracle数据库周期性采集SQL信息以及数据分析的方法。
前提条件
Oracle数据库版本为10g、11g、12c。背景信息
周期性采集可以根据自定义的采集周期,持续采集Oracle的SQL信息,并对SQL信息自动合并。说明 周期性采集目前只在离线采集器中支持,线上采集暂未支持。您需要先采集Oracle数据库的SQL信息,详情操作请参见采集信息。
使用流程
- 采集SQL信息。说明 由于周期性采集目前只在离线采集器中支持,线上采集暂未支持。
- 分析SQL信息。说明 通过创建周期性采集项目,上传数据文件,系统则会为您进行SQL信息自动合并与分析。详情操作请参见分析信息 。
采集信息
- 下载采集器。
- 登录数据管理DMS 5.0。
- 在顶部菜单栏中,选择 。
- 在SQL周期性采集区域,单击下载。
- 在资源下载页面的数据库采集器下载区域,单击下载。
- 选择数据库采集器的版本,并同意协议,完成数据库采集器的下载。说明
- 数据库采集器运行环境要求:
- 数据库采集器所在的机器网络可连接Oracle源数据库即可,无需安装在源数据库物理机上。
- 内存需达到6 GB以上,同时硬盘空间需满足50 GB以上。
- 源库结构采集时,对收集结果数据自动进行参数脱敏。
- 源库结构采集时,自动监测目标库负载。当负载超过系统设定阈值时,自动暂停采集;当负载恢复后继续采集。
- 数据库采集器运行环境要求:
- 登录Oracle源数据库,使用具有SYSDBA权限的账号创建数据采集的临时账号并配置权限。说明
- 若您已有包含下面权限的账号,请忽略此步骤,直接使用。
- 以下权限用于连接Oracle数据库,收集相关信息并对结果数据脱敏导出。
- Oracle 10g、11g、12c(非CDB模式,创建LOCAL USER类型用户)
--创建采集用户eoa_user, 并设置密码为eoaPASSW0RD create user eoa_user identified by "eoaPASSW0RD" default tablespace users; --授予查询权限 grant connect,resource,select_catalog_role,select any dictionary to eoa_user; --授予DBMS_LOGMNR权限 --版本为Oracle 10g的数据库需要先执行如下语句: CREATE OR REPLACE PUBLIC SYNONYM dbms_logmnr FOR sys.dbms_logmnr; grant execute on DBMS_LOGMNR to eoa_user; --授予DBMS_METADATA权限 grant execute on dbms_metadata to eoa_user; --授予查询事务权限 grant select any transaction to eoa_user; --授予分析表权限 grant analyze any to eoa_user; --授予产生随机编号权限 grant execute on dbms_random to eoa_user;
- Oracle 12c(CDB模式,需要连接到CDB,创建COMMON USER类型用户)
create user c##eoa_user identified by "eoaPASSW0RD" default tablespace users; grant connect,resource,select_catalog_role,select any dictionary to c##eoa_user container=all; grant execute on DBMS_LOGMNR to c##eoa_user container=all; grant execute on dbms_metadata to c##eoa_user container=all; grant select any table to c##eoa_user container=all; grant select any transaction to c##eoa_user container=all; grant analyze any to c##eoa_user container=all; grant execute on dbms_random to c##eoa_user container=all; alter user c##eoa_user set container_data=all container=current;
- 启动采集(在Windows环境下执行.bat;在Linux 环境下执行.sh,本文以Linux环境介绍如何进行数据采集)。
- Oracle 10g、11g
sh collect_10g_cycle.sh –h <ip> -u <username> -p <password> -d <service_name> -c <cron>
sh collect_11g_cycle.sh –h <ip> -u <username> -p <password> -d <service_name> -c <cron>
- Oracle 12c
sh collect_12c_cycle.sh –h <ip> -u <username> -p <password> -d <service_name> -s <sid> -c <cron>
说明 上述命令各参数解释如下:- -h(必选):采集数据库的IP地址。
- -u(必选):采集用户。
- -p(必选):采集用户的密码。
- -d(必选): 采集数据库的服务名。
- -s(仅Oracle 12c需要提供此参数):采集数据库实例名。
- -c(必选):cron表达式,用来指定采集的周期性。格式为:
秒分时 日月周[年]
。
周期性采集会根据cron表达式配置的周期持续进行,为了帮助您理解,下面介绍一些常用的cron表达式示例。同时您也可以随时可以停止采集(kill进程号)。
表达式 说明 0 */1 * * * ? 每隔1分钟触发一次。 0 0 5-15 * * ? 每天5:00~15:00整点触发。 0 0/3 * * * ? 每隔3分钟触发一次。 0 0-5 14 * * ? 每天14:00~14:05期间每隔1分钟触发一次。 0 0/5 14 * * ? 每天14:00~14:55期间每隔5分钟触发一次。 0 0/5 14,18 * * ? 每天14:00~14:55和18:00~18:55两个时间段内每5分钟触发一次。 0 0/30 9-17 * * ? 每天9:00~17:00内每半小时触发一次。 0 0 10,14,16 * * ? 每天10:00、14:00和16:00触发。 0 0 12 ? * WED 每周三12:00触发。 0 0 17 ? * TUES,THUR,SAT 每周二、周四、周六17:00触发。 0 10,44 14 ? 3 WED 每年3月的每周三的14:10和14:44触发。 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发。 0 0 23 L * ? 每月最后一天23:00触发。 0 15 10 L * ? 每月最后一天10:15触发。 0 15 10 ? * 6L 每月最后一个周五10:15触发。 0 15 10 * * ? 2021 2021年的每天10:15触发。 0 15 10 ? * 6L 2021-2025 2021年~2025年的每月的最后一个周五上午10:15触发。 0 15 10 ? * 6#3 每月的第三个周五10:15触发。 - Oracle 10g、11g
- 导出采集结果。采集结束后,会提示您已生成数据包,日志文件如下:
[***] ****************************************************************** [***] * Collect Successfully! [***] * [***] * Complete the file packaging, the package result path is: [***] * ~rainmeter/out/data.zip ******************************************************************
查看分析信息
- 登录数据管理DMS 5.0。
- 在顶部菜单栏中,选择 。
- 在迁移实验室页面,单击SQL周期性采集区域的详情。
- 单击创建项目。
- 在创建周期性采集项目面板,输入项目名和数据库类型,单击上传,将本地采集的out/data.zip上传。
- 单击创建。
- 单击目标项目号右侧操作列中的详情,查看采集结果。说明 您可以点击目标SQL的查看按钮,查看具体SQL错误信息的分析情况。