DBMS_REDEFINITION 是 Oracle 12c+ 唯一支持在线、安全、兼容复杂结构的分区转换方式;ALTER TABLE MODIFY PARTITION BY 限制极多,如不支持 LIST/HASH/INTERVAL 分区、虚拟列作分区键等,易报错或静默失败。
DBMS_REDEFINITION 是 Oracle 12c 及后续版本中唯一能真正在线、安全、兼容复杂结构的转换方式。别指望 ALTER TABLE ... MODIFY PARTITION BY 一招搞定——它在多数生产表上会直接报错或静默失败。
这个语法看着省事,但实际限制极严,踩坑成本远高于写几行 PL/SQL:
ALTER TABLE ... MODIFY PARTITION BY RANGE 不支持 LIST、HASH 或 INTERVAL 分区类型GENERATED ALWAYS AS 虚拟列(比如你的 TOTAL_AMOUNT)NOT NULL 但无 DEFAULT,而新分区键列允许空值,立刻触发 ORA-14097
UPDATE INDEXES 子句对全局索引极其敏感:没显式列出依赖唯一约束的索引?ORA-14098 直接中断REF 列或审计策略?该语法直接拒绝执行执行 EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('SZR', 'CUSTOMER_ORDERS') 成功,只说明基础结构合规。你还得手动确认这几件事:
ORDER_ID),且主键列定义里不能含 DEFAULT CUSTOMER_ORDERS_SEQ.NEXTVAL 或 SYSTIMESTAMP —— 触发器逻辑可以,但 DDL 默认值写法不行ROWID 引用、高级队列表依赖,或启用了 DBMS_FLASHBACK_ARCHIVE 等策略;这些会让 COPY_TABLE_DEPENDENTS 失败TEMP 表空间也要够(同步阶段大量排序用)中间表不是复制粘贴原 DDL 就完事。稍不注意,START_REDEF_TABLE 就会抛 ORA-14197 或导致数据不一致:
VARCHAR2(120) 和 VARCHAR2(120 CHAR) 被视为不同类型)ORDER_DATE)不能加 NOT NULL 约束,除非原表对应列也强制非空;否则 START_REDEF_TABLE 直接报错COPY_TABLE_DEPENDENTS 同步;你手动建了,后续会冲突或丢失示例中间表语句(注意 PARTITION BY RANGE 和边界写法):
CREATE TABLE SZR.CUSTOMER_ORDERS_PART (ORDER_IDNUMBER PRIMARY KEY,ORDER_DATEDATE NOT NULL,CUSTOMER_ID NUMBER NOT NULL,CUSTOMER_NAME VARCHAR2(120),PRODUCT_CODEVARCHAR2(50),QUANTITYNUMBER(8),UNIT_PRICENUMBER(12,2),TOTAL_AMOUNTNUMBER(14,2) GENERATED ALWAYS AS (QUANTITY * UNIT_PRICE) VIRTUAL,ORDER_STATUSVARCHAR2(20) DEFAULT 'PENDING',CREATED_BYVARCHAR2(60)) PARTITION BY RANGE (ORDER_DATE) (PARTITION P_2024 VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD')),PARTITION P_2025 VALUES LESS THAN (TO_DATE('2026-01-01', 'YYYY-MM-DD')),PARTITION P_MAXVALUES LESS THAN (MAXVALUE));
DBMS_REDEFINITION 不会自动更新新表的统计信息,查询计划可能严重劣化:
DBMS_STATS.GATHER_TABLE_STATS 时,务必指定 cascade => TRUE,否则索引统计信息不会被采集method_opt 参数复现,否则分区键列选择性误判会导致执行计划出错DBA_TAB_STATISTICS 确认 LAST_ANALYZED 时间已更新最常被忽略的是:重定义完成后的原子交换(FINISH_REDEF_TABLE)看似结束,但统计信息缺失会让应用性能陡降——这点比空间和权限问题更隐蔽。
小米路由器历史固件怎么删除(小米路由器历史固件删除方法)
小米路由器青春版mini潘多拉固件怎么升级的(小米路由器青春版mini潘多拉固件升级方法)
小米路由器青春版mini怎么恢复出厂(小米路由器青春版mini恢复出厂方法)
小米路由器青春版mini设置教程(小米路由器青春版mini如何设置)
小米路由器分享路由器什么意思啊(小米路由器分享路由器含义详解)
小米路由器默认ip进不去怎么办(小米路由器默认ip进不去解决方案)