误解:优化数据库总会得到一个更好的系统
事实:优化数据库可以使数据库的性能更好,但是如果没有没有对应用程序、I/O子系统和操作系统进行相应优化,用户将不
会得到数据库优化的任何好处。提高系统性能需要一个系统的整体的方法,而不仅仅是给Oracle系统全局区增加更多的内存。
过多增加共享池的尺寸,有可能出现分析问题。Oracle会遇到管理过分大的与共享池有关的内存段的困难
可靠的优化方法包含以下过程:
基准数据
建立性能指标
所做更改的组织和跟踪技术
更改的效果评估
性能与建立目标的比较
重复直到满足目标
要有明确的终点
Oracle性能优化的基本方法
二叉优化法--->从操作系统(第一个分叉)和Oracle(第二个分叉)开始优化
1、建立合理的性能优化目标,与顾客一起设立优化目标时,应采纳这里的忠告。不能确切的表达业务时,用户需要帮助。采用第三方的程序来说服客户
2、测量记录当前性能,在不同的时间点采样,时间不要过长
3、确定Oracle性能瓶颈
4、把等待事件记入跟踪文件
5、确定当前OS瓶颈
6、对所需成分进行优化(应用程序、数据库、I/O、OS、争用)
7、跟踪并实施更改控制过程
8、测量记录当前性能
9、重复3到7,直到满足优化目标
一、设立合理的性能优化目标
目标是当前性能和所需性能的陈述形式的语句
________花费了________(时/分/秒),但要求它在______(时/分/44秒)内执行
________使用了________(资源量),但它不能使用超过__________。
二、测量并记录当前性能
在希望达到目标之前,要知道距离目标有多远
alter system set timed_statistics = true
执行
rdbms/admin/utlbstat.sql
rdbms/admin/utlestat.sql
rdbms/admin/spcreate.sql
上面的脚本创建了Perfstat用户
获取性能数据 execute statspack.snap
也可以执行rdbms/admin/spauto.sql用来创建一个DBMS_JOB
procedure SNAP
(
// 0用于实例统计数据
// 5用于关于SQL语句的信息
// 10用于确定子闩锁信息及某些初步研究
i_snap_level in number default null
// 提供会话级信息获取,默认不提供
,i_session_id in number default null
// 允许为一个给定快照起名
,i_ucomment in varchar2 default null
,i_num_sql in number default null
// 所有为确定高资源SQL语句所设定的阀值
,i_executions_th in number default null
,i_parse_calls_th in number default null
,i_disk_reads_th in number default null
,i_buffer_gets_th in number default null
,i_sharable_mem_th in number default null
,i_version_count_th in number default null
,i_all_init in varchar2 default null
,i_pin_statspack in varchar2 default null
,i_modify_parameter in varchar2 default 'FALSE'
)
SNAP的所有参数都存储于一个表中,可执行statspack.MODIFY_STATSPACK_PARAMETER
性能快照的报表通过spreport.sql生成
可以通过查看文档rdbms/admin/spdoc.txt了解更详细信息
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/518171/viewspace-1034978/ ,如需转载,请注明出处,否则将追究法律责任。