我正在尝试将用户配置为定期从计划的作业中运行 logMiner。
我的用户名为 admin 我已授予 admin 用户以下权限:
grant select on v_$database to admin
grant execute on DBMS_LOGMNR to admin
grant select on v_$logmnr_contents to admin
但是,当我尝试从 v$logmnr_contents 中进行选择时,我得到 - ORA-01031 权限不足。
为了测试,我正在运行以下脚本:
create or replace procedure Test_LogMiner AS
first_scn NUMBER(8);
last_scn NUMBER(8);
log_count NUMBER(8);
BEGIN
Select current_scn into last_scn from V$DATABASE;
--Select max(mined_scn) into first_scn from my_table;
first_scn := last_scn-100;
DBMS_LOGMNR.START_LOGMNR(startScn=>first_scn, endScn=>last_scn,
options=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG+DBMS_LOGMNR.CONTINUOUS_MINE);
WRITE_LOG('LOG_DIR', 'After START_LOGMNR');
-- get error on this select - ORA-01031 insufficient privileges--
select count(*) into log_count from v$logmnr_contents;
WRITE_LOG('LOG_DIR', 'select count(*)='||log_count);
DBMS_LOGMNR.END_LOGMNR();
WRITE_LOG('LOG_DIR', 'After END_LOGMNR');
EXCEPTION WHEN OTHERS THEN
WRITE_LOG('LOG_DIR', 'Error: '||SQLERRM);
END;
我可以运行相同的场景,意味着启动 logMiner 并从 v$logmnr_contents 中选择,当它不作为过程运行时,从 SQL 开发人员作为管理员用户(意味着:删除创建过程并将其余代码放入另一个begin
/ end
)
当我从 'sys as dba' 用户运行 proc 时,它也会运行。
我的问题是:我还应该在程序工作的方式上授予什么?
您需要
EXECUTE_CATALOG_ROLE
分配给用户。详情:使用 LogMiner 分析重做日志文件