(Oracle)打开视图时,说权限不足

时间:2019-07-09 14:31:57

标签: oracle

三天前,我创建了另一个用户,没关系。现在,我创建另一个用户,无法正常工作。我不知道我错过了什么。

这次我做了:

CREATE USER TESTDB identified by N2dTlOBFRZ9x;
GRANT CONNECT, RESOURCE TO TESTDB;
GRANT CREATE SESSION TO TESTDB;
GRANT UNLIMITED TABLESPACE TO TESTDB;
GRANT CREATE TABLE to TESTDB;
GRANT CREATE VIEW to TESTDB;

我可以创建一个名为viewTest的视图,将其保存。

TESTDB viewTest

select * from PRODDB.employee  

然后打开viewTest,说权限不足。


我还有另一个用户。我们称之为PRODDB。这是在线数据库
我三天前创建的用户是OKDB。
今天,我创建了另一个,即TESTDB。

在OKDB中,我创建了一个视图(viewTest),可以将其打开。
从PRODDB.employee中选择*;

但是在TESTDB中,无法打开。

1 个答案:

答案 0 :(得分:0)

感谢您的更新!我相信这是一个权限问题。

  

在OKDB中,我创建了一个视图,可以打开它。选择*从   PRODDB.employee;

     

但是在TESTDB中,无法打开。

因此,在此示例中,有三个用户:1. PRODDB,2。OKDB和3. TESTDB

该视图名为Employee,是在PRODDB模式下创建的; PRODDB.EMPLOYEE

如果OKDB可以查询PRODDB.EMPLOYEE,则必须满足以下两项条件之一。要么:1.直接给OKDB(例如PRODDB.EMPLOYEE,{strong>或)授予grant select on PRODDB.EMPLOYEE to OKDB;的特权。2. OKDB通过具有以下角色的特权提升了权限:允许用户查询该视图(例如grant DBA to OKDB,这将允许OKDB查询数据库中的任何表。)

如果TESTDB无法查询视图,我敢打赌,尚未向用户授予必要的特权。要解决此问题,我建议您检查已授予OKDB用户的特权和角色,然后向TESTDB授予相同的特权。如果这与工作有关,那么如果您没有颁发补助金的权限,则可能必须与另一个DBA合作。