impdp + dblink 导入数据

Oracle 通过逻辑方式导出数据,当导出的数据量比较大的时候,磁盘存储空间不够时可以使用
impdp + dblink 方式实现,这样省去了expdp 导出的过程,不过这种方式不支持 long 类型的字段
会报错:
ORA-31679: and longs can not be loaded/unloaded using a network link

实现前提:

  1. 在目标数据库必须要开启 streams_pool_size 参数
    否则会报错:
    UDI-31623: operation generated ORACLE error 31623
    ORA-31623: a job is not attached to this session via the specified handle
    ORA-06512: at "SYS.DBMS_DATAPUMP", line 3326
    ORA-06512: at "SYS.DBMS_DATAPUMP", line 4551
    ORA-06512: at line 1

    查看是否开启
    show parameter stream

开启 streams_pool_size

alter system set sga_max_size=2200m scope=spfile;

startup force;

alter system set streams_pool_size=1200M scope=spfile;

2.如果impdp 时指定了 logfile选项,则需要在Oracle 创建directory 对象

查询当前数据库中所有的directory 对象
select * from dba_directories;
如果查询出来的路径在操作系统上面不存在则需要创建
否则会报错
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation

解决:
select * from dba_directories;
查询到当前数据库的所有 directory 对象, 如果directory 对象指向的路径在操作系统不存在,则需要创建

3.如果导出的数据量比较大,比如上百G则需要需要设置临时表空间为自动增长,因为impdp 导入数据时需要用到临时表空间

查询临时表空间的路径
select TABLESPACE_NAME,FILE_NAME from dba_temp_files;
设置临时表空间自动增长:
alter database tempfile 'D:\ORACLE\ORADATA\DBA\TEMP01.DBF' autoextend on next 20m;

4.如果导入的数据量比较大,则最好将目标用户的表空间设置为bigfile 否则当表空间增长导32G时 由于文件系统的限制,则无法继续增长导致导出失败

5.为了提高导入效率。需要增加日志组
查询当前有多少日志组
select * from v$logfile;
查询日志组大小
select GROUP# ,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;
增加日志组
alter database add logfile group 4 ('/tmp/192.168.1.52/share/imp2/u01/app/oracle/oradata/abc/redo04.dbf') size 200M;

创建 dblink

create /* public */ database link mylink connect to duni_exp identified by duni_exp using \
'(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.190)(PORT = 1521))) \
"(CONNECT_DATA =(SID = orcl)))';

导入数据,指定使用dblink

impdp \'/ as sysdba\' nologfile=y tables=TEST table_exists_action=skip parallel=10 \
remap_schema=TEST:ORCL cluster=no network_link=mylink remap_tablespace=USERS:SYSTEM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值