是否有选项可以使用Oracles 联机表重新定义特性,但只能从源表复制数据的子集?
我的意思是-源表有200万条记录,我只想复制那些有ID >东西的记录。问题是,START_REDEF_TABLE似乎同步了所有200万条记录。有没有一种方法可以指定哪些记录应该被同步?
发布于 2015-06-24 17:14:15
1)联机重定义使用高级复制提供的方法。您可以尝试使用这些方法创建解决方案。您必须创建一个只包含所需数据的物化视图。然后,您可以在短时间内重命名表及其索引,授予对新对象的权限等等。
2)更简单的方法是,不是一次删除所有数据,而是在每个步骤中只删除一个固定的行数。因此,编写一个循环,并在这个循环中删除许多行
此sql脚本以100的批次删除行。在scritps执行之后,使用id<=somethings的所有行都会被删除。
declare
deleted number;
begin
loop
delete
from mytable
where id<=something and rownum<=100
returning count(*) into deleted;
if deleted=0 then
commit;
exit;
end if;
commit;
end loop;
end;
/发布于 2015-06-24 15:50:38
如果我明白你不需要在网上做的话。
在这种情况下,使用集中于数据子集的select的CREATE TABLE AS SELECT如何?
然后您只需快速重命名,重新创建索引并完成。
https://dba.stackexchange.com/questions/104986
复制相似问题