情况是这样的: 两个库分别在两个机器上
库DataBaseA里有一表T1(大概有4G),在机器A上,在内网
库DataBaseB里有一表T2(与DataBaseA的表T1结构完全相同),在机器B上,在外网
T1表数据每天有更新
实现目标:
每周日把机器B的网线换到内网与机器A相连接,然后执行一个过程让系统自动把机器A上库DataBaseA里的表T1全部自动更新到机器2上DataBaseB里的T2表,由于数据太大,有8000万条记录(4G),如何些这个过程或执行导数据的脚本来提高性能.
我试了insert into T2 select .....大概需要4小时,可太慢了
有没有表的办法?要求不能用人工的导出dmp....就通过数据链来进行自动导数据
库DataBaseA里有一表T1(大概有4G),在机器A上,在内网
库DataBaseB里有一表T2(与DataBaseA的表T1结构完全相同),在机器B上,在外网
T1表数据每天有更新
实现目标:
每周日把机器B的网线换到内网与机器A相连接,然后执行一个过程让系统自动把机器A上库DataBaseA里的表T1全部自动更新到机器2上DataBaseB里的T2表,由于数据太大,有8000万条记录(4G),如何些这个过程或执行导数据的脚本来提高性能.
我试了insert into T2 select .....大概需要4小时,可太慢了
有没有表的办法?要求不能用人工的导出dmp....就通过数据链来进行自动导数据
2.create procedure ...;
3.使用job。
alter table t2 nologging;
insert /*+append*/ into t2 select * from t1@databaseA;
alter table t2 logging;之后,我个人觉得应该在 databaseB上建一个物化视图,弄个job每天晚上同步databaseA上的数据。
你说的物化视图可能不好实现,因为两个库databaseA和databaseB不在一个网内,需要手工切换线才能进行连接导数据,那个同步不好做吧?
你那的代码一次行提交会不会慢?如果做成分批提交,每10000行提交一次,会不会快些?
select * from t1@databaseA;不过并行很耗资源.
如果这样会快的话,你还可以试试在select之后也加上parallel的hint,应该会更快一点.