【问题标题】:unable to grant privileges to scott无法授予 scott 权限
【发布时间】:2014-03-24 07:02:07
【问题描述】:

我正在尝试全部授予从 SYS 对 emp 进行 scott,但 oracle 抛出 ORA-00942: table or view does not exist 错误消息。我什至没有在sys 中以dba 获得emp 表详细信息。

如何授予 scott 的所有权限,以便我可以在 scott 中创建视图或用户。当我尝试在 scott 中创建视图或用户时,系统抛出 insufficient privileges 错误消息。

感谢您的帮助。

【问题讨论】:

    标签: sql oracle exception privileges grant


    【解决方案1】:

    你有(至少)三个不同的问题:

    • 缺少创建视图等的系统权限。
    • (假设您要使用数据库安装提供的示例表)该表称为EMPLOYEES,而不是EMP
    • EMPLOYEES 表在 HR 架构中,而不是在 SYS 架构中
    • HR.EMPLOYEES 上的权限缺失

    解决这些问题:

    -- connect as SYS
    GRANT CREATE VIEW TO scott;
    
    -- connect as HR
    CREATE SELECT ON employees TO scott;
    
    -- connect as SCOTT
    CREATE VIEW v_scott AS SELECT * FROM hr.employees;
    

    更新

    如果您不确定正确的表名,您可以使用此查询来获取数据库中名称以EMP 开头的所有表的列表(要运行此操作,您必须使用特权用户帐户,例如 SYS):

    select owner, table_name from dba_tables where table_name like 'EMP%'
    

    【讨论】:

    • OP 说的是emp 而不是employees。尽管您对任务的分析是正确的。
    • 我知道。但我猜他想访问随数据库安装提供的示例表,只是不知道正确的表名。我在回答中添加了一条评论,提到我认为是这种情况。
    • 谢谢。我能够向 scott 授予“创建视图”权限。是的,我正在使用示例数据库,这里提出了一个新问题,表名是 emp,我尝试使用员工,oracle 抛出 ORA-00942:表或视图不存在错误。基于此,我想检查数据库中所有可用的表,我该怎么做,我可以查看scott下的所有表。另外,我没有 HR 用户。再次感谢您花时间帮助我。
    • 我添加了一个查询来获取名称以EMP 开头的表。祝你好运。
    • 谢谢弗兰克,它返回了 EMP 表。我一直在尝试获取语法来查看 sys 下的所有表,使用您的查询 select owner, table_name from dba_tables,我明白了。再次感谢您抽出宝贵时间,感谢您的耐心等待。
    【解决方案2】:

    EMP 表是一个古老的对象,在许多旧教程和博客文章中都使用过。但是,它不再默认构建。

    如果您希望 EMP 在架构中(传统上 SCOTT 是它的所有者),您需要运行构建脚本。在哪里可以找到它取决于数据库的精确版本,但它可能位于 sqlplus/demo 子目录下。在我的 Linux 11gR2 构建中,它位于

    %ORACLE_HOME/rdbms/admin/utlsampl.sql 
    

    OraFAQ 有更多关于 SCOTT 架构的信息。 Check it out.

    另一方面,如果您想使用当前文档中引用的现代演示模式(HR、SALES 等),您可以在以下位置找到所有脚本:

    %ORACLE_HOME/demo/schema
    

    文档有安装说明。 Find out more.

    【讨论】:

    • 谢谢APC,我正在使用ora 10g
    猜你喜欢
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多