【问题标题】:I want to export a schema using expdp with the following SQL-Statement -> ORA-39001我想使用带有以下 SQL 语句的 expdp 导出架构 -> ORA-39001
【发布时间】:2023-03-11 18:53:01
【问题描述】:

我想使用以下 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”

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

【问题讨论】:

  • 请包含整个 oracle 错误堆栈...类似于 ORA-39001:无效的参数值 ORA-39000:错误的转储文件规范 ORA-31640:无法打开转储文件“E:\dmps \mydmp_01.dmp" 用于读取 ORA-27041: 无法打开文件 OSD-04002: 无法打开文件 O/S-错误: (OS 3) 系统找不到指定的路径。
  • also ''/dir/exampleDir' - 我不认为这是一个有效的 Oracle 目录名称。 oracle 目录是一个 db 对象,它引用文件系统上的目录
  • 从 dba_diretories 中选择 *,确认 DIRECTORY_NAME 映射到您提供给 dirName 的内容
  • 感谢您的帮助。我愿意(从所有目录中选择 *),我可以看到 Directory_Name (EXPORT_DIR) 和 dthe Directory_Path (/temp/dumps)。而且我可以确定,为真实目录设置了数据库对象。感谢那。但我不明白,我必须在代码中更改什么?问你能不能给我写代码是不是太过分了。我很惭愧地问,但我两周都找不到解决方案:((
  • 哦,这是整个错误堆栈: ORA-39001: Ungültiger Argumentwert ORA-06512: in "SYS.DBMS_SYS_ERROR", Zeile 79 ORA-06512: in "SYS.DBMS_DATAPUMP", Zeile 3507 ORA-06512:在“SYS.DBMS_DATAPUMP”中,Zeile 3756 ORA-06512:在 Zeile 17 39001 中。00000 - “无效的参数值” *原因:用户指定的 API 参数的类型或值范围错误。 DBMS_DATAPUMP.GET_STATUS 提供的后续消息将进一步描述该错误。 *操作:更正错误的参数并重试 API。

标签: database oracle11g schema oracle-sqldeveloper datapump


【解决方案1】:

非常感谢你。

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

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

【讨论】:

  • 这不是答案
  • 对此我很抱歉。我第一次使用它。下次我会做对的
  • 别担心,没什么大不了的!
猜你喜欢
  • 2019-02-09
  • 2023-02-20
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
相关资源
最近更新 更多