兼容性判定
公开资料依据 · 建议 PoC 复核支持度partial
严重度critical
置信度low
依据规则ora.cast.integer_range
怎么改
CAST(expr AS NUMBER(38)) 或按全量值域选择 bigint/numeric
判定说明
Oracle INTEGER 等价 NUMBER(38),目标 INTEGER 为 32 位且可能溢出;建议 PoC 复核全量值域
库侧 / 应用侧路径
库侧改造
可行:基于全量 min/max 与未来增长选择 numeric 或 bigint
应用侧改造
可行:同步核对驱动和 DTO 是否仍用 32 位整数
推荐路线:db_side。验证建议:当前极值、边界值、负值和驱动序列化范围回归
规则样例
SELECT CAST(99999999999 AS INTEGER) FROM dual
SELECT CAST(account_id AS INTEGER) FROM account
SELECT CAST(42 AS INTEGER) FROM dual
参考来源
- https://www.alibabacloud.com/help/doc-detail/2861032.html
- https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Data-Types.html
- https://www.postgresql.org/docs/current/datatype-numeric.html
- https://help.aliyun.com/zh/polardb/polardb-for-oracle/
- https://www.alibabacloud.com/help/zh/polardb/polardb-for-oracle/difference-between-2-0-and-1-0-versions-of-polardb-for-oracle
相关改造点
- ORACLE → PolarDB(Oracle 兼容)2.0 全部改造点
- PolarDB(Oracle 兼容)2.0 兼容性总览
- ORACLE 迁移国产库总览
- ORACLE CDB/多租户与排序规则 DDL 子句(SHARING / DEFAULT COLLATION / CONTAINER_MAP) 迁移 PolarDB(Oracle 兼容)2.0 怎么改
- ORACLE 字符串拼接 || 的 NULL 语义 迁移 PolarDB(Oracle 兼容)2.0 怎么改
- ORACLE LEVEL 层次伪列 迁移 PolarDB(Oracle 兼容)2.0 怎么改
- ORACLE DATE 类型含时间部分的语义 迁移 PolarDB(Oracle 兼容)2.0 怎么改
- ORACLE EDITIONABLE / NONEDITIONABLE 关键字 迁移 PolarDB(Oracle 兼容)2.0 怎么改
- ORACLE PL/SQL 代码中的全角标点 迁移 PolarDB(Oracle 兼容)2.0 怎么改