【问题标题】:insufficient privileges in oracle 10g [duplicate]oracle 10g中的权限不足[重复]
【发布时间】:2015-11-19 08:22:16
【问题描述】:

我创建了一个如下表。

表格结构如下:

Create Table advanced
 (Id  varchar(15),
 Name varchar(20),
 Dept  varchar(15),
 Cgpa  float,
 Birth_date date,
 Mob_no  int,
 Dist varchar(20),
 Salary  number(8));

当我想按如下方式创建视图时,sql plus 给了我错误“权限不足”。

Create View advanced_data as
(
select name,dept,dist,salary from advanced
);

我该如何解决这个问题?

【问题讨论】:

  • 作为一般规则,不要丢弃 ORA-... 错误代码。它是寻找解决方案的关键工具。

标签: sql oracle


【解决方案1】:

您的用户似乎没有创建视图的权限。

要解决此问题,请按以下步骤操作: sys 用户以 sysdba 身份登录到 sqlplus,然后运行此命令。

GRANT CREATE VIEW TO <user Name>;
GRANT CREATE ANY VIEW TO <user Name>;

Oracle DBA Blog ORA-01031:“权限不足”错误发生在您尝试执行未授予您适当权限的程序或功能时。

对于 DBA,如果目标 OS 可执行文件没有读取和执行权限(例如 UNIX/Linux 中的 (770)),并确保 oracle 用户是 dba 组的成员(例如 /etc/group)。 Windows 注册表中也有类似的权限。

在 Oracle 内部,可以通过使用无限数据库权限登录“as sysdba”来避免“ORA-01031:权限不足”错误。

【讨论】:

    【解决方案2】:

    来自here

    要创建视图,您必须满足以下要求:

    您必须已被授予 CREATE VIEW(才能在您的 schema)或 CREATE ANY VIEW(在另一个用户的架构中创建视图) 系统特权,显式或通过角色。

    您必须已被明确授予 SELECT、INSERT、UPDATE 或 对视图下的所有基础对象的 DELETE 对象权限或 选择任何表、插入任何表、更新任何表或删除 ANY TABLE 系统权限。你可能还没有获得这些 通过角色获得权限。

    此外,为了授予其他用户访问您的视图的权限,您 必须已获得对具有 GRANT OPTION 选项或适当的系统权限与 ADMIN 选项选项。否则,受赠者将无法访问您的视图。”

    所以你需要执行下面的查询来获得用户创建视图的权限:

    GRANT CREATE VIEW TO username
    

    Oracle docs 还明确指出:

    包含视图的架构的所有者必须具有权限 必须选择、插入、更新或删除所有行 视图所基于的表或视图。 所有者必须是 直接授予这些权限,而不是通过角色授予。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多