首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBMS_REDEFINITION不复制数据?

DBMS_REDEFINITION不复制数据?
EN

Database Administration用户
提问于 2015-06-24 10:45:25
回答 2查看 1K关注 0票数 0

是否有选项可以使用Oracles 联机表重新定义特性,但只能从源表复制数据的子集?

我的意思是-源表有200万条记录,我只想复制那些有ID >东西的记录。问题是,START_REDEF_TABLE似乎同步了所有200万条记录。有没有一种方法可以指定哪些记录应该被同步?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2015-06-24 17:14:15

1)联机重定义使用高级复制提供的方法。您可以尝试使用这些方法创建解决方案。您必须创建一个只包含所需数据的物化视图。然后,您可以在短时间内重命名表及其索引,授予对新对象的权限等等。

2)更简单的方法是,不是一次删除所有数据,而是在每个步骤中只删除一个固定的行数。因此,编写一个循环,并在这个循环中删除许多行

此sql脚本以100的批次删除行。在scritps执行之后,使用id<=somethings的所有行都会被删除。

代码语言:javascript
复制
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;
/
票数 1
EN

Database Administration用户

发布于 2015-06-24 15:50:38

如果我明白你不需要在网上做的话。

在这种情况下,使用集中于数据子集的select的CREATE TABLE AS SELECT如何?

然后您只需快速重命名,重新创建索引并完成。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/104986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档