# O2T执行计划疑似分析工具  

  使用Oracle SPA工具，抓取生产数据库中的执行SQL语句;
  解析SQL语句，进行变量赋值后；
  在TiDB执行SQL语句重放；
  分析TiDB的SQL语句执行结果；



## 脚本名称和功能

原子脚本名称

|   脚本名称                |           脚本功能          |
| ----------------------   | -------------------------  |
|  SqlAnalyzer.py          |  SQL语句分析主脚本          |
|  SqlAnalyzer.ini         |  配置文件                  |
|  1_json.demo             |  SQL文本文件示例            |
|  1_txt.demo              |  SQL文本文件示例            |
|  ignorefile.demo         |  SQL文本文件示例            |



## 脚本执行步骤
```
python3 SqlAnalyzer.py --config=SqlAnalyzer.ini --sqlfromoraspa=yes
```

1. 在Oracle生产环境部署SPA程序,定时抓取库内执行的SQL语句
2. 将SPA捕捉到的SQL语句exp/imp到Oracle测试环境
3. 删除重复数据后,在测试环境unpack SPA中的SQL语句
4. 获取Oracle测试库内的SQL语句和变量值
5. 重写Oracle的SQL语句,修改为TiDB可执行的语句
6. 在TiDB测试库执行修改后的语句,输出执行结果,结果包含:执行成功、失败信息、执行耗时、执行计划等
7. 将SQL语句在TiDB的执行结果入库


## 主要功能
* SQL语句中的变量赋值
* SQL语句使用not in/not exists匹配
* SQL语句使用函数匹配
* TiDB执行explain analyze,记录执行耗时


