Oracle9i数据库在内部特性方面有着非常大的增强,其中一个最令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数据库需要额外的内存为原始的缓冲区域服务时,动态地增加内存。

现在就让我们来仔细看以下这些内存区域之间是如何作用的。

改变PGA的内存分配

当以下的其中一个条件是真时,我们将需要动态地修改PGA_AGGREGATE_TARGET参数。

。当V$SYSSTAT中对"estimated PGA memory for one-pass" 的统计值超出PGA_AGGREGATE_TARGET时,我们就需要增加PGA_AGGREGATE_TARGET的值。

。当V$SYSSTAT中对"workarea executions - multipass"

的统计值超过百分之一时,数据库将会由更多的内存中得到好处。你可能过高地估计了PGA内存的空间,当V$SYSSTAT中"workarea

executions - optimal"的值一直是100%时,可以考虑减少PGA_AGGREGATE_TARGET的值。

我们可以通过一个简单的脚本来查看shared pool是否需要更多的内存。

量度Library Cache的丢失率

set lines 80;

set pages 999;

column mydate heading 'Yr. Mo Dy Hr.' format a16

column c1 heading "execs" format 9,999,999

column c2 heading "Cache Misses|While Executing" format 9,999,999

column c3 heading "Library Cache|Miss Ratio" format 999.99999

break on mydate skip 2;

select

to_char(snap_time,'yyyy-mm-dd HH24') mydate,

sum(new.pins-old.pins) c1,

sum(new.reloads-old.reloads) c2,

sum(new.reloads-old.reloads)/

sum(new.pins-old.pins) library_cache_miss_ratio

from

stats$librarycache old,

stats$librarycache new,

stats$snapshot sn

where

new.snap_id = sn.snap_id

and

old.snap_id = new.snap_id-1

and

old.namespace = new.namespace

group by

to_char(snap_time,'yyyy-mm-dd HH24')

;

Cache Misses

Yr. Mo Dy Hr. execs While Executing LIBRARY_CACHE_MISS_RATIO

---------------- ---------- --------------- ------------------------

2001-12-11 10 10,338 3 .00029

2001-12-12 10 182,477 134 .00073

2001-12-14 10 190,707 202 .00106

2001-12-16 10 2,803 11 .00392

由上面的例子看到,在每天的9:00AM到10:AM之间,shared pool明显缺少内存。我们就可以在这段期间动态地重新设置shared_pool参数以由db_cache_size中分配额外的内存。[@more@]

oracle 9i 增加 sga,Oracle9i的动态SGA特性(1)相关推荐

  1. oracle 9i 启动数据库,Oracle9i数据库的启动和停止

    [IT168 服务器学院]Oracle9I开始,取消了服务器管理器(svrmgl)和internal用户,数据库的启动和停止都是通过sql*plus来完成!Oracle10g可以通过浏览器来启动和停止 ...

  2. oracle 9i 安装 linux,oracle9i在linux9下的安装

    [IT168 服务器学院]花了两天时间终于安装了oracle.参考了很多相关的文章,我觉得只要一步步跟着做应该可以装好.(没有打补丁) 检查安装环境: (一)安装环境: linux version 2 ...

  3. Oracle 9i,sqlplus,Oracle9i iSQL*PLUS的配置过程

    iSQL*PLUS 结构如下: 配置过程如下: 1 配置HTTPD $ cd $ORACLE_HOME/Apache/Apache/conf $ vi httpd.conf 1.1 设定Server ...

  4. oracle+sga+pga用途,Oracle9i 动态SGA,PGA特性探索

    Oracle9i 动态SGA,PGA特性探索 更新时间:2009年03月03日 23:23:54   作者: 虽然Oracle9i中的内存管理仍然需要很多的手工操作,不过大部分的Oracle管理员可以 ...

  5. oracle9i 恢复数据库,oracle 9i使用闪回查询恢复数据库误删问题

    如果用户误删/更新了数据后,作为用户并没有什么直接的方法来进行恢复,他们必须求助DBA来对数据库进行恢复,到了Oracle9i,这一个难堪局面有所改善.Oracle 9i中提供了一项新的技术手段--闪 ...

  6. oracle9i解压,Linux下oracle 9i图文安装四

    前期工作: 前面已经讲到了安装Linux系统及加载相应的软件包,参考地址如下: Linux下oracle 9i图文安装一 ([url]http://waringid.blog.51cto.com/65 ...

  7. xp系统启动oracle9i,Windows XP系统Oracle 9i的安装和卸载图解-Oracle

    这学期上课的时候老师让我们安装Oracle9i数据库,练习了两节课的时间去安装,所以在安装的时候便截图了,只不过我们的机房已经有oracle了,所以老师让我们先卸载,然后在练习安装.希望对有需要的人有 ...

  8. oracle9I收缩表,Oracle 9i删除数据表(转)

    Oracle 9i删除数据表(转)[@more@] 数据表的删除比较简单,表删除后其占用的空间就被系统释放和回收,表的删除是无法回滚的操作.可删除的内容包括. 表的定义 表中的数据 表中的索引 表中的 ...

  9. oracle9i新建数据库的用户有哪些,Oracle 9i数据库的用户创造以及权限分配

    Oracle 9i数据库的用户创建以及权限分配 1.数据库安装时的参数设定 下文中的数据库版本为Oracle 9i(9.2.0),安装数据库时,数据库系统会创建一个数据库实例,其中:安装目录选为:\o ...

最新文章

  1. 无法解析 list 中的方法 iterator_Python-list中的append()和extend()方法区别
  2. python用os修改文件名_python查找特定文件并修改文件名
  3. 【送给读者】全新苹果 AirPods,包邮送一套!
  4. 【译】怎样处理 Safari 移动端对图片资源的限制
  5. [Coding Style] CSS coding style
  6. 【白皮书分享】车企数据资产及业务价值实现白皮书.pdf(附下载链接)
  7. python不会英语不会数学怎么自学-英语和数学都不好,但是我想学Python编程可以吗?...
  8. 结队编程与日程管理系统维护改善
  9. 学习python的第二周 第一天
  10. 【小米助手备份】-----找回微信聊天记录
  11. Tomcat启动成功,但是访问项目时或者是localhost:8080时出现404
  12. 学术英语理工(第二版)Unit5课文翻译
  13. 谷歌浏览器chrome扩展插件-农名的世界脚本
  14. 如何通过爱奇艺引流精准粉?
  15. 【vscode 插件】为 markdown 文章标题自动添加多级序号
  16. 神经网络与深度学习学习笔记(一)——基本概念
  17. 2020届校招算法岗面经汇总
  18. 生产任务分配问题 matlab+lingo
  19. uview 瀑布流_最简单的微信小程序瀑布流布局方法
  20. 关于Notion导出PDF的建议

热门文章

  1. 矛盾分析法的原理及方法
  2. 完美解决在SAE平台安装OneThink的问题
  3. Mac IDEA下载安装使用
  4. idea下载插件的两种方式
  5. 机器学习基础算法(2)
  6. 锤子招募众测用户@所有人
  7. mysql font安装_MySql安装
  8. 解决百度网盘下载时提示本地文件写入失败的问题
  9. [附源码]计算机毕业设计Python+uniapp基于微信支付的在线打印微信小程序ah1u9(程序+lw+远程部署)
  10. 黑苹果hidp显示不清楚_可能是目前解决Mac外接显示器字体发虚的最好方法