【发布时间】:2016-07-14 17:09:41
【问题描述】:
我有一个关于如何在 Oracle PL/SQL 中使用数据库链接的问题。假设我在当前数据库中创建了一个数据库链接 (Database2),并且我正在使用它来访问第二个数据库。例如:
select *from CustomerTable@Database2;
Update CustomerTable@Database2
set Comment = 'Hello world!'
where CustomerID = 123;
这些都成功了。
但是假设我想在 Database2 中向用户授予角色或撤销角色。可以通过我的数据库链接完成吗?如果有,语法是什么?
如果我在 Database2 中打开一个 PL/SQL 会话,那么语法将是:
REVOKE some_role FROM bsmith;
GRANT some_other_role TO rjones;
有没有办法使用我的数据库链接从我的原始数据库中执行此操作?
【问题讨论】:
-
为什么要对数据库链接进行 DDL?这通常是不允许的,通常是一个坏主意。您可以在 Database2 上创建一个存储过程来执行您想要的任何 DDL,然后授予数据库链接用户对该过程的执行访问权限。或者您可能会变得非常棘手并安排在 database2 上运行的作业实际上会执行授权,但这是一个非常复杂的架构。
-
我正在编写一个存储过程,它将从我的生产数据库中获取一些特定的记录和权限,并将它们复制到我的开发或测试数据库中。我可以复制记录没问题,但授予权限却变得很棘手。
标签: database oracle plsqldeveloper grant