# 本地Oracle SQL流量回放到GaussDB分布式版/GaussDB集中式版
数据复制服务（Data Replication Service，简称DRS）支持将Oracle数据库的SQL流量回放GaussDB分布式版/GaussDB集中式版。通过DRS提供的录制回放任务，实现批量录制Oracle服务器上SQL流量，并在GaussDB上执行，旨在帮助应用在数据割接前及时发现问题（包括语法兼容性、语义正确性、性能差异等），协助应用顺利完成从Oracle到GaussDB的国产化数据库的替换。
#### 录制回放原理
流量录制回放主要分为流量录制和流量回放两个阶段：
1. 流量录制过程是从源数据库上将所需时间段内的全部业务SQL语句（包括增、删、改、查、DDL等），基本原理是通过网络抓包工具tcpdump在Oracle数据库服务器进行端口网络包（业务程序发送给Oracle的SQL请求数据包）的抓取并生成流量数据文件（pcap文件格式），然后基于Oracle协议解析（JDBC、OCI）成对应的业务SQL语句。
2. 流量回放是将录制到的全部业务相关SQL语句在目标数据库上进行执行（目标数据库需有源数据库的初始数据，一般通过迁移工具或备份还原来实现）。
图1录制回放原理   
![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002627022850.png)
#### 操作流程
图2操作流程   
![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002627192722.png)
#### 前期准备
- 在源库安装tcpdump命令，gzip命令，供后续抓包和流量文件压缩时使用。
- 在源库预留足够的磁盘空间用于存放流量文件。
- 准备录制回放的GaussDB数据库。 使用迁移工具（如DSG、英方、DRS等）将类生产的镜像库迁移到目标库。建议做一次备份，便于多次回放场景回放前可以回退。
  
- 准备录制回放的GaussDB数据库账号。
  表1GaussDB数据库权限列表 
  | 权限类别     | 权限说明                                                                                                                                                        |
  |:---|:---|
  | 库级权限      | 需要使用root或其他具有Sysadmin角色的数据库用户登录Postgres基库，赋予用户DATABASE的CONNECT权限。授权语句：GRANT CONNECT ON DATABASE TO ;                                                       |
  | SCHEMA级权限 | 需要使用 root、或其他具有Sysadmin角色的数据库用户登录数据库后，赋予用户SCHEMA的USAGE权限。授权语句：GRANT USAGE ON SCHEMA TO ;                                                                    |
  | 表级权限：    | 需要使用 root、或其他具有Sysadmin角色的数据库用户登录数据库后，赋予用户对象选择内表的SELECT，UPDATE，INSERT、DELETE、INDEX和ALTER权限，函数、存过和包的EXECUTE权限（根据回放SQL类型确定对应的DML和DDL权限）。授权语句：GRANT ON TO ; |
     
  
 
#### 流量抓取
1. Oracle库断开所有客户端连接。 由于Oracle库会在连接建立时约定执行SQL时的默认schema，为了避免后续解析出的SQL缺少schema信息，抓取流量之前，需要先Oracle服务器主动切断所有的客户端连接，建议使用Oracle的SHUTDOWN IMMEDIATE命令关停Oracle数据库。
   
