oracle有很多特性在lightdb无法使用,使用该工具可以即时扫描某个在线数据库或本地文件夹中有哪些不兼容特性,-a -x对oracle不兼容特性有所区别,扫描范围可参考后续表格。
0、使用限制
- 默认扫描存储过程,函数及包
- 默认仅支持oracle数据库扫描
- 默认排除系统用户'SYS', 'SYSTEM', 'SYSMAN'
1、环境配置
用户需要下载安装oracle客户端:instantClient-basic-Windows.x64-11.2.0.4.0.zip
并将其加入path环境变量中,如‘D:\工具\instantclient-basic-windows.x64-11.2.0.4.0\instantclient_11_2’。
2、配置oracle连接字符串
检查并配置./conf/DBconfig.ini文件,必须有 'oracle' 节点,且有 'connectstring' 键值对。
将CheckUnsupportOracle\conf\DBconfig.ini中connectstring的取值替换为你需要的字符串。
OWNER字段:可选,大小写不敏感,用户不存在时会忽略该用户,多用户之间用逗号或者空格分割。

3、支持本地文件夹扫描
如果需要支持本地文件扫描,需要将待扫描的文件都放入到同级的files目录下即可,扫描结果参考log文件。
如果该文件夹没有,新建该files目录即可。

右键以管理员身份运行CheckUnsupportOracle.exe

等待执行结束,新增如下文件:


也可以从logs目录的文本文件中去查看不兼容扫描结果说明


4、扫描列表说明
| 序号 | 检测项 | lightdb-x | lightdb-a | 备注 |
| 1 | scandeleteTable | √ | √ | ==>Syntax check: perform an delete operation on a table,try 'delete from' for instead. |
| 2 | scanoperator | √ | √ | ==>Syntax check: ~= or ^= not support |
| 3 | scantrunc | √ | √ | ==>Syntax check: The return result of trunc() may be different Between oracle and lightdb! |
| 4 | scanNEXT | √ | √ | ==>Syntax check: NEXT() not support |
| 5 | scanByPLS_INTEGER | √ | √ | ==>Syntax check: type PLS_INTEGER not support |
| 6 | scandelete | √ | √ | ==>Syntax check: delete() may not support |
| 7 | scanexists | √ | √ | ==>Syntax check: exists() not support |
| 8 | scancreatetypeisrecord | √ | √ | ==>Syntax check: create type * is record not support |
| 9 | scanEXCEPTION | √ | √ | ==>Syntax check: type 'exception' not support |
| 10 | scanEXCEPTION_INIT | √ | √ | ==>Syntax check: EXCEPTION_INIT() not support |
| 11 | scanPRAGMA | √ | √ | ==>Syntax check: PRAGMA not support |
| 12 | scanNOCOPY | √ | √ | ==>Syntax check: NOCOPY not support |
| 13 | scanAUTHID | √ | √ | ==>Syntax check: AUTHID not support |
| 14 | scanconnectby | √ | √ | ==>Syntax check: 'connect by' not support |
| 15 | scanVARRAY | √ | √ | ==>Syntax check: VARRAY not support |
| 16 | scantable | √ | √ | ==>Syntax check: table() not support |
| 17 | scanFunparam | √ | √ | ==>Syntax check: String type not support |
| 18 | scanDeterministic | √ | √ | ==>Syntax check: Deterministic not support |
| 19 | scanescape | √ | √ | ==>Syntax check: q' not support |
| 20 | scaneRelationOperation | √ | √ | ==>Syntax check: > = or < = not support |
| 21 | scaneTYPEistableof | √ | √ | ==>Syntax check: TYPE * is table of * not support |
| 22 | scangoto | √ | √ | ==>Syntax check: goto not support |
| 23 | scanlablename | √ | √ | ==>Syntax check: <<lable_name>> not support |
| 24 | scankeep | √ | √ | ==>Syntax check: keep() not support |
| 25 | scanunpivot | √ | √ | ==>Syntax check: unpivot not support |
| 26 | scanDBLink | √ | √ | ==>Syntax check: DBLink not support |
| 27 | scangetclobval | √ | √ | ==>Syntax check: getclobval() not support |
| 28 | scanxmlparse | √ | √ | ==>Syntax check: xmlparse() not support |
| 29 | scant_table | √ | √ | ==>Syntax check: t_table() not support |
| 30 | scangather_table_stats | √ | √ | ==>Syntax check: gather_table_stats() not support |
| 31 | scanUTL_SMTP | √ | √ | ==>Syntax check: UTL_SMTP not support |
| 32 | scanUTL_RAW | √ | √ | ==>Syntax check: UTL_RAW not support |
| 33 | scanUTL_ENCODE | √ | √ | ==>Syntax check: UTL_ENCODE not support |
| 34 | scanprompt | √ | √ | ==>Syntax check: prompt not support |
| 35 | scansynonym | √ | √ | ==>Syntax check: create|drop synonym not support |
| 36 | scanconstant | √ | √ | ==>Syntax check: constant not support |
| 37 | scanNOCACHE | √ | √ | ==>Syntax check: NOCACHE not support |
| 38 | scanuser_tab_columns | √ | √ | ==>Syntax check: user_tab_columns not support |
| 39 | scancol_relation | √ | √ | ==>Syntax check: relation col not support |
| 40 | scantableandconstraint | √ | √ | ==>Syntax check: The same table name and constraint name are not support |
| 41 | scantableusingindex | √ | √ | ==>Syntax check: alter table using index not support |
| 42 | scancharType | √ | √ | ==>Syntax check: char type not support |
| 43 | scantableanddropindex | √ | √ | ==>Syntax check: alter table drop index not support |
| 44 | scanspoolc | √ | √ | ==>Syntax check: spool c not support |
| 45 | scanspooloff | √ | √ | ==>Syntax check: spool off not support |
| 46 | scanexecuteimmediatecommit | √ | √ | ==>Syntax check: execute immediate commit not support |
| 47 | scanwrapped | √ | √ | ==>Syntax check: wrapped not support |
| 48 | scaneisarrayof | √ | √ | ==>Syntax check: is array of * not support |
| 49 | scaneforceview | √ | √ | ==>Syntax check: FORCE VIEW not support |
| 50 | scanistableof | 只在包中检测 | √ | ==>Syntax check: Nested table not support |
| 51 | scandbms_scheduler | × | √ | ==>Syntax check: dbms_scheduler package not support |
| 52 | scanmergeinto | × | √ | ==>Syntax check: merge into not support |
| 53 | scanINSERTALL | × | √ | ==>Syntax check: INSERT ALL not support |
| 54 | scanRAISE | × | √ | ==>Syntax check: RAISE error not support |
| 55 | scandbms_registry_sys | × | √ | ==>Syntax check: dbms_registry_sys package not support |
| 56 | scandbms_registry | × | √ | ==>Syntax check: dbms_registry package not support |
| 57 | scanexternalconnection | × | √ | ==>Syntax check: (+) external connection not support |
| 58 | scanrowid | × | √ | ==>Syntax check: rowid not support |
| 59 | scanrownum | × | √ | ==>Syntax check: rownum not support |




![[C语言实现]数据结构之《关于我转生成队列这档事》](https://img-blog.csdnimg.cn/46d45057883f4e19851a5911be243727.png)














