三天前,我创建了另一个用户,没关系。现在,我创建另一个用户,无法正常工作。我不知道我错过了什么。
这次我做了:
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中,无法打开。
答案 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合作。