Oracle-11g
在 Oracle 中,作為非模式使用者,我需要哪些授權才能查看 all_objects 中的行?
我有兩個 oracle 11g 數據庫實例,它們在模式中都有相同的對象定義:具有索引和約束的表、一個序列和一個儲存過程。
案件事實:
- 我作為模式使用者“MYDBOWNER”登錄的第一個實例。
- 第二個實例我作為角色許可使用者“MYDBUSER”登錄,儘管該模式仍歸“MYDBOWNER”所有。
- 我執行以下查詢以查看使用者“MYDBOWNER”擁有的對象:
select * from all_objects where owner=‘MYDBOWNER’;
- 作為 MYDBOWNER,我得到了所有對象的列表,包括索引(但不包括約束)。
- 作為 MYDBUSER,我看不到索引,但我看到了表、序列和過程。
角色權限正確(表有select、delete、update和insert,sequence有select,procedure有execute)。那麼為什麼我看不到索引呢?是否需要為表的角色提供額外的授權?
具有前綴的 Oracle 數據字典視圖
ALL_
提供有關您的使用者有權訪問的對象的資訊。具有DBA_
前綴的視圖提供有關數據庫中所有對象的資訊。具有前綴的視圖USER_
提供有關您擁有的對象的資訊。在這種情況下,
MYDBUSER
不會也不能對擁有的索引擁有特權,MYDBOWNER
因為沒有可以對單個索引授予的特權,因此MYDBUSER
看不到ALL_OBJECTS
. 如果MYDBUSER
被授予訪問DBA_OBJECTS
orDBA_INDEXES
(單獨或通過SELECT ANY DICTIONARY
特權)的權限,您可以查詢DBA_OBJECTS
(orDBA_INDEXES
) 以獲取 . 擁有的所有索引的列表MYDBOWNER
。