2. tcpdump抓取Oracle库网卡流量。 在磁盘空间充足的磁盘目录下，执行以下命令，抓取流量文件，其中脚本前三行参数可以根据需要自行修改，参数含义说明如下：
   表2 
   | 参数名             | 修改说明                                     |
   |:---|:---|
   | orcl_port      | 用于执行Oracle的监听端口，非目标端口的流量会被自动过滤。        |
   | max_file_size      | 单个流量文件的大小（压缩前），超出之后脚本会自动切到下一个文件写入流量文件。   |
   | max_rotate_time | 单个流量文件的最大轮转时间，超出之后脚本会自动切到下一个文件写入流量文件。 |
      
   ```
   orcl_port='1521'
   max_file_size='512'    # MB
   max_rotate_time='3600'    # second
   cur_dir=`pwd`
   cat <<EOF > "${cur_dir}"/rotate_and_compress.sh
   #!/bin/bash
   FILE="\$1"
   DIR=\$(dirname "\$FILE")
   BASENAME=\$(basename "\$FILE")
   MAX_FILES=10000
   COUNT_FILE="\$DIR/.capture_count"
   # 1. 提取文件名中的 Unix 时间戳
   if [[ "\$BASENAME" =~ capture_([0-9]+)\.pcap([0-9]*) ]]; then
       TIMESTAMP="\${BASH_REMATCH[1]}"
       
       # 2. 使用 flock 仅保护序列号递增（花括号分组，不创建子 shell，变量可见）
       PADDED_SEQ=""
       {
           flock -x 200
           if [ -f "\$COUNT_FILE" ]; then
               CURRENT_SEQ=\$((10#\$(cat "\$COUNT_FILE")))
           else
               CURRENT_SEQ=0
           fi
           NEXT_SEQ=\$((CURRENT_SEQ + 1))
           PADDED_SEQ=\$(printf "%05d" "\$NEXT_SEQ")
           echo "\$NEXT_SEQ" > "\$COUNT_FILE"
       } 200>"\${COUNT_FILE}.lock"
       
       # 3. 以下操作在锁外执行
       READABLE_DATE=\$(date -d "@\$TIMESTAMP" +%Y%m%d_%H%M%S)
       NEW_NAME="\$DIR/capture_\${PADDED_SEQ}_\${READABLE_DATE}.pcap.gz"
       
       # 4. 压缩并删除原文件（降低 IO/CPU 优先级，减少对抓包的干扰）
       ionice -c 3 nice -n 19 gzip -1 -c "\$FILE" > "\${NEW_NAME}.tmp"
       if [ \$? -eq 0 ] && [ -f "\${NEW_NAME}.tmp" ]; then
           mv "\${NEW_NAME}.tmp" "\$NEW_NAME" && rm -f "\$FILE"
       else
           rm -f "\${NEW_NAME}.tmp"
       fi
       
       # 5. 检查文件数量，超过 10000 个时自动删除最老的文件
       FILE_COUNT=\$(find "\$DIR" -maxdepth 1 -name "capture_*.pcap.gz" | wc -l)
       if [ "\$FILE_COUNT" -gt "\$MAX_FILES" ]; then
           OLDEST_FILE=\$(ls -1 "\$DIR"/capture_*.pcap.gz 2>/dev/null | sort | head -n 1)
           if [ -n "\$OLDEST_FILE" ]; then
               rm -f "\$OLDEST_FILE"
           fi
       fi
   else
       # 兜底：如果没匹配到预期格式，直接正常压缩
       ionice -c 3 nice -n 19 gzip -1 "\$FILE"
   fi
   EOF
   # 赋予执行权限
   chmod +x "${cur_dir}"/rotate_and_compress.sh
   # 初始化计数器：读取已有最大编号，避免重启后序号归零误删新文件
   EXISTING_MAX=$(ls -1 "${cur_dir}"/capture_*.pcap.gz 2>/dev/null | \
       sed 's/.*capture_\([0-9]*\)_.*/\1/' | sort -n | tail -1)
   echo "$((10#${EXISTING_MAX:-0}))" > "${cur_dir}"/.capture_count
   sudo tcpdump -i any -nn -s 0 tcp port ${orcl_port} -C ${max_file_size} -G ${max_rotate_time} -Z root -z "${cur_dir}"/rotate_and_compress.sh -w "${cur_dir}"/capture_%s.pcap
   ```
   
3. Oracle库恢复客户端连接。 流量抓取开始之后，就可以让Oracle服务器恢复数据访问，如果之前是用SHUTDOWN IMMEDIATE关停了Oracle数据库，使用STARTUP命令重新启动Oracle服务器即可。
   
