SQL周期性采集

本文介绍Oracle数据库周期性采集SQL信息以及数据分析的方法。

前提条件

Oracle数据库版本为10g、11g、12c。

背景信息

周期性采集可以根据自定义的采集周期,持续采集Oracle的SQL信息,并对SQL信息自动合并。
说明 周期性采集目前只在离线采集器中支持,线上采集暂未支持。您需要先采集Oracle数据库的SQL信息,详情操作请参见采集信息

使用流程

  1. 采集SQL信息。
    说明 由于周期性采集目前只在离线采集器中支持,线上采集暂未支持。
  2. 分析SQL信息。
    说明 通过创建周期性采集项目,上传数据文件,系统则会为您进行SQL信息自动合并与分析。详情操作请参见分析信息

采集信息

  1. 下载采集器。
    1. 登录数据管理DMS 5.0
    2. 在顶部菜单栏中,选择集成与开发 > 异构数据库迁移(ADAM) > 迁移实验室
    3. SQL周期性采集区域,单击下载
    4. 资源下载页面的数据库采集器下载区域,单击下载
    5. 选择数据库采集器的版本,并同意协议,完成数据库采集器的下载。
      说明
      • 数据库采集器运行环境要求:
        • 数据库采集器所在的机器网络可连接Oracle源数据库即可,无需安装在源数据库物理机上。
        • 内存需达到6 GB以上,同时硬盘空间需满足50 GB以上。
      • 源库结构采集时,对收集结果数据自动进行参数脱敏。
      • 源库结构采集时,自动监测目标库负载。当负载超过系统设定阈值时,自动暂停采集;当负载恢复后继续采集。
  2. 登录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;
  3. 启动采集(在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>
      运行结果1
    • Oracle 12c
      sh collect_12c_cycle.sh –h <ip> -u <username> -p <password> -d <service_name> -s <sid> -c <cron>
      yxjg2
    说明 上述命令各参数解释如下:
    • -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 * * ? 20212021年的每天10:15触发。
    0 15 10 ? * 6L 2021-20252021年~2025年的每月的最后一个周五上午10:15触发。
    0 15 10 ? * 6#3每月的第三个周五10:15触发。
  4. 导出采集结果。
    采集结束后,会提示您已生成数据包,日志文件如下:
    [***] ******************************************************************
    [***] *     Collect Successfully!
    [***] *
    [***] * Complete the file packaging, the package result path is: 
    [***] *        ~rainmeter/out/data.zip ******************************************************************

查看分析信息

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择集成与开发 > 异构数据库迁移(ADAM) > 迁移实验室
  3. 迁移实验室页面,单击SQL周期性采集区域的详情
  4. 单击创建项目
  5. 创建周期性采集项目面板,输入项目名和数据库类型,单击上传,将本地采集的out/data.zip上传。
  6. 单击创建
  7. 单击目标项目号右侧操作列中的详情,查看采集结果。
    说明 您可以点击目标SQL的查看按钮,查看具体SQL错误信息的分析情况。