我需要向用户授予对我的观看次数的权限。但我不希望他们看到创建视图的底层脚本。在甲骨文有可能吗?
SELECT访问没有帮助
答案 0 :(得分:1)
如果你真的需要屏蔽用户的视图工作,那么你可以为他们编写包装器。
SQL> conn a/a
Connected.
SQL> select * from t23
2 /
COL1 C
---------- -
42 Y
99 N
SQL> create or replace view private_v23 as
2 select col1 from t23
3 where col2 = 'Y'
4 /
View created.
SQL> create or replace view public_v23 as
2 select * from private_v23
3 /
View created.
SQL> grant select on public_v23 to b
2 /
Grant succeeded.
SQL>
如果我们现在转到用户B,他们可以运行视图,但他们无法看到它如何获取数据:
SQL> conn b/b
Connected.
SQL> select * from a.public_v23
2 /
COL1
----------
42
SQL> select owner, view_name, text
2 from all_views
3 where owner = 'A'
4 /
OWNER VIEW_NAME
------------------------------ ------------------------------
TEXT
-------------------------------------------------------------
A PUBLIC_V23
select "COL1" from private_v23
SQL>
你应该有充分的理由做这种混淆。您正在为您的用户创造更多的生活,因为他们无法理解为什么他们获得他们获得的数据,或者对性能,加入等做出合理的推断。有权访问TOAD的用户可能需要那种类型信息。
另一件事是用户仍然可以钻进视图的底层结构;例如,如果他们可以运行SQL跟踪和tkprof
。隐藏视图源并不像混淆PL / SQL代码那样容易。