Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2796915
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2011-03-22 02:22:06

  ORACLE之深入
 TANEL写了一些关于如何研究ORACLE的方法和方向,我把这个文章翻了出来,让大家共享一下;
                                             
进行成功的研究几个要素:1,持续不断的兴趣.与工作相关最好了,写下你所想到的东西,探计事情是怎么工作的;2,创造性,虽然ORACLE提供了很多关于DB内部的东西,但是对于大多数人来说DB还是一个黑盒,所以这里的创新需要联合各种各样的技术.3,时间.测试和实验需要大量的时间.
一般的领域:1,DATA DICTIONARY和V$,如V$SQL,V$SQLAREA,V$SYSSTAT,V$SESSSTAT,V$WAITSTAT,V$SESSION_WAIT_HISTORY;2,10046(SQL_TRACE)包含了BIND和WAITS.3,各种各样的MEMORY DEUMP和BLOCK DUMP;4,AWR,ADDM,ASH
跟踪ENQUEUE.1,当解决ENQUEUE CONTENTIONS很难找出是谁产生了高的ENQUEUE使用;2,10046只是显示了在ENQUEUE上的等待;3,X$KSQST,kernel service enqueue statistics,但仅仅是系统级别上的.
信息的来源:1,官方文档;2,GOOGLE;3,ORAUS.MSG$ORACLE_HOME/rdbms/admin/*.sql;4,X$KSPPI,X$KSPPFSV'5,oradebug help;

挂起ORACLE.1,挂起一个单独的ORACLE进程,如oradebug supsend,KILL的SIGSTP或SIGSTOP信号;2,挂起整个实例,oradebug ffbegin (ffresumeinst)
KILL的SIGSTP或SIGSTOP信号给所有的进程;3,挂起RAC,oradebug setinst all,oradebug ffbegin;

watichpoint用来帮助LOG任意一个内存区域的改变,语法 oradebug watch   格式相当难读懂
addr2line -e <$ORACLE_HOME> -f 地址

oradebug call

使用OS的调试器,如LINUX GDB,使用ATTACH 附加到一个进程,可以使用CALL来进程函数调用,
通过alter session set events '10032 debug forever' 来跟踪排序内存的MAP;
 
阅读(1826) | 评论(0) | 转发(0) |
0

上一篇:使用DBMS_ROWD得到块信息

下一篇:Enqueue简述

给主人留下些什么吧!~~