天天看点

oracle expdp impdp

背景:

用户在自己的电脑上做了一台数据库,将下载的数据文件全部存入到数据库中,之前给的方案是exp/imp导入导出的方式,发现比较慢。

思路:

使用exp/imp的方式,主要是在客户端就可以操作,但是中间还是需要通信,直接在服务器使用数据泵的方式来导入导出数据

过程

用户的服务器为windows

sqlplus /nolog

connect  sys/?????? as sysdba

create or replace directory dir_data_dump 'd:\dir_data_dump';

grant read,write on directory  dir_data_dump to public;

select * from dba_directories;

expdp tl_zyk/??????  schemas=tl_zyk dumpfile=exp_zyk.dmp directory=dir_data_dump;

20g导完需要2min;

在导出的过程中遇到以下报错

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

后面查看d盘,没有文件夹dir_data_dump

重建后,重新执行没有问题

将该方案提交给用户,用户考虑到空间磁盘的大小,否定了该方案。

expdp只能在服务器操作,确实占用服务器空间。

官方文档

<a href="https://oracle-base.com/articles/10g/oracle-data-pump-10g">https://oracle-base.com/articles/10g/oracle-data-pump-10g</a>

下面是expdp/impdp案例

Oracle数据泵导入导出案例

建立数据泵目录

使用数据泵需要先建directory

create directory dump_scott as'/home/oracle/dump/scott'

查看建立的目录

Select * from dba_directories

赋权

Grant read,write on directory dump_scott toscott

导出案例1,按表导出

expdp scott/tiger directory=dump_scottdumpfile=tab.dmp logfile=scott.log tables=dept,emp

导出案例2,按用户导出

expdp scott/tiger directory=dump_scottdumpfile=dumpscott.dmp schemas=scott

导出案例3,全库导出,且并行导出

expdp scott/tiger directory=dump_scottdumpfile=full.dmp parallel=4 full=y

导入案例1,按表导入,从scott到scott2

impdp scott2/tiger directory=dump_scottdumpfile=tab.dmp tables=scott.dept,scott.emp remap_schema=scott:scott2

导入案例2,按用户导入,从scott到scott2

impdp scott/tiger directory=dump_scottdumpfile=schema.dmp remap_schema=scott:scott2

导入案例3,全库导入

impdp scott/tiger directory=dump_scottdumpfile=full.dmp full=y

导入案例4,无落地文件的用户拷贝,需要建立db link

impdp scott/tiger directory=dump_scott network_link=remote_link remap_schema=scott:scott2