How to use Files in place of Real Disk Devices for ASM

个人测试ASM的好方法。参看以下几个链接。 在Linux操作系统中: How to use Files in place of Real Disk Devices for ASM – (Linux) 在Windows操作系统中: How to use Files in place of Real Disk Devices for ASM – (Windows) 在这份文档中使用到了perl脚本,实际上就是创建一个文件填满0,每次循环写1024*1024(2的20次方)个0,循环100次就是写了100M的文件。 或者 Windows环境下ASM磁盘虚拟工具ASMTOOL 在Solaris操作系统中: How to use Files in place of Real Disk Devices for ASM – (Solaris)

Implementing and Using the PL/SQL Profiler

在公司内部有时候会给其它的同事进行一些内部的培训,这里大部分的同事都在用PL/SQL写程序,因此关于PL/SQL程序的性能调整是很多人关心的话题。 对于一大段PL/SQL程序,如何快速找到这段程序里面最耗费时间的部分在哪里?如何快速地定位改程序的bottleneck?这时候需要dbms_profiler包。 1. 首先需要检查dbms_profiler包有没有安装。如果没有则需要通过sys用户运行$ORACLE_HOME/admin/profload.sql来创建该包。 2. 将该包的执行权限赋予待优化的PL/SQL程序属主。 3. 使用PL/SQL程序属主登录数据库,运行$ORACLE_HOME/rdbms/admin/proftab.sql来创建repository tables,包含PLSQL_PROFILER_RUNS,PLSQL_PROFILER_UNITS,PLSQL_PROFILER_DATA这三张表。 4. 在待优化的PL/SQL程序前后加上运行dbms_profiler包的代码,如下: BEGIN DBMS_PROFILER.START_PROFILER(‘any comment’); …’your pl/sql code’ DBMS_PROFILER.STOP_PROFILER; … END; / 5. 运行该PL/SQL程序,之后检查PLSQL_PROFILER_DATA表内容,从中就可以看到每一行代码的执行次数,每行代码总共的执行时间。 另外从Metalink上Note:243755.1中可以下载PROF.zip,包含的程序可以用来生成直观的profiler结果报告,一个html样式的报告。 From Drop Box 该报告可以列出Top 10最消耗时间的代码,强烈推荐使用。

CBO need more human brains?

从Oracle8中引入的CBO和统计信息收集功能在8i,9i,10g,11g中一直在发展,CBO的设计理想是美好的,但是一直以来也受到用户的质疑,CBO的不够智能,或者说某些时候过于笨,有些时候又过于自作聪明,引发了很多问题。 11g推出之后,Oracle在完善CBO自身功能的同时,又添加了很多允许用户参与的功能,也许言下之意是,CBO的完善还有很长的路要走,但是面对各种现实问题,还是先允许更加聪明的人类用户来参与影响SQL的执行计划吧。 看看新提供的DBMS_STATS.COPY_TABLE_STATS功能,该功能可以改善对于使用range方式来分区的大分区表的统计信息生成方式,这种表往往统计信息更新赶不上数据更新。通过copy statistics可以将一个已经存在的分区统计信息复制到新生成的分区中,该方法基于的理念是每个业务分区的统计信息在数据条数,数据分布,NDV值等等方面都是基本相同的。 再加上之前介绍的SPM功能,也同样是允许用户来决定最终使用哪个执行计划的举措。 数据库管理越来越智能,并不意味着数据库管理员的工作越来越少了。