热门标签 | 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]


推荐阅读
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 如何有效降低网站跳出率,提升用户体验?
    在当今竞争激烈的互联网环境中,优化用户体验是网络运营的核心。良好的用户体验不仅能吸引更多的流量,还能提高用户的复购率和留存率。而网站跳出率则是衡量用户体验的重要指标之一。本文将探讨如何通过多种策略有效降低网站跳出率。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文介绍如何处理服务器上使用curl命令访问HTTPS域名时出现的SSL连接错误问题。通过更新NSS库版本,可以有效解决这一常见问题。 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
  • 如何配置DHCP服务器
    本文详细介绍了配置DHCP服务器的步骤,包括路由器设置和电脑端配置,确保设备能够自动获取IP地址并正常联网。 ... [详细]
  • 深入探讨智能布线管理系统的电子配线架应用
    本文详细介绍了电子配线架智能布线系统的核心优势,包括实时监测网络连接、提高操作准确性、图形化显示连接架构、自动识别网络拓扑、增强安全性等功能。该系统不仅提升了网络管理的效率和准确性,还为资产管理、报告生成以及与其他智能系统的集成提供了强大的支持。 ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
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社区 版权所有