对于同种数据库oracle:
,1,数据量小(表):可以用dblink的形式。
如果在Oracle数据库之间复制数据,应该使用create table as 和insert的SQL命令。
create table OM_SERV_INCOME_&sum_month nologging as
select \*+parallel(a,5)*\ * from odsc_gz.OM_SERV_INCOME_&sum_month@odscold;
==>未找到远程数据库的连接说明
要建立一个database link才行
CREATE PUBLIC DATABASE LINK AA CONNECT TO zqticket IDENTIFIED BY 'zqticket!!' using 'ZQSJLM'
2,数据量大:在cmd命令中,采用exp,与imp
exp zqticket/zqticket!!@zq_ticket215 file=f:/zq_ticket215.dmp full=y
imp scott/tiger@orcl file=f:/zq_ticket215.dmp full=y ignore=y
exp system/manager@A file=fullbak.dmp log=fullbak.log full=y
imp system/manager@B file=fullbak.dmp ignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。在后面加上 ignore=y 就可以了。
imp system/manager file=bible_db log=dible_db full=y ignore=y
system/manager是用户名和密码
file=bible_db 是要导入的文件
log=dible_db是生成日志的名称
full=y是导入整个文件
ignore=y是忽略创建错误
你B要和A有相同的表空间比如说你A里有个TEST表空间,那么你B里也要有
3,千万级以上的数据量(表):归档模式,加个nologging。
1,2千万条的话不能直接使用create table as select...
先建一样结构的表。然后用append参数
非归档模式下:
insert /*+append*/ into a select * from b;
归档模式下:
insert /*+append*/ into a nologgingselect * from b;
4,不同数据库之间用copy:
在SQL*Plus中的copy命令,可以完成远程数据库、本地数据库或Oracle数据库与非Oracle数据库之间的数据复制。其性能与导入/导出相同。