小编All*_*lan的帖子

从包内调用 DBMS_DATAPUMP 所需的权限

我正在尝试编写一个过程(在包内),该过程调用DBMS_DATAPUMP将现有模式复制到不同的模式中。该代码在从匿名块执行时有效,但从过程中我收到以下错误。

[Error] Execution (1: 1): ORA-31626: job does not exist
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 1137
ORA-06512: at "SYS.DBMS_DATAPUMP", line 5285
ORA-06512: at "UTILITY.MANAGE_SCHEMA", line 71
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)

此错误是从DBMS_DATAPUMP.OPEN调用中生成的。由于它在匿名块中工作,我假设这实际上是一个权限问题(即需要通过角色授予的一个或多个权限)。但是,我找不到有关使用数据泵所需的权限的任何文档。

这个问题归结为:需要明确授予用户/模式哪些权限才能使该模式中的包能够调用DBMS_DATAPUMP


包的主人既有IMP_FULL_DATABASEEXP_FULL_DATABASE角色,以及该DBA角色。

程序代码如下。

   PROCEDURE copy_schema (p_source_schema VARCHAR2,
                          p_target_schema VARCHAR2,
                          p_asynchronous BOOLEAN := FALSE,
                          p_link_name VARCHAR2 := 'prddb') IS
      dph NUMBER;
      v_source_schema VARCHAR2 (30)
         := UPPER (DBMS_ASSERT.simple_sql_name (p_source_schema));
      v_target_schema VARCHAR2 (30)
         := UPPER (DBMS_ASSERT.simple_sql_name …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2 datapump

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

datapump ×1

oracle ×1

oracle-11g-r2 ×1