oracle中如何设置视图的查看权限?

How to set the right to see a view in oracle?

我在 oracle 数据库中以用户“a”身份登录。 我可以写一个像“Select * from MyView”这样的查询,我得到所有的结果——很好。
但是我在我的视图树(列表)中看不到 SqlDeveloper 中的视图本身,除此之外我不是所有者(我可以用“Select * from all_views”看到)。

如何更改此视图的权限以在树中查看“MyVIew”?

你不能改变视图的权利来查看它你的视图树(列表),因为它不是你自己的对象。要在您的视图树(列表)中拥有视图,您必须在您自己的 shema 中创建它。

我想您应该查询 all_objects 以查看您实际处理的是什么。为什么?因为下面的例子:

以用户 mike 身份连接,我将创建一个 table,将其上的 select 授予 public 并创建一个 public 同义词:

SQL> connect mike/lion
Connected.
SQL> create table test as select 'Littlefoot' name from dual;

Table created.

SQL> create public synonym myview for test;

Synonym created.

SQL> grant select on test to public;

Grant succeeded.

以另一个用户身份连接,scott 和 select 来自 myview:

SQL> connect scott/tiger
Connected.
SQL> select * from myview;

NAME
----------
Littlefoot

对;有用。它在 SQL 开发人员中的什么位置?

啊哈,它在 public 同义词 中(我对名称应用了过滤器,寻找 MYVIEW 以跳过 zillion 其他 public 同义词)。

或者,在 SQL* 加上:

SQL> select object_name, object_type, owner from all_objects where object_name = 'MYVIEW';

OBJECT_NAME                    OBJECT_TYPE         OWNER
------------------------------ ------------------- ------------------------------
MYVIEW                         SYNONYM             PUBLIC

SQL>

因此,我建议您也这样做 - 查询 all_objects,您将对这个问题有更多的了解。

@Littlefoot 的回答是正确的。您当然也可以直接通过树的 'Other Users' 部分浏览到视图,然后向下钻取到视图。

但是,您也可以将视图过滤器设置为 'Include Synonyms'

I wrote a story on this topic for TABLES, but it also applies to VIEWS here.