Oracle expdp、impdp使用多个路径
有的时候因为存储空间不足,特别是将生产的数据导入到测试环境,测试环境的空间可能有限。导入的时候可能文件不能放在一个路径下,这个时候就需要使用多个目录,比如 dmp1、dmp2 放在目录 d1 ,其余的文件放在 d2 。
在使用 expdp/impdp 的时候只能通过 DIRECTORY
指定一个目录,但是可以通过选项 DUMPFILE
指定多个文件,文件可以在不同的路径下,以次达到同时使用多个目录/磁盘的效果。
1
2
3
4
5
└──╼ $ impdp -help | grep -i dumpfile
Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
DUMPFILE
For example, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
定义多个目录对象:
- 在 Oracle 数据库中,目录对象映射的是操作系统上的路径。因此,如果需要使用多个路径,需要为每个路径分别创建一个目录对象。
1 2
CREATE DIRECTORY dir1 AS '/path/to/directory1'; CREATE DIRECTORY dir2 AS '/path/to/directory2';
在 impdp
命令中使用多个目录:
impdp
命令只允许指定一个 DIRECTORY
参数,但是你可以在导入数据时将多个目录对象关联在一起。例如,在导入时可以指定 DUMPFILE 参数来引用不同目录下的文件。
1
impdp username/password DIRECTORY=dir1 DUMPFILE=dir1:file1.dmp,dir2:file2.dmp
这里的 dir1:file1.dmp
和 dir2:file2.dmp
分别指的是 dir1
和 dir2
目录中的 dump 文件。
不能直接书写操作系统上的路径:/data/:file2.dmp
,需要通过 Oracle 先创建数据目录,否则会提示以下错误:
1
2
3
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39088: 文件名不能包含路径说明
注意事项:
- 目录对象权限:确保 Oracle 用户对这些目录对象具有读取和写入权限,否则导入操作将失败。
- 文件分布:如果数据文件分布在不同的目录中,使用这种方式可以同时读取多个目录中的文件。
总之,虽然 impdp
只能接受一个 DIRECTORY
参数,但你可以通过在不同目录下存放 dumpfile
并在 DUMPFILE
参数中指定多个目录和文件的方式实现使用多个路径。同理 expdp 也是相同的实现方法。
本文由作者按照
CC BY 4.0
进行授权