日期:2014-05-16  浏览次数:20513 次

Oracle9i中的性能优化方法和工具学习(二)

Oracle9i数据库存性能分析和优化工具

一.数据库性能优化工具
??? Oracle9i分析和优化数据库性能的工具包括动态故障排除、统计视图工具和企业管理器包。
??? 这几个工具用来收集性能统计信息和事件(如等待事件)的诊断记录,你可以使用这些事件来发现和诊断性能问题。
??? Oracle视图提供了故障排除和性能优化信息。这些视图包括:
??? 1.动态性能视图
???????? Oracle将系统统计信息和问题排除信息记录在动态性能视图中。例如V$SYSTAT视图中包括系统统计信息。
??? 2.数据字典视图
?????????Oracle将数据存储统计信息记录在数据字典视图中,如DBA_CLUSTERS视图。这些视图使你能够监视并优化数据存储,以提高性能。

????

??? 可以使用下面的统计信息收集工具来获取更多关于数据库性能的信息
?????1.BSTAT/ESTAT
????????????BSTAT/ESTAT工具由utlbstat.sql和utlestat.sql脚本组成,它用来在单个指定的时期内收集性能统计信息并根据这些统计信息生成报告。

???????????
?????2.STATSPACK
??????????? STATSPACK工具是BSTAT/ESTAT工具的增强,它允许你对不同时间段上的统计信息进行比较,并耗费资源的SQL指令的性能进行分析。

???????????
?????Oracle企业管理器(OEM)包括诊断软件包和优化软件包。这两个软件包包含GUI工具,如负责性能管理和优化的性能管理器。

?????
???? Oracle提供了等待事件的实时记录,无论什么时候,只有有线程被强制等待资源,等待事件就会发生。这些记录在确定资源瓶颈时非常有用。


??? Oracle也在警报日志与跟踪日志中记录所有的错误。这使作得你可以检测和诊断数据库的问题。
??? 数据库管理员和软件开发人员可以编写定制的脚本,这些脚本使用ORACLE现有的工具来收集特定的统计信息并制定性能优化操作计划。
??? 例如:脚本可能使用Oracle企业管理器(Oracle Enterprise Manager,OEM)事件服务来检测性能问题,以及在出现问题时触发OEM作业服务来运行优化脚本。

?

二.使用数据字典视图辅助优化
???? DBMS_STATS软件包是一个PL/SQL过程的集合,优化者使用它来收集和存储统计信息。
???? DBMS_STATS将这些统计信息存储在数据字典中,可以使用它们来分析存储性能。
???? DBMS_STATS软件包可以收集索引统计信息、数据表统计信息、柱状图统计信息、模式统计信息。
???? 可以通过运行下面的过程来收集DBMS_STATS各项统计数据:
???? 1.GATHER_TABLE_STATS
???? 2.GATHER_INDEX_STATS
???? 3.GATHER_SYSTEM_STATS
???? 4.GATHER_SCHEMA_STATS
???? 5.GATHER_DATABASE_STATS
???? 当运行DBMS_STATS过程的时候,这些过程将当前统计信息放入下面的视图中:
???? 1.DBA_CLUSTERS:DBA_CLUSTERS视图包含每一个簇,以及块和扩展层的数据存储信息。
???? 2.DBA_TABLES和DBA_TAB_COLUMNS:DBA_TABLES视图和DBA_TAB_COLUMNS视图提供表和列的存储和所有权信息,包含诸如唯一和数据类型的信息。
???? 3.DBA_INDEXS和INDEX_STATS:DBA_INDEXS视图描述了每个索引是如何存储以及哪些表与之关联。INDEX_STATS视图包含了索引的结构、用法和性能的详细信息。
???? 4.INDEX_HISTOGRAM和DBA_TAB_HISTOGRAMS:INDEX_HISTOGRAM视图和DBA_TAB_HISTOGRAMS视图包含了各个已编入索引和未编入索引的列的数据分布统计信息。
???? DBMS_STATS软件包是一个PL/SQL过程的集合,优化者使用它来收集和存储统计信息。
???? 可以使用ANALYZE命令代替DBMS_STATS包来收集系统统计信息。二者区别在于,ANALYZE命令收集象表和索引的结构完整性这样的数据,而DBMS_STATS软件包则不是。但该命令受到较多的限制,且具有一定的不精确性,因此不应该使用它来收集基于代价的最优化统计。

?

三.使用动态性能视图
???? 动态性能视图包含有关当前系统性能的统计信息。当实例启动时,ORACLE载入这些视图;当该实例关闭时,Oracle将清除这些视图。在数据库运行时,Oracle对这些视图进行实时更新。
???? 动态性能视图是SYS用户所拥有的V$视图。这些视图是建立在X$表上的,而X$表是动态更新的。
???? 尽管可以直接查询作为基础的X$表以访问那些出现在V$视图中的相同信息。但是,X$表的名称和列的名称一般为缩略名且较为含混,所使用视图较为容易。
???? 由于动态性能视图是建立在实例的基础上的,因此只要实例启动,就可以随时访问它们,即使数据库是关闭的。
???? 只有当你将TIMED_STATISTICS的初始化参数值设为TRUE时,在动态性能视图中的统计信息才会把实时信息加入。

???? 动态信息视图提供了与以下相关的信息:
???? 1.实例和数据库性能:V$INSTANCE、$DATABASE、V$PARAMETER、V$PROCESS、V$WAITSTAT以及V$SYSTEM_EVENT视图包括有关实例和数据库性能的数据。
???? 2.内存使用:V$BUFFER_POOL_STATISTICS、V$DB_OBJECT_CACHE、V$LIBRARY_CACHE、V$ROWCACHE、V$SYSSTAT以及V$SGASTAT视图包括有关内存使用的数据。
???? 3.磁盘性能:V$DATAFILE、V$FILESTAT、V$LOG、V$LOG_HISTORY、V$DBFILE、V$TEMPFILE以及V$TEMPSTAT视图包括有关磁盘性能的数据。
???? 4.资源争用:V$LOCK、V$ROLLSTAT、V$WAITSTAT、V$LATCH以及V$UNDOSTAT视图包括有关资源争用的数据。
???? 5.会话性能:V$SESSION、V$SESSTAT、V$PROCESS、V$LOCK、V$OPEN_CURSOR、V$TRANSACTION、V$SESSION_EVENT以及V$SESSION_WAIT视图包括有关会话性能的数据。

?V$STATNAME视图列出了所有可用的统计信息。它显示了这些变量统计信息的名称编号,以及标明每个统计信息所监视的活动或进程的类型。

????
?????V$SYSSTAT视图列出了所有可用的统计信息以及它们的当前值。

????
???? V$STATNAME和V$SYSSTAT视图显示了每个统计信息属于哪个统计信息类。共有八个统计信息类,每个统计信息类涉及到优化的一个面:
??? 1.Class1:Class1统计信息涉及常规实例活动。
??? 2.Class2:Class2统计信息涉及恢复日志缓冲活动。
??? 3.Class4:Class4统计信息涉及堵塞。
??? 4.Class8:Class4统计信息涉及数据库缓冲存储区活动。
??? 5.Class16:Class4统计信息涉及操作系统活动。
??? 6.Class32:Class4统计信息涉及并行性。
??? 7.Class64:Class4统计信息涉及表的访问。
??? 8.Class128:Class4统计信息