0

用户 1 授予用户 2 对表(其索引为 TableIndex)的选择、删除权限。

我可以看到 user2 无法看到该表上存在的索引。

用户 2 运行此 SQL:

select DBMS_METADATA.GET_DDL('INDEX','TableIndex') from DUAL;
Result is:  The specified object was not found in the database.

当 User2 在表上执行 Select SQL Queries 时,我希望使用索引,而不需要任何进一步的授权(虽然索引不可见)?

4

2 回答 2

0

没有“索引许可”之类的东西。

我们授予对表的权限,因为我们可以对它们运行 DML - 选择、更新、删除等。但是我们不对索引执行此类操作,因此没有什么可授予的。

USER2 看不到 DDL 以在 User1 的表上创建索引这一事实是完全正确的。这不关他们的事。User2 从表中选择,该查询将使用 User1 创建的任何适当的索引。

于 2013-02-26T12:46:11.910 回答
0

为了使用dbms_metadata.get_ddl您需要select_catalog_role授予 user2(请参见此处)。但是即使您看不到该索引,也会使用该索引(在适用/可能的情况下)。

于 2013-02-26T10:21:10.777 回答