小弟因最近项目需要,想对oracle系统表(存放审计信息的表)写一个触发器。代码如下create or replace trigger audit_insert
   after insert on sys.aud$ 
   for each row
   begin
   insert into wsba.audit_backup (sessionid,userid,sqltext) values(:new.sessionid,:new.userid,:new.sqltext);
   end;但是系统提示:
create or replace trigger audit_insert
                          *
第 1 行出现错误:
ORA-04089: 无法对 SYS 拥有的对象创建触发器难道真的不能对系统表创建触发器?请问各位大虾有没有好的解决方案啊,谢谢了

解决方案 »

  1.   

    ORA-04089 cannot create triggers on objects owned by SYS  
      
    Cause: An attempt was made to create a trigger on an object owned by SYS.  
      
    Action: Do not create triggers on objects owned by SYS.
      

  2.   

    sys是所有数据字典的owner,这决定了他所拥有的对象都直接关系到整个库的安全运行。所以  
    1、不要在sys下建立对象!   
    2、不要手工改动sys拥有的对象!  
      

  3.   

    系统表--存放审计信息的表?
    是你们自己建的吧?
    不要在sys,system用户下建表
    将表移到一般用户下再进行操作
      

  4.   

    提示不是已经说得很清楚了吗
    不能在sys.aud$上创建触发器 
      

  5.   

    你在非sys用户下写的触发器,所以出现这个现象。
    可以在sys用户下写触发器,将需要的信息更新到你新建用户下的数据表内。
      

  6.   

    系统表不能建立触发器!
    在sys用户下写触发器,新建用户下的数据表内。
      

  7.   

    sys的对象是很重要的对象的,所以Oracle禁止一些sys下的操作。干嘛呀用加trigger呀,你直接查询aud$就可以了嘛。
      

  8.   

    我现在需要做的事情就是在审计的时候系统每往aud$表里插入一条信息,我就要同时得到这条记录,并且将其备份到另外一张表去。这好像只有通过触发器才能解决吧?