动态网站制作指南 [  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,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.Oracle数据库10g产品特性简介.
.有关Oracle数据库中并行处理技术.
.更改Oracle数据库表的表空间.
.UNIX 和 WINDOWS2000 上的 ORACL.
.如何使用pipeline function获得实.
.如何查看用户表所占空间的大小.
.OO40编程教程.
.详细讲解Oracle表分区的相关概念.
.基于 Linux 和 MiniGUI 的嵌入式.
.分区的情况下,对insert速度影响.
.Oracle 9I安装使用笔记.
.快速导出导入expdp/impdp的停止与.
.一条SQL语句.
.Oracle数据库中按用户名重建索引.
.Oracle不同版本的客户端和服务端.
.OEM联机自动热备份全攻略(2).
.vim 使用技巧.
.实例讲解Oracle里抽取随机数的多.
.Oracle主要的配置文件解释.
.讲解Oracle中JOB与存储过程的接合.

分析诊断进程跟踪文件工具ASS.AWK(2)

发表日期:2008-2-9 |



  # Function : add_resource
  # ~~~~~~~~~~~~~~~~~~~~~~~
  function add_resource (pblkres, newpid) {
  if (index(pblkres, newpid))
  return pblkres;
  else
  return pblkres " " newpid;
  }
  # Function : sameseq
  # ~~~~~~~~~~~~~~~~~~
  function sameseq(ev1, ev2, seq1, seq2) {
  #printf("sameseq: Comparing :\n");
  #printf("Ev=(%s) seq=(%s)\n", ev1, seq1);
  #printf("against Ev=(%s) seq=(%s)\n", ev2, seq2);
  if (!seq1) return 0;
  if (seq1 != seq2) return 0;
  if (ev1 != ev2) return 0;
  
  if (ev1 ~ "'rdbms ipc message'"
  ev1 ~ "'smon timer'"    
  ev1 ~ "'pmon timer'")
  return 0;
  return 1;
  }
  # Function : min
  # ~~~~~~~~~~~~~~
  function min(one, two) {
  return (one }
  # Function: procevent
  # ~~~~~~~~~~~~~~~~~~~
  function procevent (str) {
  if (!eventdetail) return str;
  realev = str;
  sub("^.* for ", "", str);
  sub("holding ", "", str);
  sub("acquiring ", "", str);
  #printf("DBG> String = '%s'\n", str);
  if (str == "'db file sequential read'"str == "'db file scattered read'" 
  str == "'db file parallel write'" str == "'db file sequential write'"
  str == "'buffer busy waits'" str == "'free buffer waits'"
  str == "'buffer deadlock'" str == "'parallel query qref latch'")
  {
  getline; sub("
  ",""); gsub("="," ");
  realev = realev " (" $2 $4 $6 ")";
  }
  else if (str == "'pipe get'")
  {
  getline; sub("
  ","");
  realev = realev " (" $2 ")";
  }
  else if (str == "'parallel query dequeue wait'")
  {
  getline; sub("
  ","");
  gsub("="," ");
  realev = realev " (" $2 $4 $6 ")";
  print_pqo = 1;
  }
  else if (str == "'enqueue'" "'DFS lock acquisition'")
  {
  getline; sub("
  ",""); gsub("="," ");
  # For now let's not do anything too clever !
  if (substr($2, 1, 4) == "5351")   # SQ - sequence
  realev = realev " (SQ(sequence) id=" $4 ")";
  else if (substr($2, 1, 4) == "5356") # SV - sequence
  realev = realev " (SV(sequence) id=" $4 ")";
  ############################################
  ### The following tends to crowd the output.
  ############################################
  #else
  # realev = realev " (" $2 $4 $6 ")";
  }
  
  return realev;
  }
  
  # Function: pq_details
  # ~~~~~~~~~~~~~~~~~~~~
  function pq_details(rversion)
  {
  split(rversion, _ver, ".");
  printf("\nAdditional Note:\n~~~~~~~~~~~~~~~~\n");
  printf(" A 'parallel query dequeue' wait event has been encountered. The\n");
  printf("arguments to this wait event are described below :\n\n");
  
  if (_ver[2] < 2)
  {
  printf(" Parameter 1 - Process Queue to Dequeue\n");
  }
  else
  {
  # Reasons can be seen in the fixed table X$KXFPSDS.
  printf(" Parameter 1 - Reason for Dequeue. One of (Based upon 7.2.x) :\n");
  printf(" 0x01 - QC waiting for reply from Slaves for Parallel Recovery\n");
  printf(" 0x02 - Slave Dequeueing for Parallel Recovery\n");
  printf(" 0x03 - Waiting for the Join Group Message from new KXFP client\n");
  printf(" 0x04 - QC dequeueing from Slaves after starting a Server Group\n");
  printf(" 0x05 - Dequeueing a credit only\n");
  printf(" 0x06 - Dequeueing to free up a NULL buffer\n");
  printf(" 0x07 - Dequeueing to get the credit so that we can enqueue\n");
  printf(" 0x08 - Testing for dequeue\n");
  printf(" 0x09 - Slave is waiting to dequeue a message fragment from QC\n");
  printf(" 0x0a - QC waiting for Slaves to parse SQL and return OK\n");
  printf(" 0x0b - QC waiting to dequeue (execution reply) msg from slave\n");
  printf(" 0x0c - QC waiting to dequeue (execution) msg from slave\n");
  printf(" 0x0d - We are dequeueing a message (range partitioned)\n");
  printf(" 0x0e - We are dequeueing samples (consumer) from the QC\n");
  printf(" 0x0f - We are dequeueing a message (ordered)\n");
  printf(" 0x10 - Range TQ prodUCer and are waiting to dequeue\n");
  printf(" 0x11 - Consumer waiting to dequeue prior to closing TQ\n");
  }
  
  printf(" Parameter 2 - Sleep Time/Sender Id\n");
  printf("  Time to sleep in 1/100ths of a second\n");
  printf("  If sleeptime greater than 0x10000000, the lower sixteen bits\n");
  printf("  indicate the slave number on the remote instance indicated by\n");
  printf("  the higher sixteen bits of the first 32 bits.\n");
  
  printf(" Parameter 3 - Number of passes through the dequeueing code\n\n");
  printf(" (This information assumes the trace file has a version number in the header)\n");
  return 0;
  }
  
  # Function: pq_qc2slave
  # ~~~~~~~~~~~~~~~~~~~~~
  #
  # Note: If the following line is added in then the awk script causes awk to
  #    CORE dump under HP and AIX. The line is designed to make variables have
  #    local scope but unfortunately it cannot be used here.
  #function pq_qc2slave(state_no    ,_tmp,_temp,_qcarr,_i,_j,_k,_qc,_slaveid)
  function pq_qc2slave(state_no)
  {
  if (!
(_qc = split(qclist[state_no], _qcarr, " ")))
  return;
  
  printf("\nQuery Co-Ordinator to Query Slave Mapping\n");
  printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  
  ## TODO: Add a Receiving/Sending message at end of line to denote what we are
  ##    up to.
  # o Make use of PS enqueues (PS-instance-slave) (Output them in QC dump ?)
  for (_i=1; _i<=_qc; _i++)
  {
  printf("QC=%5s [Count=%s]\n", _qcarr[_i], qc_cnt[state_no, _qcarr[_i]]-1);
  for (_j=0; _j   {
  split(pqenq[_qcarr[_i], _j], _pqtmp, "-");
  printf("%10s Communicates with Slave %d (hex) on instance %d (%s)\n", " ",
  _pqtmp[3], _pqtmp[2], pqenq[_qcarr[_i], _j]);
  }
  
  printf("%5s %8s %3s %8s %11s %11s %5s %7s %8s %4s\n",
  "Slave", "Info", "Msg", "State", "From", "To",
  "Type", "Status", "Mode","Err");
  for (_j=qc_cnt[state_no, _qcarr[_i]]-1; _j>0; _j--)
  {
  _temp = qc[state_no, _qcarr[_i], _j];
  _slaveid = slave[state_no, _temp];
  #printf("DBG: Slaveid = slave[sstate=%d, qref=%s]\n", state_no, _temp);
  _printed = 0;
  
  for (_k=0; _k<2; _k++)
  {
  _msg = pqdetail[state_no, _slaveid, _k];
  if (!_msg) continue;
  
  split(_msg, _tmp, " ");
  
  printf("%5s %8s %3d %8s %11s %11s %5s %7s %8s %4s\n",
  _printed?" ":_slaveid, pqenq[_slaveid, 0], _k, _tmp[1],
  slave[state_no,_tmp[2]]?slave[state_no, _tmp[2]]:_tmp[2],
  slave[state_no,_tmp[3]]?slave[state_no, _tmp[3]]:_tmp[3],
  _tmp[4], _tmp[5], _tmp[6], _tmp[7]);
  #printf("DBG: From = slave[sstate=%d, qref=%s]\n", state_no, _tmp[2]);
  #printf("DBG: To  = slave[sstate=%d, qref=%s]\n", state_no, _tmp[3]);
  _printed = 1;
  }
  }
  }
  
  printf("%*s------------------------\n", 25, " ");
  printf("STATUS Key:\n");
  printf(" DEQ = buffer has been dequeued\n");
  printf(" EML = buffer on emergency message list\n");
  printf(" ENQ = buffer has been enqueued\n");
  printf(" FLST= buffer is on SGA freelist\n");
  printf(" FRE = buffer is free (unused)\n");
  printf(" GEB = buffer has been gotten for enqueuing\n");
  printf(" GDB = dequeued buffer has been gotten \n");
  printf(" INV = buffer is invalid (non-existent)\n");
  printf(" QUE = buffer on queue message list\n");
  printf(" RCV = buffer has been received \n");
  printf(" NOFL= not on freelist (just removed)\n");
  
  printf("%*s------------------------\n", 30, " ");
  #          KXFPMTYINV 0 - Invalid message (new buffer).     [INV]
  #          KXFPMTYNUL 1 - Null message, used to send credit.  [NUL]
  #          KXFPMTYJOI 2 - Join group, from QC to slaves.    [JOI]
  #          KXFPMTYERR 3 - Exiting group from slave to QC.    [ERR]
  #          KXFPMTYRQS 4 - Request for statistics, QC to slaves. [RQS]
  #          KXFPMTYSTA 5 - Statistics update,
slaves to QC.   [STA]
  #          KXFPMTYDTA 6 - User data, stuff kxfp doesn't look at.[DTA]
  #          KXFPMTYJVR 7 - Slave to QC, ack and version number.
  #     KXFPHSTRE : 0x01 - Stream mode, return credit immediately.  [STRE]
  #     KXFPHDIAL : 0x02 - Dialog mode, eXPect a reply message.    [DIAL]
  #     KXFPHNPNG : 0x04 - No pings, error if next message pings.   [NPNG]
  #     KXFPMHPRI : 0x08 - Priority (JOInERRorEXIt) message.     [PRI]
  #     KXFPMHSTP : 0x10 - Stream ping message. @@           [STP]
  #     KXFPMHNDS : 0x20 - Non-default sized buffer.          [NDS]
  #     KXFPMHCLR : 0x40 - Sent from a clear qref.           [CLR]
  #     KXFPMHNID : 0x80 - No implicit dequeue.            [NID]
  }
上一篇:定时执行存储过程对库表及索引进行分析 人气:742
下一篇:分析诊断进程跟踪文件工具ASS.AWK(3) 人气:486
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-25 WikyBlog v1.7.0.1 多国语言版
2008-7-25 乐彼网上开店系统(56770 Eshop)
2008-7-25 赛特网站管理系统sitecms v3.6.0
2008-7-25 Modoer多功能点评系统 v1.0.1 Bu
2008-7-25 Shangducms Teamsuit! v1.1.0 开
2008-7-25 幻影动漫网视频系统(Ppdong) v1.
2008-7-25 acteecompany企业网站建设系统 v
2008-7-25 恒浪整合管理系统 ims v4.1 ACCE
2008-7-25 艺术图库系统 v1.0 beta
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号