如何强制触发器使用特定帐户连接到远程数据库?

问题描述 投票:0回答:1

在数据库“LOCAL”模式“USERS”上,我有一个表“Accounts”。

在数据库“REMOTE”模式“USERS”上,我有相同的表“Accounts”。

LOCAL.USERS.Accounts 表包含一个插入/更新/删除后触发器,旨在将任何 LOCAL.USERS.Accounts 编辑应用于 REMOTE.USERS.Accounts 表;保持数据同步。

LOCAL.USERS 有一个到 REMOTE 的公共数据库链接(未指定

IDENTIFY AS
)。

当我直接更新 LOCAL.USERS.Account 时,我的更改会立即反映在 REMOTE.USERS.Accounts 上 - 触发器按预期工作。

但是,当我尝试使用本地模式 ACTORS 中的包来更新 LOCAL.USERS.Account 时,出现错误:

ORA-01017:用户名/密码无效;登录被拒绝 ORA-02063: 来自远程的前一行

REMOTE 数据库没有 ACTORS 模式,我认为这是问题的根源。

从 REMOTE 的角度来看,我如何确定正在尝试连接哪个模式?如何强制触发器将编辑应用到 REMOTE 作为 USERS 架构而不是 ACTORS 架构?

oracle triggers oracle19c dblink
1个回答
0
投票

在 LOCAL USERS 模式中使用

IDENTIFY AS USERS
子句创建私有数据库链接,强制触发器以 USERS(有帐户)而非 ACTORS(在远程数据库上没有帐户)的身份连接到 REMOTE 数据库).

© www.soinside.com 2019 - 2024. All rights reserved.