Oracle 授予在DBMS_上执行警报时权限不足
我正在安装新的Oracle。安装之后,我只想执行一些准备好的(不是我自己编写的)脚本 其中一个执行失败的是Oracle 授予在DBMS_上执行警报时权限不足,oracle,grant,Oracle,Grant,我正在安装新的Oracle。安装之后,我只想执行一些准备好的(不是我自己编写的)脚本 其中一个执行失败的是 GRANT EXECUTE ON DBMS_ALERT to TESTUSR; ORA-01031:权限不足 我正在使用SQLDeveloper的系统用户执行脚本。有人能告诉我执行这个脚本需要做什么吗 管理员权限或执行DBMS\u警报所需的执行目录\u角色角色 根据此处的文档,(部分“用户访问SYS模式中的对象”) 它说: 具有显式对象权限的用户或具有管理权限(SYSDBA)的用户可以访
GRANT EXECUTE ON DBMS_ALERT to TESTUSR;
ORA-01031:权限不足
我正在使用SQLDeveloper的系统用户执行脚本。有人能告诉我执行这个脚本需要做什么吗 管理员权限或执行DBMS\u警报所需的
执行目录\u角色
角色
根据此处的文档,(部分“用户访问SYS模式中的对象”)
它说:
具有显式对象权限的用户或具有管理权限(SYSDBA)的用户可以访问SYS模式中的对象
由于您使用的是系统
帐户,因此可以执行包DBMS\u警报
,以system@db作为sysdba
。请参阅下面的屏幕截图,了解如何添加dbs
角色或sysdba
权限
或者,您可以使用
EXECUTE\u CATALOG\u角色
执行DBMS\u警报
您可以在此处看到具有此访问权限的用户或角色:
usr@db>SELECT
2 grantee,
3 granted_role,
4 default_role
5 FROM
6 dba_role_privs
7 WHERE
8 1 = 1
9 AND grantee IN (
10 'DBA',
11 'SYS',
12 'SYSTEM'
13 )
14 AND granted_role IN (
15 'DELETE_CATALOG_ROLE',
16 'EXECUTE_CATALOG_ROLE',
17 'SELECT_CATALOG_ROLE'
18 )
19 ORDER BY
20 1,
21 2;
GRANTEE GRANTED_ROLE DEFAULT_ROLE
DBA DELETE_CATALOG_ROLE YES
DBA EXECUTE_CATALOG_ROLE YES
DBA SELECT_CATALOG_ROLE YES
SYS DELETE_CATALOG_ROLE YES
SYS EXECUTE_CATALOG_ROLE YES
SYS SELECT_CATALOG_ROLE YES
6 rows selected.
usr@db>SELECT
2 grantee,
3 granted_role
4 FROM
5 dba_role_privs
6 WHERE
7 1 = 1
8 AND granted_role = 'DBA'
9 ORDER BY
10 1,
11* 2;
usr@db>/
GRANTEE GRANTED_ROLE
SYS DBA
SYSTEM DBA
使用sys
帐户是不好的做法,即使它有足够的权限
最好的解决方案是将dba
角色授予用户帐户,例如usr
使用sysdba
特权(例如system@db作为sysdba
),创建具有所需权限的用户:
create user usr identified by Pa$$W0rD;
grant create session to usr;
grant dba to usr;
因此,您可以使用dba
角色登录以执行此包
在SQL*Plus中,这看起来是这样的(假设usr
已被授予dba
角色):
在SQL Developer中,您可以如下所示设置连接,选择角色,dba
:
以SYSDBA的身份登录并运行脚本。您可能需要以sysbda的身份连接。你有这个特权吗?尝试如下连接:conn/as sysdba。如果连接成功,请尝试grant语句。以sysdba身份连接是关键。我就像没有sysdba的系统用户一样连接。
usr@db as dba