【发布时间】: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