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