我用sys身份先创建了表1、角色role1和用户user1。然后,我赋予role1对表1的select操作权限。同时,把role1赋给user1。
这样的话,我就可以用user1用户来检索表1.
可是,我用sys用户插入了一些数据后,再换成user1登录,对表1进行select操作。
却提示我:“ORA-00942:表或视图不存在”。为什么?
注:
执行“select * from role_tab_privs;”,清楚的看到role1拥有对表1的select权限。
执行“select * from user_role_privs;”,清楚的看到user1属于role1.
这样的话,我就可以用user1用户来检索表1.
可是,我用sys用户插入了一些数据后,再换成user1登录,对表1进行select操作。
却提示我:“ORA-00942:表或视图不存在”。为什么?
注:
执行“select * from role_tab_privs;”,清楚的看到role1拥有对表1的select权限。
执行“select * from user_role_privs;”,清楚的看到user1属于role1.
select * from sys.表1;
重复发帖
兄弟又是你呀。太谢谢你了
确实如你所说,但,难道不能把那个表前缀“sys”去掉吗?
如果是其他用户的话要查询这个表。必须要sys.table的格式.
下面举个例子
SQL> show user
USER is "SYS"
SQL> create table t1(id number);Table created.
SQL> create user test1 identified by test1;User created.SQL> grant connect to test1;Grant succeeded.SQL> grant select on t1 to test1;Grant succeeded.
SQL> conn test1/test1
Connected.
SQL> select * from t1; --这里是不行的
select * from t1
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from sys.t1;no rows selectedSQL> conn / as sysdba
Connected.
SQL> create public synonym t1 for sys.t1; --为对象sys.t1创建同义词t1Synonym created.SQL> conn test1/test1
Connected.
SQL> select * from t1; --这里就可以了no rows selected