Oracle-11g

在 Oracle 中,作為非模式使用者,我需要哪些授權才能查看 all_objects 中的行?

  • January 9, 2012

我有兩個 oracle 11g 數據庫實例,它們在模式中都有相同的對象定義:具有索引和約束的表、一個序列和一個儲存過程。

案件事實:

  1. 我作為模式使用者“MYDBOWNER”登錄的第一個實例。
  2. 第二個實例我作為角色許可使用者“MYDBUSER”登錄,儘管該模式仍歸“MYDBOWNER”所有。
  3. 我執行以下查詢以查看使用者“MYDBOWNER”擁有的對象:

select * from all_objects where owner=‘MYDBOWNER’;

  1. 作為 MYDBOWNER,我得到了所有對象的列表,包括索引(但不包括約束)。
  2. 作為 MYDBUSER,我看不到索引,但我看到了表、序列和過程。

角色權限正確(表有select、delete、update和insert,sequence有select,procedure有execute)。那麼為什麼我看不到索引呢?是否需要為表的角色提供額外的授權?

具有前綴的 Oracle 數據字典視圖ALL_提供有關您的使用者有權訪問的對象的資訊。具有DBA_前綴的視圖提供有關數據庫中所有對象的資訊。具有前綴的視圖USER_提供有關您擁有的對象的資訊。

在這種情況下,MYDBUSER不會也不能對擁有的索引擁有特權,MYDBOWNER因為沒有可以對單個索引授予的特權,因此MYDBUSER看不到ALL_OBJECTS. 如果MYDBUSER被授予訪問DBA_OBJECTSor DBA_INDEXES(單獨或通過SELECT ANY DICTIONARY特權)的權限,您可以查詢DBA_OBJECTS(or DBA_INDEXES) 以獲取 . 擁有的所有索引的列表MYDBOWNER

引用自:https://dba.stackexchange.com/questions/10423