文章

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.dmpdir2:file2.dmp 分别指的是 dir1dir2 目录中的 dump 文件。

不能直接书写操作系统上的路径:/data/:file2.dmp ,需要通过 Oracle 先创建数据目录,否则会提示以下错误:

1
2
3
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39088: 文件名不能包含路径说明

注意事项:

  • 目录对象权限:确保 Oracle 用户对这些目录对象具有读取和写入权限,否则导入操作将失败。
  • 文件分布:如果数据文件分布在不同的目录中,使用这种方式可以同时读取多个目录中的文件。

总之,虽然 impdp 只能接受一个 DIRECTORY 参数,但你可以通过在不同目录下存放 dumpfile 并在 DUMPFILE 参数中指定多个目录和文件的方式实现使用多个路径。同理 expdp 也是相同的实现方法。

本文由作者按照 CC BY 4.0 进行授权

© TheDarkStarJack. 保留部分权利。

[本站总访问量次] [本站访客数人次] [本文总阅读量次]

本站采用 Jekyll 主题 Chirpy