科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle9i的动态SGA特性探索

Oracle9i的动态SGA特性探索

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Oracle9i数据库在内部特性方面有着非常大的增强,其中一个最令Oracle DBA兴奋的莫过于可以动态设置全部的Oracle SGA控制参数。

作者:QQ新人类 来源:yesky 2007年10月23日

关键字: Oracle 9I 动态 SGA ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

据库在内部特性方面有着非常大的增强,其中一个最令Oracle DBA兴奋的莫过于可以动态设置全部的Oracle SGA控制参数。与8i不同的是,原来都将初始化参数放到一个文本文件中,并且在数据库启动的时候读取,Oracle9i却可以通过ALTER DATABASE和ALTER SYSTEM命令复位全部的Oracle参数。

  在9i前,如果想对Oracle数据库的处理模式作一些改变的话,Oracle管理员必须关闭数据库并且重新设置INIT.ORA文件中的参数,然后重新启动数据库。对于白天使用OLTP模式运作,晚上切换到数据仓库模式的Oracle数据库来说,这种重新设置是经常做的。

  对于需要停止和重新启动Oracle数据库来修改参数来说,Oracle9i在这方面有明显的加强,它令实现数据库连续可用的目标变得更加简单。

  这种可以在Oracle SGA中动态增加和缩小不同区域的能力为Oracle数据库管理员提供了一些令人激动的新特性。SGA每个区域的数据库活动都可以独立地被监视,而且也可以在Oracle数据库中,根据使用的模式分配和取回资源。

  我们首先来看以下Oracle9i数据库和Oracle8i数据库的一些区别。Oracle9i的一个最重要的加强是对于连接到Oracle数据库的全部专用连接,都无需要拥有一个独立的PGA空间。在Oracle8i中,对于专用的Oracle连接,我们都需要在内存中分配一个独立的区域,称为Program Global Area或者PGA。PGA空间中包含有SORT_AREA_SIZE和额外的RAM控制结构以用来维护连接任务的状态。在Oracle9i中,PGA空间已经被Oracle SGA中的一个新内存空间代替,它是通过PGA_AGGREGATE_TARGET参数来设置的(见图1)。


          *********图一************
       (Oracle8i与Oracle9i在内存分配上的区别)

  由于全部的内存使用都在Oracle SGA中分配,所以Oracle数据库管理员可以将分配给Oracle服务器的内存加大,可以分配至直到Orace服务器全部内存的80%。Oracle建议将服务器其余的20%内存保留给操作系统的任务。

  当用户连接到Oracle9i数据库时,排序工作所需要的内存将会在Oracle9i的PGA_AGGREGATE_TARGET区域中分配。这可以令Oracle9i比Oracle8i跑得更快,这是由于内存只在需要的期间才分配,并且在完成后就可以马上释放给其它连接的Oracle任务使用。

  动态修改SGA区域

  由于Oracle管理员现在可以增加和减少SGA的全部区域,因此我们可以快速地查看一下SGA区域是怎样的,这样我们就可以知道Oracle DBA如何监视这些区域的使用并且为Oracle数据库更有效地重新分配内存。SGA的区域可以分为以下的部分。

  数据缓冲(Data buffers)--Oracle9i拥有多达7个独立的数据缓冲来保存磁盘送来的数据块。这些包含有传统的KEEP pool,RECYCLE pool和DEFAULT pool,还有为每个Oracle数据库支持的块大小(2K, 4K, 8K, 16K和32K) 而建立的独立数据缓冲池(见图2)。


         图2 独立的Oracle9i数据缓冲

  我们可以监视这7个数据缓冲区域的命中率,如果缓冲的命中率保持在百分之九十以上,我们可以减少分配给这些数据缓冲的内存,并且将它们重新分配给其它Oracle实例中需要额外内存的地方。

  当数据缓冲的命中率(DBHR)下降时,我们可以将内存由一个数据缓冲中分离出来,并且将它重新分配给其它的数据缓冲(如图3所示)。


      图3 在Oracle9i的数据缓冲之间重新分配内存

  共享池(Shared pool)--Oracle9i的共享池有一个很重要的作用是分析和执行Oracle SQL语句。低的library cache命中率表示分配给library cache的内存不足,当shared pool需要对SQL语句进行大量的分析和执行时,Oracle9i的数据库管理员可以使用ALTER SYSTEM来为shared pool加入额外的内存。

  PGA区域--分配给PGA_AGGREGATE_TARGET的内存是用来让Oracle连接维护与连接相关的信息(例如游标的状态),并且对SQL的结果集进行排序。

  Log buffer--对于Oracle redo log缓冲是否有大量活动,我们可以在log switch(日志转换)的频率上看出来。Oracle管理员可以监视redo log区域的活动,并且在Oracle数据库需要额外的内存为原始的缓冲区域服务时,动态地增加内存。

  现在就让我们来仔细看以下这些内存区域之间是如何作用的。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章