Ps-*_*-kl 1 oracle partitioning database-partitioning sql-update
我想更新分区键。分区如下
PARTITION_NAME LAST_ANALYZED NUM_ROWS BLOCKS SAMPLE_SIZE HIGH_VALUE
PORTAL_SERVICE_1 12/8/2016 4133 174 4133 1
PORTAL_SERVICE_2 6/8/2016 4474 174 4474 2
PORTAL_SERVICE_3 10/8/2016 29602 2014 29602 3
PORTAL_SERVICE_OTHERS 24/5/2016 0 110 DEFAULT
Run Code Online (Sandbox Code Playgroud)
此分区应用于列 Portal_Service_id。我想将门户服务 ID 的值从 2 更新为 1。
当我尝试
update trans set PORTAL_SERVICE_ID = 1 where ID = 2054;
Run Code Online (Sandbox Code Playgroud)
我收到错误:错误报告 - SQL 错误:ORA-14402:更新分区键列会导致分区更改 14402. 00000 -“更新分区键列会导致分区更改”
我不允许使用启用行移动。
任何人都可以建议更新行的任何替代方法。
如果这可以在场景中使用,任何人都可以解释一下:
UPDATE <table_name> PARTITION (<partition_name>)
SET <column_name> = <value>
WHERE <column_name> <condition> <value>;
Run Code Online (Sandbox Code Playgroud)
小智 9
要解决错误“ORA-14402:更新分区键列会导致分区更改”,您可以按照以下步骤操作
1) 检查您的表是否启用了 row_movement
SELECT owner,
table_name,
row_movement
FROM dba_tables
WHERE table_name in ('YOUR_TABLE');
2)如果被禁用,您可以使用此脚本启用移动
alter table YOUR_TABLE enable row movement;
Run Code Online (Sandbox Code Playgroud)
之后,您可以更新分区键列