将 OEM 作业转换为 DBMS_Scheduler 作业的数据库链接问题

Lei*_*fel 5 oracle oracle-11g-r2 oracle-10g jobs

我们有一个 OEM 作业,它将使用特定的数据库用户凭据运行 PL/SQL 块。两个不同数据库的凭据相同,因此块使用没有凭据的私有数据库链接将数据从第二个数据库拉入第一个数据库没有问题。

我们将作业迁移到 DBMS_SCHEDULER,但作业失败并显示以下错误:

ORA-04052: error occurred when looking up remote object PATIENT.PTTRANS@BILL10G 
ORA-00604: error occurred at recursive SQL level 2 ORA-01017: invalid username/password; logon denied 
ORA-02063: preceding line from BILL10G 
Run Code Online (Sandbox Code Playgroud)

我还没有找到确切的信息,但我读过的东西似乎表明,由于调度程序作业没有登录名,因此它们不能使用使用传递凭据的数据库链接。这是有道理的,因为无论作业是由 SYSTEM 拥有还是由通常运行该块的用户拥有(并且在登录时仍然可以),我都会收到相同的错误。

任何人都可以提供这种情况的进一步解释或更重要的是解释解决此问题的方法吗?我可以想到几个,但我不确定我喜欢其中的任何一个。

小智 2

解决这个问题的唯一方法是在数据库链接定义中使用凭据。如果你问我的话,这不太好,但这就是我发现的。这是在 10g 和 11 中进行的,没有在 12c 中进行测试。