热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracle之内存

欢迎进入Oracle社区论坛,与200万技术人员互动交流进入这几天一直都在寻找一本深入研究oracle内存的书籍,期间一波三折弄的自己神魂颠倒,但是还是被我拿下了,感谢支持我的朋友,这周打算把oracle的内存进行一下深入剖析,以此记录学习笔记。一)内存体

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 这几天一直都在寻找一本深入研究oracle内存的书籍,期间一波三折弄的自己神魂颠倒,但是还是被我拿下了,感谢支持我的朋友,这周打算把oracle的内存进行一下深入剖析,以此记录学习笔记。 一)内存体

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  这几天一直都在寻找一本深入研究oracle内存的书籍,期间一波三折弄的自己神魂颠倒,但是还是被我拿下了,感谢支持我的朋友,这周打算把oracle的内存进行一下深入剖析,以此记录学习笔记。

  一)内存体系结构:

  每当数据库的实例启动的时候oracle database就会分配内存以及后台进程,在内存区域中存储的如下相关信息:

  》程序代码

  》关于以及连接的会话信息,即使该会话不是活动状态。

  》程序执行期间需要的相关信息

  》关于数据共享一些锁的信息。

  》缓冲的数据,想数据块和重做日志记录等等。

  可以查一下上面这个图:

  A)基本的内存结构包括如下部分:

  1)sga(系统全局区,system global area)

  sga有很多共享内存结构组成,叫做sga的组件,它包括一些关于实例的数据信息和控制信息,sga被所有的服务进程和后台进程所共享。例如数据存储在sga中包括缓存的数据块和共享sql区域。

  2)pga(程序全局区,program global area)

  pga是被一个oracle进程独自占有的不是共享的一块区域,它包含一些数据信息和控制信息。在oracle进程启动的时候该区域就被创建了。

  pga是为每个服务进程和后台进程存在的,所有的服务进程和是后台进程 锁分配的所有pga成为实例pga大小。oracle只能对整个所有pga的大小进行限制,不能对单个进程的pga进行设置大小。

  3)uga(用户全局区,user global area)

  uga保存了一些用户的会话信息。

  4) 软件代码区(software code areas)

  该区域是存储一些执行的代码或是能够被执行的代码的区域。

  B)oracle database 内存管理

  内存管理就是可以根据数据库的不断变化能够维护oracle内存的相关结构大小,并且给予内存的相关components一个合理的值。oracle内存的管理是通过设置相关参数文件中的参数进行设定的。其中包括如下管理方式:

  1)自动内存管理(automatic memory management)

  dba可以指定一个总的目标内存值,然后数据库实例就会自动的对内存的相关组件按照不同的需求进行自动动态调整内存大小,也就是安装不同内存的需求动态的调整pga和sga的相关大小。(该内容在后续进行深入研究)

  2)自动共享内存管理((automatic shared memory management)

  该管理模式是对内存的一个部分自动管理。你可以给sga设置一个总的大小目标值然后再设置一个总的pga大小内存值进行管理。

  3)手动内存管理(manual memory management)

  手动内存管理就不是设置一个目标最大值了,而是通过参数文件中的相关参数进行每个内存组件的手动管理。(该方式繁琐,被弃用了)

  note:在11g中,如果在创建数据库的时候使用dbca然后选择基本按照方式的时候,默认是采用了自动内存管理。

  pga是在操作系统的进程或是线程特定的一块内存区域,它不是共享的。因为pga是进程指定的,因此它不会在sga中分配。

  pga是一个内存堆,其中包含了被专用服务器或是共享服务器金曾锁需要的一些会话变量信息。服务器进程需要在pga中分配一些所需的内存结构。

  一个比喻为,pga是一个临时的文件管理员的工作区域,这个文件管理员就是服务进程,她是为客户服务工作的(client process),然后文件管理员把工作区域分为很多的区域,然后来处理或是保存客户的不同信息,当这个工作完成的时候,那么相关区域的空间就会被释放掉。

  如下图,显示了在专用服务器模式下所有的进程分配的pga的信息(注意background 进程也是需要分配pga的),可以使用一个初始化参数设置一个大的instance pga 值,然后每个私有的pga分别占用instance pga的一部分size:

[1] [2] [3] [4] [5] [6]


推荐阅读
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • 图数据库与传统数仓实现联邦查询使用CYPHER实现从关系数据库过滤时间序列指标一、MySQL得到研报实体在Oracle中的唯一ID二、Oracle中过滤时间序列数据三、CYPHER ... [详细]
  • 本文将详细探讨PHP中C的作用,并对比其他编程语言如Java和C的特点及其适用场景。 ... [详细]
  • 随着SEO技术的发展,越来越多的企业和个人开始重视网络营销。然而,要让网站在搜索引擎中获得良好的排名,不仅需要提升网站内容的质量,还需要构建高质量的外部链接。本文将详细介绍什么是高质量的外部链接以及如何有效构建这些链接。 ... [详细]
  • 开发笔记:前端之前端初识
    开发笔记:前端之前端初识 ... [详细]
  • 本文详细介绍了MySQL故障排除工具及其使用方法,帮助开发者和数据库管理员高效地定位和解决数据库性能问题。 ... [详细]
  • MOSS2007 中型服务场配置指南:网络负载均衡集群设置
    本文详细介绍了如何在MOSS2007环境中配置网络负载均衡集群,包括安装和配置网络负载均衡功能的具体步骤。通过本文,读者可以了解如何在多台Web服务器上安装并配置网络负载均衡,以实现高效的服务分发。 ... [详细]
  • 主机托管是指企业将服务器托管在专业数据中心,以替代自建数据中心的方式。这种方式不仅节省了成本,还提供了多种技术和管理上的优势。然而,主机托管也存在一些潜在的挑战,特别是在部署多个应用时。本文将详细探讨主机托管的主要利弊,帮助企业做出更明智的决策。 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • http:blog.csdn.netzeo112140articledetails7675195使用TCPdump工具,抓TCP数据包。将数据包上传到PC,通过Wireshark查 ... [详细]
  • 本文详细介绍了如何在Windows操作系统中通过Samba服务访问Red Hat Linux中的资源,包括配置Samba服务器、设置工作组名称、添加用户和共享目录等步骤。 ... [详细]
  • Java作为全球最流行的编程语言之一,应用广泛。本文将详细介绍Java开发的相关岗位及其具体职责,帮助读者更好地了解这一领域的职业发展路径。 ... [详细]
  • 本文介绍了在 CentOS 7 系统中如何查看所有活动进程及其运行时间。通过使用 `netstat` 和 `ps` 命令,您可以轻松获取进程的详细信息,包括启动时间、用户、终端和命令等。 ... [详细]
  • 无线鼠标应用:Remote Mouse
    Remote Mouse 是一款功能强大的无线鼠标软件,可将您的手机或平板设备变为遥控器,完美模拟键盘和鼠标操作,实现手机远程控制电脑。 ... [详细]
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
author-avatar
灰灰t2502911555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有