在日常的运维与优化工作中,经常需要分析某条语句或者某个存储过程执行是不是正常的,存储过程中哪些SQL语句或者循环开销较大。这个时候,一个ORACLE自带的工具-profiler就十分有用了。profiler是一个Oracle自带的存储过程性能分析工具,从很早的版本就存在了,不过可能很多DBA都不知道这个工具的存在,因为这个工具在Oracle官方的手册里并没有提及。老白在十多年前写的《oracle 优化日记》里提到了这个工具,并提供了一个利用这个工具解决《最长的一天》的案例。在那个故事里,用户的系统莫名其妙的很慢,数据库的负载并不高。最后老白怀疑到是不是应用有问题。而应用是一个套装软件,开发商在英国,所有的PL/SQL存储过程都是加密的,现场没法分析代码。于是老白就使用PROFILER把耗时最多的代码行找到,通过和英国那边的开发团队沟通,开发团队很快定位了问题,从而帮助客户解决了问题。Profiler的使用十分简单,在$ORACLE_HOME/rdbms/admin下面有几个Profiler相关的脚本:
declare err number; begin err:=DBMS_PROFILER.START_PR |