Oracle 亿级数据 远程同步 难点

bryant 2011-10-11 03:13:10
从oracle A数据库服务器
同步数据 25张表数据
到 远程 oracle B数据库服务器
其中有6-7张表数据库量 达到千万,总的数据量打到亿级
高手们,可有什么好的办法?

目前方法:
新建DBLink:DBL_B
insert into B_a@DBL_B
select * from A_a;
但是测试发现这样性能不高,a表数据量 2千万,同步要3个小时

...全文
382 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruihuahan 2011-10-21
  • 打赏
  • 举报
回复
Oracle Stream 可以实现远程的 replication。
Northgale 2011-10-18
  • 打赏
  • 举报
回复
这个是要用专业的软件处理的比如datastage
或者提供你一些思路,数据是在数据块中的,可以通过数据块的变化来传输,只传输变化了的数据块,这点是不是有点像rman?
limeihanto163 2011-10-14
  • 打赏
  • 举报
回复
insert /*+parallel(a,4) */ into B_a a@DBL_B
select * from A_a;
开并行啊,这样会快点。用
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x
这个更慢的,我以前到过数据。
bryant 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 minitoy 的回复:]
goldengate
数据量太大了,如果是每天产生这么数据,估计怎么也不会太快,毕竟数据是要传送过去的.
[/Quote]

谢谢
刚跟领导汇报了
公司比较“抠”
不愿意买工具
minitoy 2011-10-13
  • 打赏
  • 举报
回复
goldengate
数据量太大了,如果是每天产生这么数据,估计怎么也不会太快,毕竟数据是要传送过去的.
bryant 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zxf261 的回复:]
引用 6 楼 yangqm22 的回复:
使用insert /*+ append */ into B_a@DBL_B select * from A_a;


楼主,这个试了没有,我认为这个可行,只会产生少量undo。

insert into B_a@DBL_B
select * from A_a;
直接插入会占用大量的undo表空间。
[/Quote]

谢谢
我倒是直接:insert into B_a@DBL_B select * from A_a;
不过我对每个表 都 alter table B_a nologging; 了
不知道这样和
insert /*+ append */ into B_a@DBL_B select * from A_a;
效果可一样?
bryant 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 demonat 的回复:]
引用 12 楼 superstar_kobe 的回复:
引用 7 楼 demonat 的回复:
try
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x


谢谢
imp/exp方式,产生文件,估计不行,因为源数据源的系统里,不让产生文件


这么做是不会产生文件的,详细的东西自己g……
[/Quote]

谢谢
那我研究下,不过这语句能写在存储过程中么?
bryant 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 youqi1984 的回复:]
create table B_a as select * from A_a@DBL_B 试试这个。。这是DDL操作,不知道会不会快点
[/Quote]
谢谢
这个的确是要快些,不过后来补建 主键和索引,这么大数据量的表,也是很耗时的
还一个就是比较变态的限制:客户端不允许访问服务端
bryant 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xifenfei 的回复:]
引用 12 楼 superstar_kobe 的回复:

引用 7 楼 demonat 的回复:
try
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x


谢谢
imp/exp方式,产生文件,估计不行,因为源数据源的系统里,不让产生文件


exp可以产生文件在客户端啊?导入的……
[/Quote]
谢谢
项目有限制:
1、客户端不允许访问服务端
2、服务端不允许产生文件
demonat 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 superstar_kobe 的回复:]
引用 7 楼 demonat 的回复:
try
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x


谢谢
imp/exp方式,产生文件,估计不行,因为源数据源的系统里,不让产生文件
[/Quote]

这么做是不会产生文件的,详细的东西自己google吧
xiaobn_cn 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 superstar_kobe 的回复:]
引用 4 楼 xiaobn_cn 的回复:
引用 2 楼 superstar_kobe 的回复:
谢谢 xiaobn_cn
不过 用exp/imp 可能不行
一、exp导出文件太大
二、源数据库 系统上,不能产生文件


ORACLE有专门的数据库同步软件,不过那东西是收费的,如果费用不是问题可以考虑购买。


谢谢
Oracle 收费的同步软件是 什么?
[/Quote]

详细名字不记得了,只是听过ORACLE公司的介绍,他们有两个软件,我记得其中一个好象叫做gold gate
IT职场成长课 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yangqm22 的回复:]
使用insert /*+ append */ into B_a@DBL_B select * from A_a;
[/Quote]

楼主,这个试了没有,我认为这个可行,只会产生少量undo。

insert into B_a@DBL_B
select * from A_a;
直接插入会占用大量的undo表空间。
fmjwn 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 superstar_kobe 的回复:]

引用 13 楼 xifenfei 的回复:
引用 12 楼 superstar_kobe 的回复:

引用 7 楼 demonat 的回复:
try
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x


谢谢
imp/exp方式,产生文件,估计不行,因为源数据源的系统里,不让产生文件……
[/Quote]
服务端不能联?不会吧,找个能同时连客户端和服务器的机子,上亿数据,insert 有索引的话 一天也导不完,快得就得用exp,imp 先导数据再建索引,oracle好像有个高级复制,不过也是需要连到服务端的。
GG_wg 2011-10-12
  • 打赏
  • 举报
回复
去网上下载个KETTLE,绿色免费的,我现在处理数据使用的这个
zengjc 2011-10-12
  • 打赏
  • 举报
回复
因为有限制,可以考虑使用第三方工具来做,效率都还可以的。
比如使用ETL工具(datastage等)、goldengate都不错,缺点是要钱
youqi1984 2011-10-11
  • 打赏
  • 举报
回复
create table B_a as select * from A_a@DBL_B 试试这个。。这是DDL操作,不知道会不会快点
NLP爱好者 2011-10-11
  • 打赏
  • 举报
回复
楼主看看这个可能会帮到你

http://blog.csdn.net/leamonjxl/article/details/6695486
惜分飞 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 superstar_kobe 的回复:]

引用 7 楼 demonat 的回复:
try
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x


谢谢
imp/exp方式,产生文件,估计不行,因为源数据源的系统里,不让产生文件
[/Quote]

exp可以产生文件在客户端啊?导入的时候也可以在客户端导入啊?
和源端有什么关系??? expdp也可以通过network_link实现
bryant 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 demonat 的回复:]
try
impdp xxx/xxx@xxx directory=xxx schema=xxx network_link=DBL_B parallel=x
[/Quote]

谢谢
imp/exp方式,产生文件,估计不行,因为源数据源的系统里,不让产生文件
bryant 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiaobn_cn 的回复:]
引用 2 楼 superstar_kobe 的回复:
谢谢 xiaobn_cn
不过 用exp/imp 可能不行
一、exp导出文件太大
二、源数据库 系统上,不能产生文件


ORACLE有专门的数据库同步软件,不过那东西是收费的,如果费用不是问题可以考虑购买。
[/Quote]

谢谢
Oracle 收费的同步软件是 什么?
加载更多回复(10)

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