- 最后登录
- 2014-3-6
- 在线时间
- 36 小时
- 威望
- 0
- 金钱
- 109
- 注册时间
- 2012-6-12
- 阅读权限
- 10
- 帖子
- 45
- 精华
- 0
- 积分
- 0
- UID
- 494
|
1#
发表于 2013-5-10 12:44:20
|
查看: 3274 |
回复: 3
SQL> create user ming identified by ming;
用户已创建。
SQL> grant dba to ming;
授权成功。
SQL> conn ming/ming
已连接。
SQL> create or replace trigger srm_tri_logon_trigger
2 after logon on database
3 begin
4 if(user='jim' and sys_context('USERENV','INSTANCE')<>1) then
5 insert into ming.srm_t_logon_session select * from v$session,(select sysdate from dual) where sid= (select sid from v$mystat where rownum=1);
6 commit;
7 end if;
8 end;
9 /
警告: 创建的触发器带有编译错误。
--注释到insert 语句
SQL> create or replace trigger srm_tri_logon_trigger
2 after logon on database
3 begin
4 if(user='jim' and sys_context('USERENV','INSTANCE')<>1) then
5 --insert into srm_t_logon_session select * from v$session,(select sysdate from dual) where sid in (select distinct sid from v$mystat);
6 commit;
7 end if;
8 end;
9 /
触发器已创建
而当前用户直接在SQLPLUS 下执行insert 语句
SQL> insert into srm_t_logon_session select * from v$session,(select sysdate from dual) where sid in (select distinct sid from v$mystat);
已创建 1 行。
直接在sys 用户下执行:
SQL> create or replace trigger srm_tri_logon_trigger
2 after logon on database
3 begin
4 if(user='jim' and sys_context('USERENV','INSTANCE')<>1) then
5 insert into ming.srm_t_logon_session select * from v$session,(select sysdate from dual) where sid= (select sid from v$mystat where rownum=1);
6 commit;
7 end if;
8 end;
9 /
触发器已创建。
由于登陆触发器以前没有接触过,我一开始以为是权限的问题,只有sys用户可以执行。可是当我注释掉insert 语句时,该触发器可以在一般用户下执行。而在sqlplus 下执行insert 语句也没有问题。所以很疑惑。请帮忙纠正一下我哪里的认识有误,谢谢。
|
|