Dear All:
   大家好!最近在使用DDL触发器时,碰到一个权限问题。如下:
create or replace trigger ddl_trigger
after create or drop on database
begin
     insert into ddl_log values(ora_login_user,sysdate,ora_sysevent,ora_dict_obj_type,ora_dict_obj_owner,ora_dict_obj_name,sys_context('USERENV','IP_ADDRESS'));
exception
         when others then
         err_logs_record(sqlcode,sqlerrm);
end;
1、执行提示 ORA-01031: 权限不足。
2、该触发器在DBA用户下运行正确。
   在scott用户运行提示错误。
请问:scott用户应该具有什么的权限呢?

解决方案 »

  1.   

    scott是普通用户,无法创建database触发器。
    授予scott用户ADMINISTER DATABASE TRIGGER权限,再创建之。
    SQL> show user
    USER 为 "SCOTT"
    SQL> create or replace trigger ddl_trigger
      2  after create or drop on database
      3  begin
      4     null;
      5  end;
      6  /
    after create or drop on database
                            *
    第 2 行出现错误:
    ORA-01031: 权限不足
    SQL> conn sys/ggz as sysdba
    已连接。
    SQL> grant ADMINISTER DATABASE TRIGGER to scott;授权成功。SQL> conn scott/scott
    已连接。
    SQL> create or replace trigger ddl_trigger
      2  after create or drop on database
      3  begin
      4     null;
      5  end;
      6  /触发器已创建SQL>