兼容性判定
公开资料依据 · 建议 PoC 复核支持度partial
严重度major
置信度medium
依据规则ora.plsql.subtype
怎么改
局部别名展开基类型;共享约束改 DOMAIN
判定说明
可用基类型/DOMAIN 承接部分语义,但作用域和异常行为不同;建议 PoC 复核 RANGE/NOT NULL
库侧 / 应用侧路径
库侧改造
可行:按作用域和约束选择基类型或 CREATE DOMAIN
应用侧改造
不可行:类型声明优先在数据库对象侧改造
推荐路线:db_side。验证建议:RANGE、NOT NULL、赋值转换与异常边界回归
规则样例
SUBTYPE positive_num IS PLS_INTEGER RANGE 1..2147483647;
SUBTYPE account_name IS VARCHAR2(64) NOT NULL;
TYPE account_rec IS RECORD(id NUMBER);
参考来源
- https://github.com/darold/ora2pg/blob/97015451a4d1cfbee888f2e6efe7ff68c239a9b5/doc/Ora2Pg.pod#L3071-L3192
- https://www.postgresql.org/docs/16/sql-createdomain.html
- https://github.com/orafce/orafce/blob/841978f4ec493492bb57fd12415959695cae1b64/README.asciidoc#L9-L267
- https://github.com/orafce/orafce/blob/841978f4ec493492bb57fd12415959695cae1b64/README.asciidoc#L269-L546
- https://github.com/orafce/orafce/blob/841978f4ec493492bb57fd12415959695cae1b64/README.asciidoc#L786-L943
相关改造点
- ORACLE → PostgreSQL 16 + orafce 全部改造点
- PostgreSQL 16 + orafce 兼容性总览
- ORACLE 迁移国产库总览
- ORACLE ADD_MONTHS 函数 迁移 PostgreSQL 16 + orafce 怎么改
- ORACLE ALTER SESSION SET 会话参数 迁移 PostgreSQL 16 + orafce 怎么改
- ORACLE ANYDATA 动态类型列 迁移 PostgreSQL 16 + orafce 怎么改
- ORACLE ASCIISTR Unicode 转义函数 迁移 PostgreSQL 16 + orafce 怎么改
- ORACLE 关联数组(INDEX BY 表) 迁移 PostgreSQL 16 + orafce 怎么改
- ORACLE AT TIME ZONE 时区表达式 迁移 PostgreSQL 16 + orafce 怎么改