如何在登录触发器中获得当前会话的id???
1.登录触发器中使用UserEnv('SESSIONID')出错
2.登录触发器中不能使用v$session,v$mystat,(用户甚至有dba权限阿)
3.只有当前用户名是不够的,因为同一个用户可能同时又多个连接。
4.如果采用Dbms_session.UNIQUE_SESSION_ID获得唯一序号,可如何和v$session中的当前会话记录对应起来,获得连接客户端的信息。
其实我的目的是,相为当前回话获得一个唯一标示,和当前连接客户端的信息,以便在以后的操作中使用。
谢谢各位关注 :)
触发器, session, 用户, 权限, 连接
---------------------------
create global temporary table usertype_temp2(SessionID integer,userid integer, usertype integer) on Commit delete Rows ;
--方式一
insert into usertype_temp2 select sid,1,1 from v$mystat where rownum =1;
insert into usertype_temp2 select sid,2,2 from v$mystat where rownum =1;
insert into usertype_temp2 select sid,3,3 from v$mystat where rownum =1;
update usertype_temp2 set sessionid=(select sid from v$mystat where rownum =1)
--方式二 建立触发器
create or replace trigger usertype_temp2_t
before insert on usertype_temp2
for each row
begin
select sid into :new.sessionid from v$mystat where rownum =1;
end;
--如果在建立触发器的时候提示找不到v$mystat 则是权限的问题
insert into usertype_temp2(userid,usertype) values(1,1);
insert into usertype_temp2(userid,usertype) values(2,2);
insert into usertype_temp2(userid,usertype) values(3,4);
--解决方案:
USER01@HUIYI>create or replace procedure t1 is
2 l_sid number;
3 l_serial number;
4 begin
5 select sid,serial# into l_sid,l_serial from sys.v_$session where audsid = userenv('sessionid');
6 dbms_output.put_line(l_sid);
7 end;
8 /
警告: 建立的程序含有編譯錯誤.
USER01@HUIYI>show error
PROCEDURE T1 發生錯誤:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/3 PL/SQL: SQL Statement ignored
5/51 PL/SQL: ORA-00942: 表格或視觀表不存在
SYS@HUIYI>grant select on sys.v_$session to user01;
順利授權.
USER01@HUIYI>create or replace procedure t1 is
2 l_sid number;
3 l_serial number;
4 begin
5 select sid,serial# into l_sid,l_serial from sys.v_$session where audsid = userenv('sessionid');
6 dbms_output.put_line(l_sid);
7 end;
8 /
已建立程序.
USER01@HUIYI>exec t1();
11
PL/SQL 程序順利完成.
分享到:
相关推荐
oracle 的mystat使用方法,非常好用哦!不看后悔哦!
where session_id=(select sid from V$mystat where rownum=1) /(注:owner 列是所锁定对象的所有者) 您可能感兴趣的文章:ORACLE 查询被锁住的对象,并结束其会话的方法解析Oracle数据库中的对象集合schemaORACLE ...
1. /* 得到trace文件路径和名称 */ SELECT d.VALUE || '/' || LOWER (RTRIM (i.INSTANCE... FROM v$mystat m, v$session s, v$process p WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p, (SE
首先再次明确下,数据库因为要同时保证数据的并发性... SQL> select sid from v$mystat where rownum=1; SID ———- 144 SQL> show user USER is "JINGYU" SQL> select * from t1 where id=1 for update; ID N
MyStat302包装 MyStat302Package的目标是...安装您可以使用以下行安装MyStat302Package软件包: install.packages( " MyStat302Package " )例子这是一个基本示例,向您展示如何解决一个常见问题: library( MyStat...
1) 登录时必须删除站点ID中的数字才能以超级管理员的身份进入控制台。 2) 如果第五步时忘记了选择“压缩后立即启动”,则安装好后一切正常,但 是不计数。解决办法是重做第五步。 3) 安放嵌入代码的时候只放了...
阿江酷站访问统计系统 V 2.2 正 式 版 041121 ==================================== <br>感谢您选用阿江统计V2.2,该版本在速度、功能、稳定性和资源占用等方 面都得到了巨大的提升。希望新的版本能...
系统级的环境变量一般在/etc/profile 文件中定义 在 CAMS 系统 与数据库 相关的环境变量就定义在/etc/profile 文件中 如下所示 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/...
1) 登录时必须删除站点ID中的数字才能以超级管理员的身份进入控制台。 2) 如果第五步时忘记了选择“压缩后立即启动”,则安装好后一切正常,但 是不计数。解决办法是重做第五步。 3) 安放嵌入代码的时候只放了...
Webpack:构建webpack项目(来自MyStat的任务)
(如果你的服务器不支持fso,你可以手动更改config.asp中的文件,仅最后一项更改无效,但这不会影响到系统的使用。) 3.在你要统计的页面加入如下代码: 共有7种调用方式:(在服务器上浏览show.asp...
<script src="http://www.smcsj.com/annex/mystat/mystat.asp?style=no"> 关于删除历史的解释,系统会把每个访问的IP都记录下来,但为了系统效率,我们只记录3天内的详细IP 为了方便大家整合到自己的站里,我没有...
<script src="http://www.smcsj.com/annex/mystat/mystat.asp?style=no"> 关于删除历史的解释,系统会把每个访问的IP都记录下来,但为了系统效率,我们只记录3天内的详细IP 为了方便大家整合到自己的站里,我没有...
//////////////////////////////////////// 企业产品发布管理系统使用说明 //////////////////////////////////////// 数据库联接文件: conn.asp; ...你的网址/system/mystat.asp"></script>