无法在由 oracle 11g 提供支持的"Run SQL Command Line"中授予角色权限



我正在尝试使用SQL命令行在Oracle 11g数据库中创建角色,但我收到与权限不足相关的错误。具体来说,我试图授予"CREATE ANY role"。权限到用户帐户,但是我收到一个"ORA-00911:无效字符"。错误。

步骤:

  • 在Oracle 11g上创建了一个新的数据库,用户名为"21f_9208"。
  • 使用SQL命令行连接到数据库,并验证用户帐户可以查看数据库中的表。
  • 尝试使用以下SQL命令创建新角色:
  • 创建超级管理员
  • 收到一个错误消息,指出用户没有足够的权限来创建角色。
  • 试图授予"CREATE ANY role"使用以下SQL命令将权限授予用户帐户:
  • 收到一个"ORA-00911:无效字符";错误消息。

聊天GPT的潜在解决方案,但我是初学者,所以没有帮助我:

  • 验证用户帐户具有创建角色和授予特权所需的权限。这可能涉及使用SQL命令行或Oracle企业管理器检查用户的角色和特权。
  • 检查SQL命令的语法,确保它们格式正确,不包含任何拼写错误或错误。
  • 联系Oracle支持以帮助解决问题,特别是如果用户没有必要的权限来执行所需的任务。

只是想给我的oracle 11g数据库21F_9208权限,这样我就可以执行下面的语句来完成我的赋值:赋予superadmin权限SELECT, INSERT, UPDATE, DELETE;

这个角色需要被授予权限来对admin表执行以下操作

只有特权用户(例如SYS,除非您创建了自己的用户)可以创建新用户。

意味着SYS首先必须

grant create role to "21F_9208";

(顺便说一下,这是选择不当的用户名);你为什么要这样设置?现在您必须每次使用双引号限定它,因为它的名称以数字开头。这就是你得到的错误原因:"ORA-00911: invalid character")。

该用户("21F_9208") -显然-拥有名为admin的表,因为您想将DML权限(select, insert,…)授予新创建的角色superadmin


这是一个演练。

创建新用户:

SQL> show user
USER is "SYS"
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
SQL> create user "21F_9208" identified by demo
2  default tablespace users
3  quota unlimited on users
4  temporary tablespace temp;
User created.

授予基本权限(只是为了使这个示例工作):

SQL> grant create session, create table, create role to "21F_9208";
Grant succeeded.

连接新创建的用户:

SQL> connect "21F_9208"/demo@pdb1
Connected.

创建表:

SQL> create table admin (id number);
Table created.

创建角色:

SQL> create role superadmin;
Role created.

赋予角色权限:

SQL> grant select, insert, update, delete on admin to superadmin;
Grant succeeded.
SQL>

最新更新