十章工程目录
2. DDL 与数据库对象
- Oracle SQL 治理检查:COLUMN ADD NOT NULL REQUIRE DEFAULT · none · unverified
- Oracle SQL 治理检查:COLUMN COMMENT · none · unverified
- Oracle SQL 治理检查:COLUMN MAXIMUM CHARACTER LENGTH · none · unverified
- Oracle SQL 治理检查:COLUMN MAXIMUM VARCHAR LENGTH · none · unverified
- Oracle SQL 治理检查:COLUMN NO NULL · none · unverified
- Oracle SQL 治理检查:COLUMN REQUIRE DEFAULT · none · unverified
- Oracle SQL 治理检查:COLUMN REQUIRED · none · unverified
- Oracle SQL 治理检查:COLUMN TYPE DISALLOW LIST · none · unverified
3. 查询与结果语义
- Oracle SQL 治理检查:STATEMENT WHERE REQUIRE SELECT · none · unverified
- CONNECT BY 层次查询 · full · doc_based
- LEVEL 层次伪列 · partial · doc_based
- (+) 传统外连接标记 · partial · doc_based
- ROWNUM 伪列 · full · doc_based
- DUAL 虚表 · full · doc_based
- 序列伪列引用(seq.NEXTVAL / seq.CURRVAL) · full · doc_based
4. DML 与数据写入
- Oracle SQL 治理检查:STATEMENT INSERT MUST SPECIFY COLUMN · none · unverified
- Oracle SQL 治理检查:STATEMENT WHERE REQUIRE UPDATE DELETE · none · unverified
5. 函数与表达式
- DECODE 函数 · full · doc_based
- INSTR 函数(3/4 参数形态) · partial · doc_based
- NVL2 函数兼容性 · partial · doc_based
- SUBSTR 负起始位置(从尾部计数) · full · doc_based
- TO_CHAR 函数(日期/数值格式模型差异) · partial · doc_based
- TO_DATE 函数(格式模型差异) · full · doc_based
- ADD_MONTHS 函数 · full · doc_based
- LAST_DAY 函数 · full · doc_based
6. 事务与并发
- Oracle SQL 治理检查:BUILTIN PRIOR BACKUP CHECK · none · unverified
- Oracle SQL 治理检查:STATEMENT DISALLOW TRUNCATE · none · unverified
- Oracle SQL 治理检查:STATEMENT DML DRY RUN · none · unverified
7. PL/SQL 与存储程序
8. 序列、同义词与触发器
9. 性能与分布式架构
- Oracle SQL 治理检查:STATEMENT SELECT NO SELECT ALL · none · unverified
- Oracle SQL 治理检查:STATEMENT WHERE DISALLOW FUNCTIONS AND CALCULATIONS · none · unverified
- Oracle SQL 治理检查:STATEMENT WHERE NO LEADING WILDCARD LIKE · none · unverified
10. 驱动与应用层
优先核对的高风险场景
CDB/多租户与排序规则 DDL 子句(SHARING / DEFAULT COLLATION / CONTAINER_MAP)
none · doc_based · 需结合精确环境 PoC。
EDITIONABLE / NONEDITIONABLE 关键字
none · doc_based · 需结合精确环境 PoC。
LEVEL 层次伪列
partial · doc_based · 树深度在递归 CTE 锚点置 depth=1、递归成员置 depth+1;纯行生成须区分根行契约:无 START WITH 且无其他根过滤时,Oracle 在 n<=0/NULL 仍保留 1 个根行,改为无条件产生 1 的递归 CTE 锚点、仅在下一层满足 LEVEL<=n 时递归,或给 generate_series 显式补该分支;有 START WITH/根过滤时才允许根行被过滤为零行
INSTR 函数(3/4 参数形态)
partial · doc_based · 需结合精确环境 PoC。
NVL2 函数兼容性
partial · doc_based · 需结合精确环境 PoC。
(+) 传统外连接标记
partial · doc_based · a.id = b.id(+) 保留 a,改 a LEFT JOIN b ON (...);marker 在左侧时按保留侧改 RIGHT JOIN 或交换表序后改 LEFT JOIN。同一可空表的全部 (+) 谓词(含 b.flag(+) = 常量)必须整体移入 ON, 留在 WHERE 会消掉 NULL 扩展行。含 OR/IN、同一表混合左右 marker、跨多表 marker 不一致或 NEW/OLD 伪表时只给人工方案,不自动重排连接图。
TO_CHAR 函数(日期/数值格式模型差异)
partial · doc_based · 数值映射数值模型;DATE/TIMESTAMP 映射日期模型;TIMESTAMP WITH LOCAL TIME ZONE 先按源 session time zone 展示;INTERVAL 单参数保留 literal 数字表示、带格式时逐元素重建;同步映射 TZR/TZD、FF 小数秒和 NLS
LPAD / RPAD 函数(NULL 与多字节行为)
partial · doc_based · 需结合精确环境 PoC。
MONTHS_BETWEEN 函数
partial · doc_based · 先读取 NLS_CALENDAR 并算有符号整月差;同日号/双月末直接返回整数,否则加 (日号差+秒内时间差/86400)/31,禁止用实际日期相减重复计入整月;非公历走专用实现
TO_NUMBER 函数(格式模型与容错子句)
partial · doc_based · 单参数清洗后显式 cast;格式串逐 token 处理 L/C/U/$ 货币、S/MI/PR 符号、V 缩放、EEEE 科学计数及 NLS;DEFAULT ON CONVERSION ERROR 只捕获 char 转数值错误,default 用同 fmt/NLS 再转且 default 自身失败继续报错,表达式求值错误不得吞掉
既有改造点明细
上线前验证清单
- 精确版本、模式、参数、字符集、时区与驱动元数据
- DDL 建删、数据值域、事务回滚、并发冲突与异常行为
- 执行计划、统计信息、分片键、跨分片事务与热点写入
- 改造前后结果集、性能基线、回退条件与复扫闭环