2014-02-18 47 views
0

我需要從我在不同模式中定義的包中的表dba_audit_object中提取信息。目的是最終在Oracle表單中顯示提取的數據。oracle:如何從另一個模式訪問dba_audit_object

如果我在SQL Developer中做SELECT * FROM dba_audit_object我會得到結果。

但是,如果我在包中寫入相同的SELECT,它會顯示:ORA-00942 table or view does not exist。如果我嘗試在基於同一個SELECT語句的模式中創建一個視圖,我也會得到同樣的錯誤。

我試過使用sys.dba_audit_object但這仍然給我同樣的錯誤信息。

有誰知道我該怎麼做/可以繼續嗎?

回答

0

我得到了答案。您應該以SYS身份登錄並執行以下操作:

GRANT SELECT ON DBA_AUDIT_OBJECT TO PUBLIC;

只有這樣其他模式才能夠使用它來創建新視圖或在包內。

+0

這就是我說的!正確閱讀答案:) – SriniV

+0

好的謝謝!我確實讀了好幾遍,但無法解決句子的第二部分。 thx也janearles!這正是我起初不理解的部分。現在一切順利:) – user3322952

1

提供贈款像

GRANT SELECT ON DBA_AUDIT_OBJECT TO THE_SCHEMA_FROM_WHERE_YOU_NEED_ACCESS; 

如果你已經有了一個代名詞,那麼你不能提供一個代名詞補助。在這種情況下,使用

GRANT SELECT ON SYS.DBA_AUDIT_OBJECT TO THE_SCHEMA_FROM_WHERE_YOU_NEED_ACCESS; 

來看,它作爲SYS

+0

hi 爲什麼我不能選擇公共同義詞? 已經在模式SYS中定義了一個PUBLIC同義詞DBA_AUDIT_OBJECT,並授予了我的DBA選擇到我的ROLE。但它仍然不起作用。 爲什麼不呢? – user3322952

+0

@ user3322952您需要將其*直接授予包的所有者,而不僅限於分配給包所有者的角色。 –