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

【Oracle笔记】1.Oracle体系结构

【Oracle笔记】1.Oracle体系结构,oracle例程是一种访问数据库的工具,由内存结构和后台进程组成,始终打开一个,并且只能打开一

【Oracle笔记】1.Oracle体系结构,oracle例程是一种访问数据库的工具,由内存结构和后台进程组成,始终打开一个,并且只能打开一

体系结构
一、基本组成
1.Oracle服务器是一个数据库管理系统,包括oracle例程(oracle instance)和oracle数据库(oracle database)。
2.oracle例程是一种访问数据库的工具,由内存结构和后台进程组成,始终打开一个,并且只能打开一个数据库,与数据库是一个一对多的关系。
3.oracle数据库是一个被处理的数据集合,包括三类文件:数据文件(data files),控制文件(control files),重做日志文件(redo log files)。另外还有一些辅助的,参数文件(parameter),密码文件(password)和归档日志文件(archived log files)
数据文件包括数据库中的实际数据
控制文件包括维护和验证数据库完整性所需的信息
重做日志文件包含数据库的更改记录,可以在出现故障时用来恢复数据
参数文件用来定义oracle例程的特性,主要用来规定内存和数据库中的参数
密码文件验证那些用户有权启动和关闭oracle的例程
归档日志文件是重做日志文件的脱机副本,重做日志文件写满后会循环覆盖掉,归档日志文件则会记录所有的重做日志。
4.物理结构包括三种文件类型:控制文件(以.ctl为后缀的文件),数据文件(以.dbf为后缀的文件,数据字典也属于数据文件),重做日志文件(以log为后缀的文件)
二、内存结构
1.oracle的内存结构由两个内存区组成:系统全局区(SGA)和进程全局区(PGA)
SGA在oracle例程启动的时候分配,是一段连续的以粒组(granules:当SGA<128M的时候,粒组大小为4M,否则为16M)为单位内存分配,用于存储数据库进程共享的数据库信息,包含有关oracle服务器的数据和控制信息。(在数据库中使用show SGA查询相关信息)
PGA在服务器进程启动时分配,
2.SGA包括以下几种基本的内存结构:
共享池(Shared pool):用于存储最近执行的SQL语句和最近使用的数据定义。包括两个部分。
a、库高速缓存(Library cache):存储有关最近使用的SQL和PL/SQL语句的信息,由“最近最少使用算法”(LRU)——当高速缓存填满的时候,将删除高速缓存中最近很少使用的执行路径和语法分析树。也包括两个结构:共享的SQL区(Shared SQL area)和共享的PL/SQL区(Shared SQL area)。
b、数据字典高速缓存(Dictionary buffer cache):数据库中最近使用的定义的集合,包括数据库的文件、表、索引、列、用户、权限和其他的数据库对象相关的信息,(有关用户账户数据,数据文件名、段名、区的位置、表的说明和用户权限信息都保存在数据字典表中)。
数据库缓冲区高速缓存(Database buffer cache):存储已从数据文件中检索到的数据块的副本。并通过LRU算法管理。
重做日志缓冲区(Redo log buffer):记录对数据库数据块所做的全部修改。主要用于恢复。
大型共享池(Large pool):SGA中的可选内存区,用于共享服务器的会话内存(UGA),I/O服务器进程,备份和恢复操作或RMAN,并行执行消息缓存区。不使用LRU
JAVA池(JAVA pool):存储JAVA命令的服务分析要求,在安装并使用JAVA时是必需的。
3.PGA是为连接到oracle数据库的每个用户进程保留的内存,在创建进程时分配,在终止进程时收回,仅供一个进程使用。PGA内存包括下列组件:
专用SQL区:包含绑定信息和运行时内存结构之类的数据。
会话内存:包含为会话变量以及与该会话相关的其它信息而分配的内存。
SQL工作区:用于大量占用内存的操作。
三、进程结构
1.oracle的几种进程
用户进程:在数据库用户请求连接到oracle服务器时启动,一般启动与连接oracle服务器的客户端,不与oracle服务器直接交互,,而是通过用户程序结构(UPI)生成各种调用
服务器进程:与oracle例程相连接,在用户建立会话时启动,执行生成的调用并返回相关的结果给用户,用户进程断开连接后,服务器进程就会终止
后台进程:在oracle例程启动时启动,有五个必备的后台进程和其他可选后台进程
a、数据库写入程序(DBWn):服务器进程在数据库缓冲区高速缓存中记录对还原块和数据块所做的更改。DBWn将数据库缓冲区高速缓存中的灰数据缓冲区写入数据文件。DBWn延迟写入数据文件,直到发生下列事件之一:
增量或正常检查点
灰数据缓冲区的数量达到阀值
进程扫描指定数据的块而无法找到任何空闲缓冲区时
出现超时
RAC集群环境中出现ping请求
使一般表空间或临时表空间处于脱机状态
使表空间处于只读模式
删除或截断表
执行ALTER TABLESPACE 表空间名 BEGIN BACKUP操作
b、日志写入器(LGWR):将重做日志缓冲区的信息写入重做日志文件,发生在下列事件中:
当提交事务时
当重做日志缓冲区的三分之一填满时
当重做日志缓冲区中纪录了超过1MB的更改时
在DBWn将数据缓冲区高速缓存中修改的块写入数据文件以前
每隔三秒
c、系统监控程序(SMON):用于例程恢复(前滚重做日志中的更改,打开数据库供用户访问,回退未提交的事务处理)、合并空闲空间、回收临时段。
d、进程监视器(PMON):在例程失败后,回退事务处理,释放锁,释放其他资源,重新启动已失效的调度程序
e、检查点(CKPT):包括在检查点发信号给DBWn、使用检查点信息更新数据文件的标头,使用检查点信息更新控制文件。检查点的时间间隔为3秒,检查点的用途是确保数据库缓冲区高速缓存中在时间点之间发生修改的所有缓冲区内容都已写入数据文件。
f、归档程序(ARCn):可选的后台进程,设置ARCHIVELOG(归档日志)模式时自动归档联机重做日志,保留数据库的全部更改记录。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
author-avatar
瑾諪kinti_754
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有