动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库学院 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.带你快速了解wait等待事件及其处.
.Oracle数据库中单行字符串函数简.
.Oracle PL/SQL语言基础(3).
.教你怎么样卸载Oracle 9i.
.Oracle数据库中按用户名重建索引.
.PL/SQL中调用Java源对象产生随机.
.如何将 Oracle 数据导出到 Excel.
._disable_logging对于性能的影响.
.Oracle FAQ 整理.
.Oracle数据库中临时表的深入研究.
.Oracle临时表 使用补充.
.在Oracle中找出重复的纪录的方法.
.Oracle数据库中如何改善表空间的.
.SQL*Report 1.1 Error Messages .
.RedHatLinux AS3 U2 安装 oracle.
.手把手教你创建RMAN CATAGORY.
.XFree86 4.x教程.
.SQLSERVER,ORACLE,MYSQL高效分页.
.Uedit32编辑器与SQLPlus结合使用.
.互连环境下实现ORACLE数据库分布.

在PL/SQL中使DBMS_APPLICATION_INFO

文章类别:Oracle教程 | 发表日期:2008-2-9 |



  DBMS_APPLICATION_INFO 可以设置SESSION的MODULE,ACTION,CLIENT INFO等状态信息,对应着v$session表中的3个字段,方便了SQL TRACE和
  
  跟踪定位出问题的程序。
  
  可以在PL/SQL块,事务,批处理程序中调用该包,建议在存储过程中调用。假如直接将DBMS_APPLICATION_INFO编码到代码中,会引起不必要的
  
  network trip.
  
  DBMS_APPLICATION_INFO 可以设置SESSION的MODULE,ACTION,CLIENT INFO等状态信息,对应着v$session表中的3个字段,方便了SQL TRACE和
  
  跟踪定位出问题的程序。
  
  可以在PL/SQL块,事务,批处理程序中调用该包,建议在存储过程中调用。假如直接将DBMS_APPLICATION_INFO编码到代码中,会引起不必要的
  
  network trip.
  
  多中方式获取SESSION信息
  
  SQL> select username,program,module,action,client_info from v$session where sid=
  (select sid from v$mystat where rownum=1);
  
  SQL> select userenv('client_info') from dual;
  
  也会在跟踪文件中显示SESSION的MODULE和ACTION信息
  *** 2004-11-19 15:30:34.958
  *** ACTION NAME:(get count from t) 2004-11-19 15:30:34.928
  *** MODULE NAME:(Test) 2004-11-19 15:30:34.928
  *** SERVICE NAME:(SYS$USERS) 2004-11-19 15:30:34.928
  *** SESSION ID:(155.23) 2004-11-19 15:30:34.908
  
  同时在v$sqlarea 也记录了执行SQL时候的MODULE,ACTION信息
  
  SQL> select SQL_TEXT from v$sqlarea where MODULE='Test';
  
  SQL_TEXT
  --------------------------------------------------------------------------------
  
  select count(*) from t
  SELECT p1.value''p2.value'_ora_'p.spid filename   FROM     v$proc
  
  ess p,     v$session s,     v$parameter p1,     v$parameter p2   W
  
  HERE p1.name = 'user_dump_dest'   AND p2.name = 'db_name'   AND p.addr = s.p
  
  addr   AND s.audsid = USERENV ('SESSIONID')
  
  alter session set sql_trace=true
  alter session set sql_trace=false
  BEGIN dbms_application_info.set_client_info('Testget count from t'); END;
  
  下面是TOM使用set_client_info优化SQL函数调用的程序
  
  ops$tkyte@ORA920> create or replace function myinstr( s1 in varchar2, s2 in
  varchar,
  2    n1 in number default null, n2 in number default null) return number
  3 is
  4 begin
  5     dbms_application_info.set_client_info(userenv('client_info')+1);
  6     return instr(s1,s2,n1,n2);
  7 end;
  8 /
  
  Function created.
  
  ops$tkyte@ORA920> drop table t;
  Table dropped.
  
  ops$tkyte@ORA920> create table t ( x varchar2(15) );
  Table created.
  
  ops$tkyte@ORA920> insert into t values ( '1.1.1.1' );
  1 row created.
  
  ops$tkyte@ORA920> exec dbms_application_info.set_client_info(0);
  PL/SQL procedure sUCcessfully completed.
  
  ops$tkyte@ORA920> select substr(x, 1, d1-1) x1,
  2     substr(x, d1+1, d2-d1-1) x2,
  3     substr(x, d2+1, d3-d2-1) x3,
  4     substr(x, d3+1) x4
  5 from
  6   (select x,
  7     myinstr(x,'.',1,1) d1,
  8     myinstr(x,'.',1,2) d2,
  9     myinstr(x,'.',1,3) d3
  10   from t);
  
  X1       X2       X3       X4
  --------------- --------------- --------------- ---------------
  1        1        1        1
  
  ops$tkyte@ORA920> select userenv('client_info') from dual;
  
  USERENV('CLIENT_INFO')
  ----------------------------------------------------------------
  8
  
  ops$tkyte@ORA920>
  ops$tkyte@ORA920> exec dbms_application_info.set_client_info(0);
  
  PL/SQL procedure successfully completed.
  
  ops$tkyte@ORA920> select x,
  2   substr( x, 1, myinstr(x,'.')-1 ) x1,
  3   substr( x, myinstr(x,'.')+1, myinstr(x,'.',1,2)-myinstr(x,'.')-1 ) x2,
  4   substr( x, myinstr(x,'.',1,2)+1, myinstr(x,'.',1,3)-myinstr(x,'.',1,2)-1
  ) x3,
  5   substr( x, myinstr(x,'.',1,3)+1 ) x4
  6  from t
  7 /
  
  X        X1       X2       X3       X4
  --------------- --------------- --------------- --------------- ---------------
  1.1.1.1                     1        1
  
  ops$tkyte@ORA920> select userenv('client_info') from dual;
  
  USERENV('CLIENT_INFO')
  ----------------------------------------------------------------
  6
  
  set_client_info对SESSION来说 是很好的全局变量。


上一篇:PL/SQL中使用or展开进行sql调整 人气:248
下一篇:避免在 PL/SQL 中使用嵌套游标查询 人气:370
点击此处浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号