Oracle数据库优化的方案和实践
2008-09-08 12:53:38 来源:WEB开发网修改表空间存储参数(采集表空间所用块设置为大块,比如32k一个块;修改ptcfree,pctused,pctincrease等)。
避免使用唯一索引和非空约束。
创建合理的索引。
各模块SQL语句优化,比如使用提示固定索引等。
确认每一条历史数据删除语句已优化和删除方法。
临时表的使用。
6、维护作业计划
表分析(包含确定具体的表的分析方法,分区表分析方法,索引分析方法)。
空间回收维护(包括确定HWM,回收多余分配给表的块,合并数据块碎片等)。
索引维护(包括定期重建索引,索引使用情况监视等)。
历史数据删除检查(检查保存的数据是否符合要求,检查历史数据删除方法是否正确-比如批量删除提交的方法等)。
全库性能分析和问题报告及优化(比如使用statspack进行性能趋势分析,检查有问题的SQL或事务,确定当前系统等待的top 5事件等等)。
表数据keep,default及reclye(比如把一些常用的配置表固定在内存里等)。
数据库参数核查(防止数据库参数被修改,定期对系统配置参数进行比较)。
日志文件分析(定期检查Oracle生成的日志文件,定期备份、删除)。
硬盘空间维护(定期对Oracle 对象使用的空间情况进行监视)。
三、Oracle数据库优化前后比较
1、批量重复的SQL语句执行性能
根据网元数量,各地的执行的完成时间有所区别。
用于数据合并和汇总的Procedure的计算性能
通过statspack的周期性采集数据,我们可以使用以下语句,计算我们想统计的Procedure的执行情况:
SELECT TO_CHAR(sn.snap_time,'yyyy-mm-dd hh24:mi:ss') AS snap_time,s.disk_reads,
s.buffer_gets,s.elapsed_time/1000000 AS elapsedtime
FROM
(SELECT hash_value,sql_text,address,last_snap_id
FROM STATS$SQLTEXT WHERE piece = 0 AND sql_text LIKE '%&sqltext_key%') t,
(SELECT address,hash_value,snap_id,sql_text,disk_reads,executions,
buffer_gets,rows_processed,elapsed_time
FROM STATS$SQL_SUMMARY) s,STATS$SNAPSHOT sn
WHERE s.hash_value = t.hash_value
AND s.address = t.address
AND s.snap_id = t.last_snap_id
AND sn.snap_id = s.snap_id;
比如,我们以perfstat用户执行该SQL,输入“to_comp”,可以观察到数据库里保存的有的to_comp存储过程的执行时间,我们发现,其执行时间,从优化前的几千秒,最后稳定在优化后的几十秒。
注:to_comp是整体调用执行一次所有网元的数据合并和汇总的procedure。
用于小区分析数据的Procedure的计算性能
使用上面的方法,我们一样可以知道,小区分析的procedure执行,从优化前的约几千秒,最后稳定在优化后的几十秒。
批量数据采集入库性能
使用bcp,能从以前约15分钟,减少到约4分钟。
2、一些单次、不常用的操作的语句执行性能
GUI上的性能数据查询,告警数据查询,响应时间都极快,几乎不再出现长时间等待响应的情况。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接