在pl/SQL中呼叫logminer相關檢視的問題

regonly1發表於2013-03-11

最近要寫一套程式,用來從redo中採集表的變化資料。

於是就使用了log miner工具,由於要定期處理,所以用plsql包做了封裝。

封裝後執行,發現存在問題,一開始是報表不存在,疑是許可權問題,授權之:

grant execute_catalog_role  to fejxc;
grant select_catalog_role to fejxc;
grant select on v_$logmnr_contents to fejxc;
grant execute on dbms_logmnr to fejxc;
grant dba to fejxc;

但是發現還是存在問題,執行時報如下錯誤:

begin logmnr_contents_t(); end;

ORA-01031: 許可權不足
ORA-06512: 在 "FEJXC.LOGMNR_CONTENTS_T", line 11
ORA-06512: 在 line 2

啥?還許可權不足,直接查詢都可以了。

嘗試用動態語句來建立表:

execute immediate 'create table xx as select * from v$logmnr_contents';

但是還是報此錯誤,詭異啊。難道v$logmnr_contents這個檢視情況比較特殊?

把所有能想到的情況都試過了,ask tom、oracle官方forum都看的眼睛都花了,沒找到有意義的解決方案。

最後,實在沒轍,想到了呼叫者許可權和執行者許可權的條件,發現許可權不足的問題居然解決了。高興!

20130312 補充

透過newkid老兄的指點,發現透過授權,還是能解決這個問題的,下面是文件對這個解決方案的說明:

V$LOGMNR_CONTENTS contains log history information. To query this view, you must have the SELECT ANY TRANSACTION privilege.

悲催的是,為啥我昨天找了半天資料都沒找到這段話。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-755751/,如需轉載,請註明出處,否則將追究法律責任。

相關文章