oracle - 如何检查哪些模式已被授予对 Oracle 对象的 EXECUTE 权限?

标签 oracle oracle10g database-permissions grant

我需要找出哪些模式已被授予对 Oracle 10g 数据库(在本例中为包)中的某个对象的执行权限。对我来说最简单的方法是什么?是否有内置函数来提供这些信息?

最佳答案

SELECT grantee
  FROM all_tab_privs
 WHERE table_name = '<your object name>'
  AND privilege = 'EXECUTE'
  AND grantor = '<object owner>';

是的,我知道,它说的是“table_name”,但它也适用于可执行对象。表 DBA_TAB_PRIVS 也能正常工作。您需要适当的权限(例如,DBA 角色、SELECT ANY TALBE)才能从这些 View 中进行选择并查看所有数据。

回应马丁的评论......以上是我所知道的做你所要求的最简单的方法。如果要将其限制为包,请尝试以下操作:
SELECT * FROM all_tab_privs JOIN all_objects ON (table_name = object_name)
 WHERE table_name = '<your object name>'
   AND object_type = 'PACKAGE'
   AND privilege = 'EXECUTE'
   AND grantor = '<object owner>';

关于oracle - 如何检查哪些模式已被授予对 Oracle 对象的 EXECUTE 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1255310/

相关文章:

sql - 如果我将 where 子句作为参数传递,会阻止 SQL 注入(inject)吗?

java - 尝试使用 OCI 连接到 Oracle 时 JVM 崩溃

php - 为什么 PHP PDO 在 mysql 命令行工作时得到 "SQLSTATE[42000] [1044] Access denied for user"?

java - Oracle 10g 在日期中接受 5 位数年份

postgresql - 如何只允许特定用户访问数据库?

postgresql - 禁用角色不拥有的数据库上的所有操作(包括使用 psql -l 列出)?

sql - 从sql plus中的字符串中删除第一个字符

oracle - 将内存使用量从 16GB 减少到 8GB - Oracle

sql - oracle,添加子查询时缺少右括号

sql - 从年、月和日创建日期