ITPub博客

首页 > 数据库 > Oracle > 如何做数据库优化

如何做数据库优化

原创 Oracle 作者:531968912 时间:2016-12-30 21:42:09 0 删除 编辑
Oracle能优化的地方很多。抛开其他因素,单从DBA的角度来说,个人觉得可以分为以下几个方面进行优化,从各个层面进行优化,进而达到最佳效果。


操作系统内核参数优化
 以Linux平台为例,下面的参数设置的大小,
 kernel.shmall =
 kernel.shmmax =
 kernel.shmmni =
 hugepage是否启用
 Solaris中DISM的设置
 Hp-Ux异步IO的设置
 AIX VMM(Virtual Memory Manager)的设置

数据库架构上的优化
  A.通过安装规范(Grid Infrastructure, Database, Dataguard),可以减少很多误操作,方便管理归档、逻辑备份、物理备份等,进而提高工作效率,也可以减少故障率
  B.RAID级别的设置,RAID组的规划,存储Cache的设置,ASM磁盘组的磁盘的大小,LUN的划分等
  C.表空间大小、表空间多少、LOB存储
  D.表是否分区、是否采用压缩、是否有合适的索引、合适的pctfree(减少行连接和行迁移,也可以减少cache buffers chains)、合适的storage减少表碎片
  E.逻辑备份的规划
  F.物理备份的规划
  G.操作系统、数据库监控的规划
一个好的、长期的规划,可以保证数据库运行平稳,方便管理,以及后续的升级、迁移都不是问题

数据库层面最优
 A. 通过分析AWR,我们可以手动指定各个组件的大小
     Oracle推出了AMM,ASMM等SGA自动化管理,但是这些自动化当然也会带来一定的弊端,比如内部资源协调等,这些都需要latch,也会带来CPU的争用
    db_cache_advice参数相关的latch
    simulator lru latch,simulator hash latch
 
    _library_cache_advice参数相关的latch
    shared pool simulator    
    通过设置_library_cache_advice为false,可以关闭shared pool的建议。使用statistics_level=basic也可以关闭,
    但是不建议调节statistics_level,这也会关闭其他信息的收集
 B. 一些新功能是否启用等
 C. Cursor相关参数
 D. Optimizer相关参数
 E. IO相关参数
客户端层面优化
  A.客户端可能使用的有.NET,Java开发的程序比较多,可以启用连接池,还可以启用statement cache并设置大小,提高软解析的次数
  B.根据情况,还可以适当调整SDU,SEND_BUF_SIZE,RECV_BUF_SIZE
最后一步sql优化
  SQL优化是重中之重,也是最难的一部分,尤其是SQL语句的改写,涉及到业务逻辑。常见的方法
  A.使用合适的统计信息收集的方式
  B.设置表、索引或列的信息
  C.使用profile
  D.通过Hint
  E.使用DBMS_SQLDIAG
  F.使用DBMS_SPM
  G.创建合理的索引
  H.调整业务逻辑,减少执行频率
  I.使用临时表或视图
  J.改写SQL

常用的工具

AWR, ASH, ADDM and Sql Tuning Advisor,SQL Access Advisor,SQLT,SQLHC,ASHV,EM,Grid Control,Cloud Control


摘自:
http://www.ohsdba.cn/index.php?g=Home&m=Article&a=show&id=199

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25462274/viewspace-2131683/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-09-24

  • 博文量
    576
  • 访问量
    1111393