如何进行完整的 oracle 数据库导出或导入但排除一个表空间

How to do a full oracle database export or import yet exclude one tablespace

我正在创建计划任务以每周刷新 Oracle 11g 数据库,从生产到测试。我想做一个完整的导出/导入,除了一个名为 PERFSTAT 的表空间,我们在生产中使用统计包,但在测试中并不真正需要。

这是我当前的导出命令

EXPDP system/password@instance FULL=Y DIRECTORY=TRPROD_EXPORT DUMPFILE=TRPROD_FULL_EXPORT.DMP LOGFILE=TRPROD_FULL_EXPORT.LOG COMPRESSION=all

当我测试导入时,出现以下错误

ORA-01119: error in creating database file 'G:\ORACLE\ORADATA\TRPROD\PERFSTAT01.DBF'
ORA-27038: created file already exists
OSD-04010: <create> option specified, file already exists
Failing sql is:
CREATE TABLESPACE "PERFSTAT" DATAFILE 'G:\ORACLE\ORADATA\TRPROD\PERFSTAT01.DBF' SIZE 209715200 AUTOEXTEND ON NEXT 10485760 MAXSIZE 2146435072 LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS  SEGMENT SPAC

我已经尝试将 EXCLUDE=TABLESPACE:"='PERFSTAT'" 添加到 EXPDP 命令以尝试排除该表空间,但我给了我一个语法错误,所以我想知道正确的方法是什么完全刷新我们的测试数据库是否会排除这个特定的表空间?

您可以创建如下所示的参数文件。

[oracle@oratestprod fra]$ cat test.par
DIRECTORY=TRPROD_EXPORT
FULL=Y 
DUMPFILE=TRPROD_FULL_EXPORT.DMP 
LOGFILE=TRPROD_FULL_EXPORT.LOG 
COMPRESSION=all
exclude=tablespace:"IN ('PERFSTAT')"

和运行如下图。

[oracle@oratestprod fra]$ expdp system parfile=test.par