一旦向特定用户的视图提供授权,它会自动向 Oracle 中视图的基础表授予授权吗??
Oracle View相关
否(正如 pmdba 评论的那样);这就是它的美。
我目前以斯科特的身份连接:
SQL> show user
USER is "SCOTT"
这是我的桌子:
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17.12.80 840 20
7499 ALLEN SALESMAN 7698 20.02.81 1600 300 30
7521 WARD SALESMAN 7698 22.02.81 1250 500 30
7566 JONES MANAGER 7839 02.04.81 2975 20
7654 MARTIN SALESMAN 7698 28.09.81 1250 1400 30
7698 BLAKE MANAGER 7839 01.05.81 2850 30
7782 CLARK MANAGER 7839 09.06.81 2450 10
7788 SCOTT ANALYST 7566 09.12.82 3000 20
7839 KING PRESIDENT 17.11.81 5000 10
7844 TURNER SALESMAN 7698 08.09.81 1500 0 30
7876 ADAMS CLERK 7788 12.01.83 1100 20
7900 JAMES CLERK 7698 03.12.81 950 30
7902 FORD ANALYST 7566 03.12.81 3000 20
7934 MILLER CLERK 7782 23.01.82 1300 10
14 rows selected.
View 仅从该表中选择列和行的子集:
SQL> create or replace view v_emp as
2 select ename, job
3 from emp
4 where deptno = 10;
View created.
授予另一个用户
select
权限,Mike:
SQL> grant select on v_emp to mike;
Grant succeeded.
连接迈克:
SQL> connect mike/pwd@orcl
Connected.
从该视图中选择有效-我只能看到返回的视图:
SQL> select * from scott.v_emp;
ENAME JOB
---------- ---------
CLARK MANAGER
KING PRESIDENT
MILLER CLERK
只看视图,我不知道它基于哪个表;我可以描述它:
SQL> desc scott.v_emp
Name Null? Type
----------------------------------------- -------- ----------------------------
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
我可以在
all_objects
看到它:
SQL> select object_name, object_type, created, status
2 from all_objects
3 where owner = 'SCOTT'
4 and object_name = 'V_EMP';
OBJECT_NAME OBJECT_TYPE CREATED STATUS
------------------------------ ------------------- -------- -------
V_EMP VIEW 09.03.23 VALID
SQL>
all_source
中什么都没有,但是:
SQL> select text
2 from all_source
3 where owner = 'SCOTT'
4 and name = 'V_EMP';
no rows selected
但是没关系-我知道它是
emp
表所以-让我们尝试直接从中选择:
SQL> select * from scott.emp;
select * from scott.emp
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL>
不出所料,那是行不通的。