dbms_datapump API 在导入期间排除统计信息

a_h*_*ame 4 oracle statistics dbms-datapump

我们dbms_datapump用于在不同服务器之间复制数据或快速设置新模式。

然而,导入统计信息通常需要很长时间,而且还有一个额外的缺点,即模式统计信息在导入后会被锁定。

所以我试图找到一种方法来跳过导入统计数据。

根据 Metalink Doc ID 1392981.1,这应该可以使用:

dbms_datapump.metadata_filter(handle => l_job_handle, 
      name => 'EXCLUDE_PATH_LIST', 
      value => '''STATISTICS''');
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这样做时,出现“ORA-39001:无效参数值”错误。

我还尝试了在不同地方找到的各种其他格式:

dbms_datapump.metadata_filter(handle => l_job_handle, 
      name => 'EXCLUDE_PATH_LIST', 
      value => 'STATISTICS');

dbms_datapump.metadata_filter(handle => l_job_handle, 
       name => 'EXCLUDE_PATH_EXPR', 
       value => 'like ''%/TABLE/STATISTICS/TABLE_STATISTICS''');

dbms_datapump.metadata_filter(handle => l_job_handle, 
       name => 'EXCLUDE_PATH_EXPR', 
       value => 'like ''%STATISTICS%''');
Run Code Online (Sandbox Code Playgroud)

但他们都带着 ORA-39001 返回。

我使用的版本是:

Oracle 数据库 11g 企业版 11.2.0.4.0 版 - 64 位生产

操作系统是 Windows Server,但这也发生在 Linux 安装上。

任何想法如何在通过DBMS_DATAPUMPAPI导入(或导出)期间跳过统计信息?

Phi*_*lᵀᴹ 6

您需要使用:

DBMS_DATAPUMP.METADATA_FILTER(l_job_handle,
                              'EXCLUDE_PATH_EXPR',
                              'IN (''STATISTICS'')');
Run Code Online (Sandbox Code Playgroud)