4. 抓取完成，将抓取到的流量文件上传到[华为云对象存储服务OBS](https://support.huaweicloud.com/qs-obs/obs_qs_0002.html)。
   抓取命令会在执行目录下生成capture开头，以gz结尾的文件，将这些文件上传到[华为云对象存储服务OBS](https://support.huaweicloud.com/qs-obs/obs_qs_0002.html)。
   
 
#### 创建录制回放任务
1. 在"录制回放管理"页面，单击"创建任务"。
2. 在"实例来源"页面，填选源数据库信息、目标数据库信息、网络类型、任务基本信息，单击"开始创建"。此处支持单击"使用上次创建信息"，使用上次创建任务实例缓存的信息。 
   - 源数据库信息
     图3源数据库信息   
     ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002733640907.png)
     表3源数据库信息 
     | **参数**                 | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                   |
     |:---|:---|
     | 实例来源                   | 选择"他云/本地"。                                                                                                                                                                                                                                                                                                                                                                                                                              |
     | 实例引擎类型                | 选择"Oracle"。                                                                                                                                                                                                                                                                                                                                                                                                                            |
     | 流量文件来源                  | 华为云OBS下载                                                                                                                                                                                                                                                                                                                                                                                                                               |
     | Access Key Id（AK）        | 访问密钥ID。与私有访问密钥关联的唯一标识符；访问密钥ID和私有访问密钥一起使用，对请求进行加密签名。                                                                                                                                                                                                                                                                                                                                                                                   |
     | Secret Access Key（SK） | 与访问密钥ID结合使用的私有访问密钥，对请求进行加密签名，可标识发送方，并防止请求被修改。 - 基于安全最小权限原则，AK/SK设置权限应该最小化。当临时AK/SK和永久AK/SK都可以使用时，建议用户使用[临时AK/SK](https://support.huaweicloud.com/iam_faq/iam_01_0620.html)。永久AK/SK仅用于临时AK/SK无法满足的场景，例如日志过多下载时间过长时，使用临时AK/SK可能出现超时失效问题。  - 用户的AK/SK信息会被系统加密暂存，直至该任务删除后自动清除。   |
     | Security Token          | 使用临时AK/SK时，必须使用SecurityToken，且建议有效期设置为24小时，否则回放过程中可能无法获取到OBS桶信息。                                                                                                                                                                                                                                                                                                                                                                       |
     | 桶名                    | 流量文件存储的OBS桶名。                                                                                                                                                                                                                                                                                                                                                                                                                            |
     | 流量文件前缀                 | OBS桶中文件名的前缀，可以筛选查询到含有该前缀的文件信息。                                                                                                                                                                                                                                                                                                                                                                                                          |
     | IP地址或域名               | 填写Oracle数据库的IP地址或域名，填写业务访问oracle服务器所使用的IP和端口，否则可能导致SQL流量被过滤。                                                                                                                                                                                                                                                                                                                                                                              |
     | 数据库服务名                 | 数据库服务名（Service Name/SID），填写业务访问oracle服务器所使用的服务名，否则可能导致SQL流量被过滤。                                                                                                                                                                                                                                                                                                                                                                        |
     | 用户密码设置                 | 如需使用手动选择对象功能请提供源库具备查询权限的用户名及密码。                                                                                                                                                                                                                                                                                                                                                                                                          |
     | 数据库用户名               | 填写Oracle数据库的用户名。                                                                                                                                                                                                                                                                                                                                                                                                                        |
     | 数据库密码                | 填写Oracle数据库的用户名所对应的密码。                                                                                                                                                                                                                                                                                                                                                                                                                  |
     | 选择流量文件                  | 选择所需的流量文件                                                                                                                                                                                                                                                                                                                                                                                                                                |
        
     
   
   - 目标数据库与源库镜像库信息
     图4目标数据库信息   
     ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002704001656.png)
     表4目标数据库信息 
     | **参数** | **描述**                                             |
     |:---|:---|
     | 实例来源      | 根据业务需要选择"华为云"、"华为云自建ECS"或"他云/本地"。                  |
     | 区域       | 当前所在的区域。                                            |
     | 项目      | 当前区域对应的项目。                                          |
     | 实例引擎类型  | 根据业务需要选"GaussDB分布式版"、"GaussDB集中式版"或"GaussDB透明多写版"。 |
     | 目标数据库实例   | 用户所创建的目标云数据库实例，请确认目标数据库已构建基线数据。                     |
     | 数据库名称     | 填写数据库名称。                                             |
     | 数据库用户名    | 填写数据库用户名。                                           |
     | 数据库密码    | 填写数据库用户名所对应的密码。                                      |
        
     表5源库镜像库信息 
     | **参数**     | **描述**                                                                                                                                                                                                                                                                                                                                                                                                      |
     |:---|:---|
     | 实例来源    | 选择"他云/本地"。                                                                                                                                                                                                                                                                                                                                                                                                  |
     | 实例引擎类型    | 数据库实例引擎类型："Oracle"。                                                                                                                                                                                                                                                                                                                                                                                           |
     | IP地址或域名 | 填写数据库的IP地址或域名。                                                                                                                                                                                                                                                                                                                                                                                              |
     | 端口       | 填写数据库的端口。                                                                                                                                                                                                                                                                                                                                                                                                   |
     | 数据库服务名 | Oracle数据库服务名（Service Name/SID），可以通过客户端工具连接到Oracle，请使用具有DBA权限的用户进行查询。 Service Name可以使用如下两种查询方式： -- select value from v$parameter where name like '%service_name%'; -- show parameter service_name; SID查询方式： -- select instance_name from V$instance; |
     | 数据库用户名   | 填写数据库用户名。                                                                                                                                                                                                                                                                                                                                                                                                  |
     | 数据库密码   | 填写数据库用户名所对应的密码。                                                                                                                                                                                                                                                                                                                                                                                            |
        
     
   
   - 网络类型
     图5网络类型   
     ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002703841744.png)
     表6网络类型 
     | **参数**     | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
     |:---|:---|
     | 网络类型     | 选择录制回放实例的网络类型，目前支持选择"EIP "、"VPC "和"VPN"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
     | 录制回放实例所在子网 | 请选择录制回放实例所在的子网。也可以单击"查看子网"，跳转至"网络控制台"查看实例所在子网帮助选择。 默认值为当前所选数据库实例所在子网，请选择有可用IP地址的子网。为确保回放实例创建成功，仅显示已经开启DHCP的子网。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
     | IP类型        | 选择录制回放实例的IP类型，目前支持选择"IPv4"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
     | 内网安全组    | 请选择录制回放实例所使用的内网安全组。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
     | 访问公网策略      | 网络类型选择"EIP"时，访问公网策略可选择SNAT或者EIP。 - SNAT：源网络地址转换（Source Network Address Translation，SNAT） 在同一个子网下的任务，可以共享一个SNAT规则访问公网。 说明： 使用SNAT规则的公网访问策略时，需要任务所在的VPC下有NAT网关，并确认任务所在的子网通过路由表跳转到该网关，并且网关在该子网下有对应的SNAT规则。   - EIP：弹性公网IP（EIP） 一个任务绑定一个EIP，通过该EIP访问公网。    |
     | 指定公网IP      | 网络类型选择"EIP"且访问公网策略选择EIP时可见，选择为DRS实例绑定的弹性公网IP。任务创建时，DRS将会自动绑定该弹性公网IP，等待任务结束后将自动解绑该弹性公网IP。 公网网络迁移产生的数据传输费用收取标准请参见：[弹性公网IP价格计算器](https://www.huaweicloud.com/pricing.html#/eip)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
     | 指定SNAT    | 网络类型选择"EIP"且访问公网策略选择SNAT时可见，选择为DRS实例设置的SNAT。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
        
     
   
   - 任务基本信息
     图6任务基本信息   
     ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002627074946.png)
     表7任务基本信息 
     | **参数** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
     |:---|:---|
     | 可用区    | DRS任务创建的可用区，选择跟源或目标库相同的可用区性能更优。                                                                                                                                                                                                                                                                                                                                                                                                                                 |
     | 企业项目  | 企业项目是一种云资源管理方式，企业项目管理服务提供统一的云资源按项目管理，以及项目内的资源管理、成员管理。请在下拉框中选择所在的企业项目，其中，default为默认项目。 更多关于企业项目的信息，请参见[《企业管理用户指南》](https://support.huaweicloud.com/usermanual-em/zh-cn_topic_0108763975.html)。 如果需要自定义企业项目，请在控制台右上角单击"企业"，进入"企业项目管理"页面创建，具体请参见《企业管理用户指南》中"[创建企业项目](https://support.huaweicloud.com/usermanual-em/zh-cn_topic_0108763964.html)"的内容。                                                 |
     | 任务名称  | 任务名称在4到50位之间，必须以字母开头，可以包含字母、数字、中划线或下划线，不能包含其他的特殊字符。                                                                                                                                                                                                                                                                                                                                                                                                            |
     | 描述   | 描述不能超过256位，且不能包含! = \< \> \& ' " \\ 特殊字符。                                                                                                                                                                                                                                                                                                                                                                                                                        |
     | I标签    | - 可选配置，对回放任务的标识。使用标签可方便管理您的任务。每个任务最多支持20个标签配额。  - 如果您的组织已经设定DRS的相关标签策略，则需按照标签策略规则为任务添加标签。标签如果不符合标签策略的规则，则可能会导致任务创建失败，请联系组织管理员了解标签策略详情。  - 任务创建成功后，您可以单击任务名称，在"标签"页签下查看对应标签。关于标签的详细操作，请参见[标签管理](https://support.huaweicloud.com/trafficrep-drs/drs_replay_tag.html)。   |
        
     
   
   
   
   
3. 录制回放实例创建成功后，在"测试连接"页面，填选源数据库信息、目标数据库信息，单击"目标库信息"处的"测试连接"，测试并确定与目标库连通后，单击"下一步"。 
   - 源数据库信息：
     图7源数据库信息   
     ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002733560853.png)
     表8源库信息 
     | **参数**                | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                  |
     |:---|:---|
     | 流量类型                  | 目前仅支持选择"PCAP流量包"                                                                                                                                                                                                                                                                                                                                                                                                                        |
     | Access Key Id（AK）      | 访问密钥ID。与私有访问密钥关联的唯一标识符；访问密钥ID和私有访问密钥一起使用，对请求进行加密签名。                                                                                                                                                                                                                                                                                                                                                                                     |
     | Secret Access Key（SK） | 与访问密钥ID结合使用的私有访问密钥，对请求进行加密签名，可标识发送方，并防止请求被修改。 - 基于安全最小权限原则，AK/SK设置权限应该最小化。当临时AK/SK和永久AK/SK都可以使用时，建议用户使用[临时AK/SK](https://support.huaweicloud.com/iam_faq/iam_01_0620.html)。永久AK/SK仅用于临时AK/SK无法满足的场景，例如日志过多下载时间过长时，使用临时AK/SK可能出现超时失效问题。  - 用户的AK/SK信息会被系统加密暂存，直至该任务删除后自动清除。   |
     | Security Token        | 使用临时AK/SK时，必须使用SecurityToken，且建议有效期设置为24小时，否则回放过程中可能无法获取到OBS桶信息。                                                                                                                                                                                                                                                                                                                                                                       |
     | 桶名                    | 流量文件存储的OBS桶名。                                                                                                                                                                                                                                                                                                                                                                                                                          |
     | 终端节点                 | OBS为每个区域提供一个终端节点，终端节点可以理解为OBS在不同区域的区域域名，用于处理各自区域的访问请求。                                                                                                                                                                                                                                                                                                                                                                                  |
     | 流量文件前缀                 | OBS桶中文件名的前缀，可以筛选查询到含有该前缀的文件信息。                                                                                                                                                                                                                                                                                                                                                                                                           |
     | IP地址或域名                | 填写Oracle数据库的IP地址或域名，填写业务访问oracle服务器所使用的IP和端口，否则可能导致SQL流量被过滤。                                                                                                                                                                                                                                                                                                                                                                              |
     | 数据库服务名                | 数据库服务名（Service Name/SID），填写业务访问oracle服务器所使用的服务名，否则可能导致SQL流量被过滤。                                                                                                                                                                                                                                                                                                                                                                         |
     | 用户密码设置                | 如需使用手动选择对象功能请提供源库具备查询权限的用户名及密码。                                                                                                                                                                                                                                                                                                                                                                                                          |
     | 数据库用户名                | 填写Oracle数据库的用户名。                                                                                                                                                                                                                                                                                                                                                                                                                         |
     | 数据库密码                   | 填写Oracle数据库的用户名所对应的密码。                                                                                                                                                                                                                                                                                                                                                                                                                  |
     | 选择流量文件               | 选择所需的流量文件。                                                                                                                                                                                                                                                                                                                                                                                                                               |
        
     - 目标数据库与源库镜像库信息：
       图8目标数据库信息   
       ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002733640917.png)
       表9目标数据库信息 
       | **参数**  | **描述**                                     |
       |:---|:---|
       | 目标数据库实例  | 用户所创建的目标云数据库GaussDB集中式实例，请确认目标数据库已构建基线数据。 |
       | 数据库名称   | 填写数据库名称。                                  |
       | 数据库用户名 | 填写数据库用户名。                                   |
       | 数据库密码  | 填写数据库用户名所对应的密码。                             |
          
       表10源库镜像库信息 
       | **参数**    | **描述**                                                                                                                                                                                                                                                                                                                                                                                                     |
       |:---|:---|
       | IP地址或域名 | 填写数据库的IP地址或域名。                                                                                                                                                                                                                                                                                                                                                                                             |
       | 端口       | 填写数据库的端口。                                                                                                                                                                                                                                                                                                                                                                                                   |
       | 数据库服务名  | Oracle数据库服务名（Service Name/SID），可以通过客户端工具连接到Oracle，请使用具有DBA权限的用户进行查询。 Service Name可以使用如下两种查询方式： -- select value from v$parameter where name like '%service_name%'; -- show parameter service_name; SID查询方式： -- select instance_name from V$instance; |
       | 数据库用户名  | 填写数据库用户名。                                                                                                                                                                                                                                                                                                                                                                                                    |
       | 数据库密码  | 填写数据库用户名所对应的密码。                                                                                                                                                                                                                                                                                                                                                                                             |
          
       
      
   
   
   
   
4. 在"选择对象"页面，选择需要回放的对象后选择"下一步"。可参考如下步骤进行手动选择或批量导入。 
   - 手动选择
     图9手动选择   
     ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002792091375.png)
     1. 选择需要回放的对象，单击![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002762852706.png)加入到已选择列表当中。
     
     2. 如果选取的是左侧的整个database，推荐单击database名称左边的"+"，将database展开，这将会帮助录放任务解析出不完整会话里的SQL。
        ![](https://support.huaweicloud.com/bestpractice-drs/public_sys-resources/note_3.0-zh-cn.png)
        不完整会话指在录制pcap文件之前，就已经链接上Oracle数据库的会话。这类会话在pcap文件中只有启动录制后的网络流量数据，所以SQL的抓取和解析结果可能会不完整。
        - 可以使用对象名映射功能对源数据库和目标数据库中的对象配置映射关系。在同步对象右侧已选对象框中，单击数据库对象右侧![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002762692788.png)按钮，在弹出框中，填写新的数据库名或者对象名，修改后的名称即为在目标数据库中回放时使用的名称。
          ![](https://support.huaweicloud.com/bestpractice-drs/public_sys-resources/note_3.0-zh-cn.png)
          首次创建任务时，在选择回放对象阶段可设置映射，后续不可编辑映射。
          
        
        - 当任务完成回放或者暂停时，通过任务的"编辑"按钮重新变更回放对象时，必须重置任务且勾选解析重置后生效。
        
        - 多次通过任务的"编辑"按钮变更回放对象时，在最后一次的编辑中未修改对象，则之前的编辑对象都不生效。
         
      
   
   - 批量导入。
     1. 单击选择对象页面的"批量导入"。
     
     2. 单击"添加文件"选择需要导入的对象文件。
     
     3. 单击"上传文件"完成回放对象文件导入。
        图10批量导入
        ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002792211567.png)
        可通过下载模板，在下载的Excel模板中，按照Excel中要求的格式，填写需要导入的对象信息。
        ![](https://support.huaweicloud.com/bestpractice-drs/public_sys-resources/note_3.0-zh-cn.png)
        - 本功能仅支持导入Windows Microsoft Excel 97-2003版本（\*.xls），2007及以上版本（\*.xlsx）的文件，本压缩包提供上述两个版本的模板。
        
        - 如果本地环境的Microsoft Excel(或者WPS)的软件版本较低，不支持编辑2007及以上版本（\*.xlsx）的文件，请选择Windows Microsoft Excel 97-2003版本（\*.xls）的模板（其行数上限为10000）。
        
        - 请勿通过直接修改模板后缀名的方式来修改文件格式，避免损坏文件，如果确实需要修改文件后缀名，请使用2007及以上版本的Excel（或其配套的WPS）的"另存为"功能，保存为新的后缀名。
        
        - 文件名支持的有效字符范围：汉字，空格，大小写字母，数字，"-"，"_"，"("，")"。
        
        - 文件内容中数据库对象名称不允许包含"\<"，"\>"，"."和"""，大小写敏感，且不支持以空格开头或结尾的对象。
        
        - Excel 中填写的对象名称的大小写须与源库中保持一致。
        
        - 再编辑时，导入的文件必须是修改后的全量对象信息，不支持导入要增删的对象信息。
        
        - 独立部署录制回放场景，必须严格按照模板分别填写第一列、第二列，第一列不为空并且要以测试连接时选择的数据库服务名开头，当测试连接源库数据库信息的数据库服务名选的的是Service Name，那么第一列要以Service Name开头，当测试连接源库数据库信息的数据库服务名选的的是SID，那么第一列要以SID开头；第二列可选填table、function、procedure、schema、package，可以为空，为空时默认对象类型为table，当第一列为四层结构时（如：service.schema.package.object），第二列的对象类型必须是package，当第一列为二层结构时（如：service.schema），第二列的对象类型必须是schema，且不能为空；同时填写同一个schema下的的多个相同对象时，以最小集合进行读取回放，支持链路为Oracle-GaussDB分布式 和 Oracle-GaussDB集中式版。
          
      
   
   
   
   
5. 在"任务配置"页面，填选配置信息，然后单击"下一步"。 
   图11任务配置   
   ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002704001660.png)
   表11任务配置 
   | **参数**          | **描述**                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|
   | SQL类型配置          | 选择回放到目标数据库SQL类型，可选SELECT、INSERT、UPDATE、DELETE、DDL。                                                                                                                                                                                                                                                                          |
   | 回放模式            | 可以选择"性能模式"或"事务模式"。 - 性能模式：可以设置并发连接数，回放过程中将按照设置的连接数在目标库回放。不保证源库的SQL在目标库回放时是同一个线程连接回放，回放性能较好。  - 事务模式：不可以设置并发连接数，将按照源库日志中连接信息动态调整连接数，可以保证源库同一个连接中的事务SQL顺序执行。   |
   | 回放SQL过滤        | 支持SQL内容模糊匹配过滤，将按照输入的条件信息模糊匹配回放SQL。                                                                                                                                                                                                                                                                                           |
   | 非条件过滤            | 该选项用于过滤SELECT，UPDATE，DELETE等类型的SQL中不包含条件的语句。                                                                                                                                                                                                                                                                                  |
   | 并发连接数           | 设置DRS录制回放任务的回放线程数，默认为8，输入值必须在1到100之间。                                                                                                                                                                                                                                                                                         |
   | 手动回放               | 打开开关后，解析完成后，不会自动开始回放。                                                                                                                                                                                                                                                                            |
   | IP地址解析过滤（多个值用，分割） | 来自该客户端的sql会被过滤掉，不参与统计。                                                                                                                                                                                                                                                                           |
   | 目标库回放SQL类型        | 选择回放原始SQL，还是UGO转换后的SQL。                                                                                                                                                                                                                                                                         |
   | 加速配置（倍速）          | 设置录制回放任务在相同时间内回放SQL的总量与源库执行SQL总量的比值，但无法超过录制回放任务的性能上限。可选"不限制" 、"100%"、"200%"。                                                                                                                                                                                                                                                 |
      
   
   
6. 在"预检查"页面，进行回放任务预校验，校验是否可进行。 
   - 查看检查结果，如有不通过的检查项，需要修复不通过项后，单击"重新校验"按钮重新进行任务预校验。
   
   - 预检查完成后，且所有检查项结果均通过时，单击"下一步"。
   
   
   
   
7. 在"任务确认"页面，设置回放任务的启动时间、任务异常通知设置、SMN主题、任务异常自动结束时间，并确认任务信息无误后，单击"启动任务"，提交回放任务。 
   图12任务启动设置   
   ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002627074948.png)
   表12任务启动设置 
   | **参数**          | **描述**                                                                                                                                                                        |
   |:---|:---|
   | 启动时间           | 回放任务的启动时间可以根据业务需求，设置为"立即启动"或"稍后启动"。 说明： 预计回放任务启动后，会对源数据库和目标数据库的性能产生影响，建议选择业务低峰期，合理设置任务启动时间。                                                      |
   | 任务异常通知设置     | 该项为可选参数，开启之后，选择对应的SMN主题。当回放任务状态异常时，系统将发送通知。                                                                                                                                  |
   | SMN主题         | "任务异常通知设置"项开启后可见，需提前在SMN上申请主题并添加订阅。 SMN主题申请和订阅可参考[《消息通知服务用户指南》](https://support.huaweicloud.com/usermanual-smn/zh-cn_topic_0043394914.html)。 |
   | 任务异常自动结束时间（天） | 设置任务异常自动结束天数，输入值必须在14到100之间，默认值14。 说明： 异常状态下的任务仍然会计费，而长时间异常的任务无法续传和恢复。设置任务异常自动结束天数后，异常且超时的任务将会自动结束，以免产生不必要的费用。                                |
      
   
   
8. 在"录制回放管理"页面，找到创建的任务，单击任务名。
9. 在"录制回放进度"页面，查看解析回放进度。 
   图13录制回放进度   
   ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002704021082.png)
   
   
 
#### 报告分析
1. 在"录制回放管理"页面，找到创建的任务，单击任务名。
2. 在"回放报告"页面，找到异常SQL统计列表，异常SQL详情列表，用户可以根据需求单击表格右上角的导出/下载按钮将报表导出并下载。 
   图14异常SQL统计列表   
   ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002657588195.png)
   图15异常SQL详情列表   
   ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002634737002.png)
   
   
3. 在"回放报告"页面，找到慢SQL统计列表，慢SQL详情列表，用户可以根据需求单击表格右上角的导出/下载按钮将报表导出并下载。 
   图16慢SQL统计列表   
   ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002657433021.png)
   图17慢SQL详情列表   
   ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002659962387.png)
   
   
4. 在"回放报告"页面，找到回放SQL统计，用户可以根据需求单击表格右上角的导出/下载按钮将报表导出并下载。 
   图18回放SQL统计   
   ![](https://support.huaweicloud.com/bestpractice-drs/zh-cn_image_0000002733645229.png)
   
   
 
