【发布时间】:2020-08-14 13:12:04
【问题描述】:
我的两个 oracle 帐户中有一个触发器 STUDENT_DATA_UPDATE。一个是所有者帐户,另一个是用户帐户。以下是详细信息。
拥有所有权限的所有者帐户:
<connection-url>jdbc:oracle:thin:@eu.national.com:15001/STUD</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>NATIONAL_OWN</user-name>
<password>********</password>
没有权限的USER帐号:
<connection-url>jdbc:oracle:thin:@eu.national.com:15001/STUD</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>NATIONAL_USR</user-name>
<password>********</password>
我可以从拥有权限的 OWNER 帐户更改、禁用或启用触发器。但我无法从 USER 帐户对触发器进行任何更改。我的问题是,我想授予将触发器从 NATIONAL_OWN 更改为 NATIONAL_USR 帐户的权限,该帐户可以在其中禁用和启用相同的触发器。
【问题讨论】:
-
您需要强大的
ANY权限才能授予用户。或者在所有者模式中有一个包装程序来进行修改,但这可能只对启用/禁用才真正可行。你为什么要除所有者之外的任何人更改触发器? -
实际上我们在 ET 和 Prod 环境中使用 NATIONAL_USR 用户。我们有一个要求,我需要仅对特定功能禁用触发器,然后在功能执行后启用它。因此,我们无权对现有用户执行此操作。我们需要授予更改触发器的权限。我不认为给用户任何特权是正确的选择。您能否解释一下如何执行启用/禁用特定表的触发器的包装程序。
-
包装过程是触发器所有者拥有的过程。它以所有者的权限执行。然后你将程序上的 EXECUTE 授予需要执行它的人。
标签: oracle database-administration privileges