国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

在PL/SQL中使DBMS_APPLICATION_INFO

2024-07-21 02:34:38
字體:
來源:轉載
供稿:網友

  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來說 是很好的全局變量。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰兴市| 吐鲁番市| 大悟县| 金门县| 白玉县| 多伦县| 莒南县| 八宿县| 越西县| 商洛市| 宁安市| 镶黄旗| 海阳市| 精河县| 宁城县| 夏津县| 阳春市| 永靖县| 鄂伦春自治旗| 肇庆市| 鹿泉市| 赣榆县| 龙州县| 清镇市| 武汉市| 霍州市| 财经| 广水市| 珲春市| 彩票| 红桥区| 山东省| 泽普县| 西青区| 宝清县| 齐齐哈尔市| 濉溪县| 昭通市| 宁化县| 塔城市| 池州市|