十章工程目录
full 0partial 0none 0unknown 15
2. DDL 与数据库对象
full 0partial 0none 16unknown 144
- 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. 查询与结果语义
full 1partial 2none 1unknown 86
- Oracle SQL 治理检查:STATEMENT WHERE REQUIRE SELECT · none · unverified
- (+) 传统外连接标记 · partial · doc_based
- DUAL 虚表 · partial · doc_based
- 序列伪列引用(seq.NEXTVAL / seq.CURRVAL) · full · doc_based
4. DML 与数据写入
full 0partial 0none 2unknown 8
- Oracle SQL 治理检查:STATEMENT INSERT MUST SPECIFY COLUMN · none · unverified
- Oracle SQL 治理检查:STATEMENT WHERE REQUIRE UPDATE DELETE · none · unverified
5. 函数与表达式
full 1partial 1none 0unknown 37
- DECODE 函数 · full · doc_based
- TO_DATE 函数(格式模型差异) · partial · doc_based
6. 事务与并发
full 0partial 0none 3unknown 1
- 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 与存储程序
full 0partial 0none 0unknown 140
8. 序列、同义词与触发器
full 0partial 0none 0unknown 20
9. 性能与分布式架构
full 0partial 0none 3unknown 10
- 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. 驱动与应用层
full 0partial 0none 0unknown 0
优先核对的高风险场景
(+) 传统外连接标记
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_DATE 函数(格式模型差异)
partial · doc_based · 字符单参数读取 NLS_DATE_FORMAT;DATE/datetime 参数复现时显式 date→char→DATE 往返,移除 TO_DATE 属获批纠错;无时间元素用 date parser,含 HH/MI/SS 用 timestamp parser 后 cast 到 Oracle-DATE 映射以返回 DATE;映射 RR/J/IW/FX;DEFAULT 只捕获 char 转换,default 自身同格式失败继续报错,表达式求值错误不得吞掉
DUAL 虚表
partial · doc_based · PostgreSQL 等支持无 FROM 的目标将纯表达式查询的 FROM DUAL 删除;若 DUAL 被 schema 限定、连接、过滤或当作真实对象使用,先解析对象身份,不做文本替换
既有改造点明细
ADD_MONTHS 函数unknown · minor · ora.func.add_monthsALTER SESSION SET 会话参数unknown · minor · ora.syntax.alter_sessionANYDATA 动态类型列unknown · critical · ora.type.anydataASCIISTR Unicode 转义函数unknown · major · ora.func.asciistr关联数组(INDEX BY 表)unknown · major · ora.plsql.associative_arrayAT TIME ZONE 时区表达式unknown · major · ora.func.at_time_zoneAUTHID 执行者/定义者权限模式unknown · critical · ora.plsql.authid自治事务(PRAGMA AUTONOMOUS_TRANSACTION)unknown · critical · ora.plsql.autonomous_txn触发器内自治事务unknown · blocker · ora.trigger.autonomous_transaction视图 BEQUEATH 子句unknown · minor · ora.ddl.bequeathBFILE 外部文件类型unknown · critical · ora.type.bfileBFILENAME 外部文件定位函数unknown · critical · ora.func.bfilenameBIN_TO_NUM 位序列转数值unknown · major · ora.func.bin_to_numBINARY_DOUBLE 类型unknown · minor · ora.type.binary_doubleBINARY_FLOAT 类型unknown · minor · ora.type.binary_floatOracle 二进制浮点特殊字面量unknown · critical · ora.literal.binary_float_specialBITAND 函数unknown · minor · ora.func.bitandBITMAP 位图索引unknown · major · ora.index.bitmapBULK COLLECT 批量取数unknown · major · ora.plsql.bulk_collectLENGTHB / SUBSTRB / INSTRB 字节语义函数unknown · major · ora.func.byte_semanticsCDB/多租户与排序规则 DDL 子句(SHARING / DEFAULT COLLATION / CONTAINER_MAP)unknown · minor · ora.ddl.container_clausesCHAR 定长补空格类型unknown · minor · ora.type.char_paddingCHR(0) NUL 字符语义差异unknown · major · ora.func.chr_zeroOracle 聚簇表与 CLUSTER 子句unknown · major · ora.object.cluster_tableOracle 集合 CARDINALITYunknown · major · ora.func.cardinalitySQL 层集合运算函数unknown · major · ora.func.collection_sql列 DEFAULT 使用序列伪列unknown · major · ora.column.default_sequence存储过程内 COMMIT/ROLLBACKunknown · major · ora.plsql.commit_in_proc复合 UNIQUE 的部分 NULL 唯一性语义unknown · blocker · ora.constraint.composite_unique_null字符串拼接 || 的 NULL 语义unknown · minor · ora.behavior.concat_nullCONNECT BY 层次查询unknown · critical · ora.syntax.connect_byCONNECT BY 操作数含函数unknown · critical · ora.syntax.connect_by_function_operandLEVEL 层次伪列unknown · major · ora.syntax.level_pseudocolumnCONNECT_BY_ROOT 层次操作符unknown · major · ora.syntax.connect_by_root约束 DISABLE 状态unknown · major · ora.ddl.constraint_disableCREATE INDEX ... NOLOGGINGunknown · major · ora.ddl.create_index_nologging游标属性(%FOUND/%NOTFOUND/%ISOPEN/%ROWCOUNT)unknown · major · ora.plsql.cursor_attributesSQL%BULK_ROWCOUNT 逐项批量 DML 计数unknown · critical · ora.cursor.sql_bulk_rowcount游标 FOR 循环unknown · minor · ora.plsql.cursor_for_loop日期直接加减数字(天数运算)unknown · major · ora.behavior.date_arithmeticDATE 映射 TIMESTAMP 后日期差聚合类型变化unknown · critical · ora.dm.timestamp_delta_aggregateDATE 类型含时间部分的语义unknown · major · ora.type.date_semanticsDBLINK 引用(obj@link)unknown · major · ora.object.dblink_ref过程体内 DBLINK 引用(obj@link)unknown · critical · ora.plsql.dblink_in_bodyDBMS_RANDOM 随机数调用(过程体内)unknown · minor · ora.pkg.dbms_randomDBMS_RANDOM 包调用unknown · minor · ora.func.dbms_randomDBMS_JOB 定时作业调用(过程体内)unknown · major · ora.pkg.dbms_jobDBMS_SCHEDULER 调度器调用(过程体内)unknown · major · ora.pkg.dbms_schedulerDBMS_SCHEDULER / DBMS_JOB 调度作业unknown · major · ora.plsql.dbms_schedulerDBTIMEZONE 数据库时区函数unknown · major · ora.func.dbtimezoneDEFAULT ON NULL 列默认值unknown · minor · ora.column.default_on_nullDETERMINISTIC 函数标记unknown · minor · ora.plsql.deterministicDROP USER ... CASCADE 级联删除unknown · critical · ora.ddl.drop_user_cascadeDUAL 虚表partial · minor · ora.syntax.dualDUMP 内部表示诊断函数unknown · major · ora.func.dump动态 SQL(EXECUTE IMMEDIATE)unknown · major · ora.plsql.dynamic_sqlOPEN FOR 直接使用 SQL 字符串表达式unknown · critical · ora.cursor.open_expressionEDITIONABLE / NONEDITIONABLE 关键字unknown · minor · ora.ddl.editionableEMPTY_CLOB / EMPTY_BLOB 函数unknown · minor · ora.func.empty_lob与空串字面量的等值/不等比较('' 即 NULL 语义)unknown · critical · ora.behavior.empty_string_compareEXCEPTION 异常处理块unknown · minor · ora.plsql.exception_block显式游标声明(CURSOR ... IS)partial · minor · ora.plsql.cursor_explicitJava/C 外部语言存储例程unknown · critical · ora.plsql.external_routine外部表(ORGANIZATION EXTERNAL)unknown · critical · ora.object.external_tableFIRST_VALUE IGNORE NULLSunknown · major · ora.func.first_value_ignore_nullsFLASHBACK 查询(AS OF SCN/TIMESTAMP、VERSIONS BETWEEN)unknown · major · ora.syntax.flashback_querySELECT ... FOR UPDATE OF 列级锁定写法unknown · minor · ora.syntax.for_update_of外连接查询 FOR UPDATEunknown · critical · ora.syntax.for_update_outer_joinFOR UPDATE WAIT n 超时等待子句unknown · minor · ora.syntax.for_update_waitFORALL 批量 DMLunknown · major · ora.plsql.forallCREATE FORCE VIEWunknown · minor · ora.ddl.view_forceFROM_TZ 时区附加函数unknown · major · ora.func.from_tzOracle Text 全文索引与 CTX 包unknown · critical · ora.index.fulltext_contextPL/SQL 代码中的全角标点none · major · ora.plsql.fullwidth_punctuation索引表达式中的 TO_DATE/TO_CHARunknown · critical · ora.index.nonimmutable_conversionMDSYS / SDO 空间类型与包unknown · critical · ora.func.gis_sdo全局临时表(GLOBAL TEMPORARY TABLE)unknown · major · ora.object.gttGOTO 语句unknown · major · ora.plsql.gotoGREATEST / LEAST 函数(NULL 传播差异)unknown · major · ora.func.greatest_leastGROUP_ID / GROUPING_ID 分组函数unknown · minor · ora.func.grouping_id
上线前验证清单
- 精确版本、模式、参数、字符集、时区与驱动元数据
- DDL 建删、数据值域、事务回滚、并发冲突与异常行为
- 执行计划、统计信息、分片键、跨分片事务与热点写入
- 改造前后结果集、性能基线、回退条件与复扫闭环