create or replace trigger TR_****
  after logon on database
........    这个触发器总是有问题,单独执行里面的语句是可以达到效果的,但此触发器不能用,而且,其他用户登录不进去了,报错:触发器错误。   系统级的触发器应该如何做呢?

解决方案 »

  1.   

    如果登录不进去,可以设置数据库的初始化参数_system_trig_enabled=FALSE
    然后,重新启动Oralce
      

  2.   

    关于after logon on database举个例子:
    Create table Log_table(
    Log_usr varchar2(30);
    Database_name varchar2(30);
    Event_name varchar2(30);
    Log_time Date
    );
    /用户登录时:
    Create or replace trigger user_logon
    AFTER LOGON ON DATABASE
    BEGIN
        INSERT INTO LOG_TABLE(Log_usr, database_name, event_name, log_time)
          values(sys.login_user, 
                 sys.database_name,
                 sys.sysevent,
                 sysdate);
    END;
    /
    用户退出时时:
    Create or replace trigger user_logon
    BEFORE LOGOFF ON DATABASE
    BEGIN
        INSERT INTO LOG_TABLE(Log_usr, database_name, event_name, log_time)
          values(sys.login_user, 
                 sys.database_name,
                 sys.sysevent,
                 sysdate);
    END;
    /