我的执行账号 有dba权限啊,执行 

解决方案 »

  1.   

    我的账号执行insert语句是可以的:
    SQL>  INSERT INTO  trig_sql
      2          select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
      3                 s.MACHINE, s.TERMINAL, s.PROGRAM,
      4                 '  ',
      5                 'INSERT on plas.aaa_test',
      6                sys_context('userenv','ip_address')
      7            from v$sql q, v$session s
      8           where s.audsid=(select userenv('SESSIONID') from dual)
      9             and s.prev_sql_addr=q.address
     10             AND s.PREV_HASH_VALUE = q.hash_value
     11             and rownum<2;
    1 row insertedSQL> 
      

  2.   

    目测有两点问题,一、存储过程里面权限需要显式授权;二、v$sql和v$session是别名,不能直接授权。
    cmd;
    sqlplus/nolog;
    conn / as sysdba;
    grant select  on v_$sql to xxx;               /*xxx要换成你当前登录用户,意思就是把该表查询权限授权给当前用户*/
    grant select  on v_$session to xxx;     /*xxx要换成你当前登录用户,意思就是把该表查询权限授权给当前用户*/
    这样再执行应该就没错了。