首页 > 解决方案 > 我想使用带有以下 SQL 语句的 expdp 导出架构 -> ORA-39001

问题描述

我想使用以下 SQL 语句导出数据库模式。目前我使用 SQLDeveloper。将来我想将此语句与 Java 一起使用。

DECLARE
  schemaName    VARCHAR2(200) := 'Example';
  dirName       VARCHAR2(200) := '/dir/exampleDir';
  dumpFile      VARCHAR2(200) := 'TestFile.dmp';
  directory     VARCHAR(100)  := 'EXPORT_DIR_' || schemaName;
  handle        NUMBER;
  status        VARCHAR2(20);

BEGIN
  EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY ' || directory || ' AS ''' || dirName || '''';

  handle := DBMS_DATAPUMP.OPEN(
    operation => 'EXPORT',
    job_mode  => 'SCHEMA',
    job_name  => 'TEST_EXPORT_' || schemaName);

  DBMS_DATAPUMP.ADD_FILE(handle, dumpFile, directory);

  DBMS_DATAPUMP.METADATA_FILTER(
    handle => handle,
    name   => 'SCHEMA_EXPR',
    value  => 'IN (' || schemaName || ')');

  DBMS_DATAPUMP.START_JOB(handle);
  DBMS_DATAPUMP.WAIT_FOR_JOB(handle, status);

  EXECUTE IMMEDIATE 'DROP DIRECTORY ' || directory;

END;

我收到错误消息“ORA-39001”

任何人都可以帮助我吗?我不知道,我该如何解决这个问题。我阅读了有关此错误消息的任何信息。问题是目录还是什么?如果您能帮助我,我将不胜感激。我对我糟糕的英语知识感到抱歉。

标签: databaseoracle11gschemaoracle-sqldeveloperdatapump

解决方案


非常感谢你。

还有 ''/dir/exampleDir' - 我不认为这是一个有效的 Oracle 目录名称。oracle 目录是一个 db 对象,它引用文件系统上的目录

这只是一个例子。我知道 oracle Directory 是一个 db 对象,它引用文件系统上的一个目录。但是我的sql语句中的目录和文件系统上的目录是一样的。


推荐阅读