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

限制条件

仅支持Oracle 10g、11g、12c版本。

使用流程

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

采集信息

  1. 下载采集器。
    1. 登录数据库与应用迁移控制台
    2. 单击左侧导航栏的迁移实验室,单击右侧SQL周期性采集下方的下载
    3. 数据库采集器下载页面单击下方的下载按钮。
    4. 选择数据库采集器的版本,并同意协议,完成数据库采集器的下载。数据库采集器下载
      说明
      • 数据库采集器运行环境要求:
        • 数据库采集器所在的机器网络可连接Oracle源数据库即可,无需安装在源数据库物理机上。
        • 内存需达到6 GB以上,同时硬盘空间需满足500 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 * * ? 2021 2021年的每天10:15触发。
    0 15 10 ? * 6L 2021-2025 2021年~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. 登录数据库与应用迁移控制台
  2. 单击左侧导航栏的迁移实验室,单击右侧SQL周期性采集下方的详情SQL周期性采集
  3. 单击上方的创建项目,填写项目名,数据库类型选择Oracle,上传采集到的数据文件,单击创建创建周期性采集项目
  4. 单击目标项目操作栏的详情,查看采集评估结果。pgjg
    说明 您可以点击目标SQL的查看按钮查看具体SQL错误信息的分析情况。