none · doc_based · 目标不保留原生层次句时改 WITH RECURSIVE,并先保留 Oracle 执行序:FROM/WHERE 中的 join 先形成候选关系,START WITH 与 CONNECT BY/PRIOR 再展开层次,剩余 WHERE 最后逐行过滤,不能提前裁掉不满足 WHERE 的父行及其仍应返回的子孙。锚点/递归成员生成 depth/path/visited,visited 必须使用稳定行身份与路径实例,不能用可重复业务键。NOCYCLE 在下一子行已是祖先时停止该边;CONNECT_BY_ISCYCLE 标记“当前行存在一个祖先子行”,不是标记或输出重复子行
none · doc_based · 默认改 numeric(38);仅在全量值域与增长上界证明后选 bigint/integer/smallint
none · doc_based · 需结合精确环境 PoC。
none · doc_based · 树深度在递归 CTE 锚点置 depth=1、递归成员置 depth+1;纯行生成须区分根行契约:无 START WITH 且无其他根过滤时,Oracle 在 n<=0/NULL 仍保留 1 个根行,改为无条件产生 1 的递归 CTE 锚点、仅在下一层满足 LEVEL<=n 时递归,或给 generate_series 显式补该分支;有 START WITH/根过滤时才允许根行被过滤为零行
none · doc_based · 给源行和非空值按同一分区/稳定顺序编号,在每个 frame 内定位第一条非空行并回连原行;目标原生支持时才保留 IGNORE NULLS
none · doc_based · 需结合精确环境 PoC。
none · doc_based · 需结合精确环境 PoC。
none · doc_based · 目标原生 INTERVAL 时逐项保留表达式、最高显式 RANGE 分区上界定义的过渡点和子分区模板;否则移除自动扩展,按该过渡点至业务 horizon 预建等价 RANGE 分区,并部署幂等滚动作业在写入前继续预建,同时替换依赖自动分区名的运维 SQL
none · doc_based · 需结合精确环境 PoC。
none · doc_based · 聚合形态先在原分组内按 KEEP 的 ORDER BY 计算 DENSE_RANK,FIRST 取 rank=1、LAST 反向排名取 rank=1,再对全部并列行执行原 MIN/MAX/SUM/AVG/COUNT/VARIANCE/STDDEV;analytic OVER 形态在窗口分区内排名后用窗口条件聚合,保留每个输入行,禁止外层 GROUP BY 改变行数
none · doc_based · 先给每个源行位置 row_pos(分区内稳定完整排序),另保留非空行的 row_pos;对每个当前行从严格早于 row_pos 的非空行倒序取第 offset 条,不足时返回原 default
none · doc_based · 给源行和非空值按同一分区/稳定顺序编号,在原 frame 内定位最后一条非空行并回连;不得只删 IGNORE NULLS 或把默认 frame 改成整分区
none · doc_based · 先给每个源行位置 row_pos(分区内稳定完整排序),另保留非空行的 row_pos;对每个当前行从严格晚于 row_pos 的非空行正序取第 offset 条,不足时返回原 default
none · doc_based · 将目标改键保留基表,按投影别名回写列;只把目标视图过滤条件并入 ON 以复刻可见目标行集,原 action 条件仍留原 WHEN;原视图有 WITH CHECK OPTION 时在 action/目标约束复刻写后可见性并保持失败,无该子句时不额外限制;join/聚合/不可更新或 INSTEAD OF 视图先按源端失败/触发器契约处理
none · doc_based · PostgreSQL: BLOB -> bytea;Oracle 兼容目标按矩阵保留 BLOB
none · doc_based · PostgreSQL: CLOB -> text;Oracle 兼容目标按矩阵保留 CLOB
none · doc_based · PostgreSQL: NVARCHAR/STRING -> varchar;Oracle 兼容目标规范化为 NVARCHAR2/VARCHAR2
none · 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 伪表时只给人工方案,不自动重排连接图。
none · doc_based · 需结合精确环境 PoC。
none · doc_based · 需结合精确环境 PoC。
none · doc_based · 需结合精确环境 PoC。
none · doc_based · 投影编号先物化源表达式并按已确认的稳定顺序改 ROW_NUMBER();Top-N 必须区分同层 ORDER BY (Oracle 先赋 ROWNUM 再排序)与内层排序后外层限行,不能一律改 LIMIT。双层分页在内层排序并编号, 再由外层按范围过滤。直接查询块的 ROWNUM > 1、ROWNUM >= 2 或 ROWNUM = 2 通常为空集,禁止改成 OFFSET;只有已物化的内层 rn 别名范围谓词才能按上下界计算 OFFSET/LIMIT。
none · doc_based · 锚点用 separator||COALESCE(expr,'') 生成 path,递归成员同样按 Oracle NULL 拼接语义追加;迁移前预检节点值含 separator 并复现 ORA-30004,只有业务批准后才可转义并记录新契约
none · doc_based · USERENV 的 SESSION_USER -> session_user、CURRENT_USER -> current_user、 CURRENT_SCHEMA -> current_schema、DB_NAME/DB_UNIQUE_NAME -> current_database(); IP_ADDRESS 可在连接拓扑明确时映射 inet_client_addr()。 OS_USER、CLIENT_IDENTIFIER、AUTHENTICATED_IDENTITY、PROXY_USER、BG_JOB_ID、HOST/SERVER_HOST 与 MODULE 只能做近似映射,不能把 OS_USER/CLIENT_IDENTIFIER 当 session_user,或把 BG_JOB_ID 当 pg_backend_pid() 冒充等价。自定义 namespace 必须追踪 DBMS_SESSION.SET_CONTEXT 写入链并重设计。