我用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;
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 selected SQL> conn / as sysdba
Connected.
SQL> create public synonym t1 for sys.t1; --为对象sys.t1创建同义词t1 Synonym created. SQL> conn test1/test1
Connected.
SQL> select * from t1; --这里就可以了 no rows selected