无法授予斯科特特权

时间:2014-03-24 07:02:08

标签: sql oracle exception privileges grant

我尝试从SYS授予所有 scott on emp,但oracle抛出ORA-00942: table or view does not exist错误消息。我甚至没有将sys中的emp表格详细信息显示为dba

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

感谢您的帮助。

2 个答案:

答案 0 :(得分: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%'

答案 1 :(得分:1)

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