中科院云平台架构师,专注于数字化、智能化,技术方向:云、Linux内核、AI、MES/ERP/CRM/OA、物联网、传感器、大数据、ML、微服务。
分类: Oracle
2006-08-30 13:44:07
在metalink note 116540.1 指出,如果在create or replace view后,该视图对应的权限丢失,那么将是一个bug。
首先:问这样一个问题,用户 a 创建了一个视图v,授予用户b:
grant select on v to b,那么,用户b可以查看该视图。这没有什么疑问。
但是,现在如果a用户发出create or replace view v as select *,之后,用户b能看select改视图吗?
答案是肯定的:
以用户a登录
SQL> conn
请输入用户名: a/a
已连接。
SQL> create or replace view v_cy as select * from t2;
视图已创建。
SQL> grant select on v_cy to wwf;
授权成功。
以用户b登录:
SQL> conn
请输入用户名: b/b
已连接。
SQL> select * from a.v_cy;
A B
---------- ----------
1 1
这时a用户发出如下命令:
SQL> create or replace view v_cy as select * from t2;
视图已创建。
b用户仍然可以查询v_cy:
SQL> select * from a.v_cy;
A B
---------- ----------
1 1
可以,create or replace绝对不是drop然后再create那么简单
上面的视图,如果你先drop,再create,用户b是绝对查看不到的,将会出现如下提示:
ORA-00942: 表或视图不存在