Oracle 体系结构chapter2

前言:Oracle 体系结构其实就是指oracle 服务器的体系结构,数据库服务器主要由三个部分组成 管理数据库的各种软件工具(sqlplus,OEM等),实例(一组oracle 后台进程以及服务器中分配的共享内存区域),数据库(是基于磁盘的各种物理文件的集合,如数据文件,控制文件,日志文件,参数文件,归档日志文件) 实例与数据库之间的关系 (实例用于管理和控制数据库,数据库为实例提供数据,一个数据库可以被多个实例转载和打开,而一个实例在其生存周期内只能转载和打开一个数据库

1.数据库

1.1 数据库从逻辑角度分析数据库构成--表空间、段、数据区、数据块,面向用户的划分方式

表空间:数据库最大的逻辑 划分区域,可存放数据表,索引,回滚段等数据对象,任何数据对象在创建时都必须有指定的表空间 表空间与数据文件的关系是一个表空间由一个或多个数据文件组成一个数据文件只属于一个表空间,oracle数据的存储空间在逻辑上表现为表空间,在物理上表现为数据文件(表空间相当于文件夹)

分类:system表空间(存放系统内部表和数据字典数据)

SYAAUX 表空间,系统表空间的辅助表空间,降低system表空间的负荷,存放字典以外的数据对象

UNDO 表空间,存放撤销信息

USER 表空间:存放用于创建的数据对象,比如SCOTT,一般不同的应用系统的数据应该存放在不同的表空间,而不同的表空间应该存放在不同的磁盘上,从而减少I/O 冲突,提更应用系统的操作系能。

 

段:它不是存储空间的分配单位,但是一个独立的额逻辑存储结构,用于存储表,索引等,一个数据段只属于一个特定的数据对象,段内的数据区可以不连续,并且跨越多个文件,

数据区: 数据区是由连续的数据块组成的 ,数据区是存储分配的最小单位,分配存储空间是以数据区为单位的,使用数据区的目的是为了保存特定数据类型的数据,一个oracle对象包含至少一个数据区

数据块:逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。数据块有块头,表目录,行目录组成块头,存放整个数据块的引导信息,空余空间是未用信息用于数据的插入和更新,行数据存放表数据和索引

1.2 物理存储结构

逻辑上数据是存储在表空间中,而物理上存储在表空间所包含的物理文件中,物理存储结构是指由多种物理文件组成,主要有数据文件,控制文件,重做日志文件,归档文件,参数文件,口令文件和警告日志文件

数据文件

在表空间中创建数据对象时,用户无法决定使用哪个数据文件进行存储,有oracle系统负责分配物理存储空间。一个数据对象可以全部存储在一个数据文件中,也可以分布存储在同一个表空间的多个数据文件中。读数据是oracle系统将数据文件中的数据存储在高速 缓冲区,若用户请求数据不再高速缓冲区,则要将数据文件读取到缓冲区,数据更新时不会立即存储在数据文件中,而是由后台进程DBWR 决定何时写入文件,减少磁盘的I/O操作,提高系统的响应性能。(系统数据文件,撤销数据文件,用户数据文件)

控制文件

控制文件是一个二进制文件,记录了数据库的物理结构,主要包含数据库名,数据库文件与日志文件的名字和位置,数据库建立的日期,系统更改号,检查点,归档状态等信息。它一般在oracle系统安装时或者创建数据库时自动创建,控制文件存放的位置有服务器参数文件spfileorcl.ora 的control_files 参数值来决定。oracle 实例在启动时,首先访问的是初始化参数文件spfile,然后为系统全局区(SGA)分配内存,这时实例处于安装状态,控制文件处于打开状态,此时oracle会自动读取控制文件,若正常则读取所有数据文件和日志文件供用户访问,若控制文件信息错误,将无法正常启动实例。为防止控制文件损坏,系统会有两到三个相同的控制文件记录相同信息。

日志文件--重做日志和归档日志

日志文件的功能是记录对数据所做的修改,如果数据出现问题,可以通过日志文件对得到的原始数据进行修改。

重做日志文件:当用户在提交commit命令时,数据库首先将操作记录在日志文件中,所以日志文件记录了数据库所发生的所有更改信息。若将表空间设置为NOLOGGING时,就不会产生日志信息,但是这样破坏了日志的完整性,日志线程由若干个日志组构成,每个日志组由一个或多个日志文件构成。日志信息开始是存放在重做日志缓冲区的,当信息满三分之一时,由LGWR 进程写入日志文件中。

归档日志文件:当所有日志文件都被写入一遍后,进程会再次转向第一个日志组,为避免日志信息被覆盖,需要进行归档处理解决问题。在进行归档操作时,日志写入进程(ARCH)需要归档完成之后才能覆写日志,延迟了系统响应时间,而且归档占用了大量磁盘空间,影响整体性能,所以oracle 默认不采用归档模式。

服务器参数文件(SPFILE):

SPFILE是二进制文件,用来记录数据库的基本参数信息(比如数据库名,控制文件所在路径,日志缓冲区的大小,数据块的大小等),启动数据库之前,系统会读取SPFILE 初始化参数配置和启动实例,SPFILE 由系统自动创建名为SPFILEsid.ora ,sid 为所创建的数据库实例名,SPFILE  由系统维护,尽可能不直接对文件进行编辑,但可通过企业管理器(OEM)或 ALTER SYSTEM 命令修改,这样参数会自动写进文件。

密码文件:密码文件用于验证sysdba 权限的二进制文件,密码文件命名格式一般为PWD<sid> ,创建密码文件后,可以使用remote_login_passwordfile 来控制密码文件的使用状态:NONE 表示只需通过操作系统的验证,SHARED 表示多个数据库实例都可以采用此密码验证,EXCLUSIVE 表示只有一个数据库实例可以用此密码文件验证

警告文件

警告文件时存储在oracle 系统的文本文件(alter_orcl.log)用来记录系统的运行信息和错误消息

跟踪文件

跟踪文件包括后台进程跟踪文件和用户进程跟踪文件,文件命名格式一般为<sid>_<processname>_<spid>.trc

2.实例

实例是一组oracle后台和服务器中的分配的共享内存区域。通过实例来访问和控制磁盘中的数据文件,当用户连接数据库时其实连接的是数据库实例,用数据库服务器管理和操作数据库时,

其实是实例作为中间枢纽,负责数据库和数据库服务器的通行。

 

2.1系统全局区(SGA 共享内存区域): SGA 中的资源可以被多个用户使用,SGA主要由高速缓冲区,共享池,重做日志缓冲区,java池和大型池等内存结构组成。SGA随着数据库的实例启动而加载到内存中,当数据库关闭时,SGA区域就消失了

2.1.1高速数据缓冲区:一般存放最近使用的数据,分为三部分 脏数据区(已被修改,等待删除或写进数据文件的数据 ),空闲区(不包含任何数据),保留区(正在被用户使用或者被明确保留下来被用来做将来使用的数据)

2.1.2 重做日志缓冲区:用来存放对数据库操作时所产生的日志信息,当检查点发生或重做日志缓冲区中信息达到一定峰值时,有LGWR写入到重做日志文件中。所以较大的重做日志缓冲区能减少对重做日志文件的I/O读写次数,对数据的整体性能有一定影响。

2.1.3共享池

共享池是SGA保留的内存区域,用于缓存SQL语句,PL/SQL语句,数据字典,资源锁、字符集及其他控制结构等,共享池包含库高速缓冲区(SQL..)和字典高速缓冲区(数据字典..)

2.1.4 大型池

大兴池不是SGA的必须内存结构,实例需要大型池是用来减轻共享池的访问压力,比如,数据备份或恢复时或仿真异步I/o功能时,作为I/o 缓冲区使用。执行大量排序操作时,并行查询时

2.1.5 流池

用于数据库之间的信息共享

2.1.6 java 池

给java虚拟机使用的内存区域,支持在数据库中运行java 程序包

2.1.7后台进程

后台进程是实例的重要组成部分。其中SMON(系统监控进程),PMOM(进程监控进程),DBWR(数据写入程序),CKPT(检查点进程) 这5个后台进程必须正常启动,否则将导致数据库实例的崩溃。其他还有LGWR(日志写入进程),ARCH(归档进程),,LCKN(锁定进程),RECO(恢复进程),DNNN(调度进程),SNNP(快照进程)

3.管理数据库的各种软件-- 前台进程

3.1 程序全局区(PGA)(非共享内存区域)

程序全局区也可称做用户进程全局区,他的内存区是私有的,一个服务器进程,只能访问属于它自己的那部分PGA资源,各服务器资源总和即为实例的PGA 大小。

前台进程:用户进程(能够产生或执行SQL语句的应用程序,如SQL*Plus等,会话是指用户进程和实例实现连接后形成的交互方式,一般用户发出请求,数据库实例为用户返回响应消息)

服务器进程(处理解析会话过程中用户向数据库实例发出的SQL语句或SQL*Plus 命令,对于专用服务器模式,客户端进程和Oracle服务器进程是一一对应的,而在共享服务器模式下,一个Oracle服务器进程可能同时服务多个客户端进程)

常用数据字典 引用http://www.cnblogs.com/liuguosong/p/5808642.html

时间: 2024-12-28 12:20:31

Oracle 体系结构chapter2的相关文章

oracle体系结构-内存管理

一.Oracle体系结构概述 数据库--驻留在磁盘上的--各种磁盘文件(数据文件.控制文件.日志文件) 实例--驻留在内存--内存组件+进程---------------一旦数据库关闭,不存在了 数据库和实例的关系 A 一个数据库对一个实例(单节点) 数据库--实例 B 一个数据库对N个实例(多节点)--防止单点故障(oracle高可用架构)--7*24的系统 实例1     实例2      实例3    ... 实例n    ----每个实例都独立安装在独自的虚拟机上            

oracle体系结构详解

Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白. 如图: 一.基本组成: Oracle server: 一般情况下是一个instance和一个database组成 1个instance只能对应一个数据库.    特殊:1个数据库可以有多个instance(rac) 一台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应一个instance,也可以理解成每个数据库只有一个SID . 利用DBCA建出的每个库都是相对独立

Oracle体系结构之进程

Oracle体系结构之进程 一.概述 Oracle中的每个进程都要执行一个特定的任务(或者一组任务),每个进程都会为自己分配内存(PGA)来完成它的任务.一个Oracle实例主要有以下3类进程: (1) 服务器进程(server process):服务器进程包括专用服务器和共享服务器,用来处理你提交所有SQL.当你向数据库提交一个SELECT * FROM EMP查询时,就会有一个ORACLE专用/共享服务器进程来解析这个查询,把它放到共享池中(或者最好能发现这个查询已经在共享池中).这个进程要

Oracle实例和Oracle数据库(Oracle体系结构)

--========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --========================================== /* 对于初接触Oracle 数据库的人来讲,很容易混淆的两个概念即是Oracle 实例和Oracle 数据库.这两 概念不同于SQL sever下的实例与数据库,当然也有些相似之处.只是在SQL server我们根本不需要花费太 多的精力去搞清SQL实

Oracle体系结构理解(1)

Oracle被设计成为可移植性很好的数据库软件,不管在Linux,Unix还是Windows下载都可以比较稳定的运行,在大型机上也是支持的. 本篇博客仅仅用于记录本人初次学习Oracle时对Oracle体系结构的初步认识,如有不足希望大家给予指正. 数据库与实例 数据库(database):物理操作系统文件或者磁盘的集合.使用Oracle的ASM(自动存储管理)时,或者在使用RAW分区时,数据库可能不作为文件系统中单独的文件,但是定义仍然不变. 注:ASM在我第一次接触的时候,暂时被解释为和LV

足球与oracle系列(2):巴西揭幕战预演,oracle体系结构杂谈

巴西:战术打法:4222不动摇,主力阵容构架无悬念 核心体系无异议,4222完整诠释,体系架构如此清晰 世界顶级球队:巴西 数据库技术核心团队:甲骨文 教练员:DBA 守门员:归档日志文件 四大后防保证:数据文件.参数文件.日志文件.控制文件 四大中场核心:共享池(库缓存区.数据字典缓冲区).数据缓冲区.日志缓冲区 双前锋:user进程.server进程 替补:大池.java池.流池(有时的板凳球员可以主宰最后的比赛胜负) 脏块:足球也罢.轨迹也罢.这都已不再重要 实例参数文件:球员大名单 pf

Oracle实例和Oracle数据库(Oracle体系结构)---转载

对于初接触Oracle 数据库的人来讲,很容易混淆的两个概念即是Oracle 实例和Oracle 数据库.这两 概念不同于SQL sever下的实例与数据库,当然也有些相似之处.只是在SQL server我们根本不需要花费太 多的精力去搞清SQL实例和数据库,因为它简单易于理解.下面简要说明一下SQL实例.数据库,更多的是讲 述Oracle下的实例及数据库. 一.SQL server中的实例与数据库 1.SQL中的实例指的是一个SQL server服务器上仅有一个缺省实例.缺省实例名即为机器名S

oracle 体系结构详解

Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白. 如图: 一.基本组成: Oracle server: 一般情况下是一个instance和一个database组成 1个instance只能对应一个数据库.    特殊:1个数据库可以有多个instance(rac) 一台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应一个instance,也可以理解成每个数据库只有一个SID . 利用DBCA建出的每个库都是相对独立

oracle系列(二)oracle体系结构和用户管理

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 在使用oracle之前,我们一定要对oracle的体系结构有深入的理解,与之前我们学习过的sqlserver体系结构是不一样的,所以对于我们来说是一个全新的内容. 一.oralce体系结构 1.概述 Oracle的体系结构是数据库的组成,工作过程,以及数据库中数据的组织与管理机制,要了解oracle数据库的体系结构,就必须要理解oracl