一、Oracle数据库体系结构概论

                                  Oracle数据库体系结构概论

我们从一张图来讲解一个Oracle数据都有哪些结构以及这些结构之间的关系是什么。
这里写图片描述


这里写图片描述

1、逻辑结构

1.1、User process(用户进程):

     管理Oracle客户端的用户登录。当用户运行一个应用程序时,系统就为它建立一个用户进程。

1.2、Server process(服务器进程):

     帮助Oracle客户端连接到服务端。服务器进程处理与之相连的用户进程的请求,它与用户进程相通讯,为相连的用户进程的ORACLE请求服务。

1.3、PGA(program global area 程序全局区):

    管理每次会话的sql执行。PGA分成以下几个部分组成:
    3.1、private sql area:私有sql区
    3.2、session memory:会话记忆区
    3.3、sql work areas:sql工作区

1.4、数据库实例(Instance):

      数据库实例分为两个组成部分:SGA和background Process。
     当在计算机服务器上启动Oracle数据库后,称服务器上启动了一个Oracle实例(Instance)。ORACLE 实例(Instance)是存取和控制数据库的软件机制,它包含系统全局区(SGA)和ORACLE进程两部分。SGA是系统为实例分配的一组共享内存缓冲区,用于存放数据库实例和控制信息,以实现对数据库中数据的治理和操作。  
  进程是操作系统中一个极为重要的概念。一个进程执行一组操作,完成一个特定的任务.对ORACLE数据库治理系统来说,进程由用户进程、服务器进程和后台进程所组成。  
  当用户运行一个应用程序时,系统就为它建立一个用户进程。服务器进程处理与之相连的用户进程的请求,它与用户进程相通讯,为相连的用户进程的ORACLE请求服务。  
  为了提高系统性能,更好地实现多用户功能,ORACLE还在系统后台启动一些后台进程(background Process),用于数据库数据操作。

1.4.1、SGA(systerm global area 系统全局区):

SGA是Oracle为一个实例分配的一组共享内存缓冲区,它包含该实例的数据和控制信息。SGA在实例启动时被自动分配,当实例关闭时被收回。数据库的所有数据操作都要通过SGA来进行。SGA有以下几个组成部分:

1.4.1.1、Shared Pool(共享池):包含用来处理的SQL语句信息。

它包含共享**SQL区(Library Cache)**和 数据字典存储区(Data Dictionary Cache)。共享SQL区包含执行特定的SQL语句所用的信息。数据字典区用于存放数据字典,它为所有用户进程所共享。

1.4.1.2、Database Buffer Source(数据库缓冲资源):存放数据库中数据库块的拷贝。

它是由一组缓冲块所组成,这些缓冲块为所有与该实例相链接的用户进程所共享。缓冲块的数目由初始化参数DB_BLOCK_BUFFERS确定,缓冲块的大小由初始化参数DB_BLOCK_SIZE确定。大的数据块可提高查询速度。它由DBWR操作。

1.4.1.3、Java Pool(Java池):

为JVM何基于JAVA的应用保留。

1.4.1.4、大池:(Large Pool):

使用并行查询时候才需要使用大池。此外使用RMAN和共享服务器配置也需要建议配置大池。

1.4.1.5、日志缓冲区(Log Buffer Cache):

日志缓冲区用来存储数据库的修改信息。

1.4.2、后台进程(Backgroud Process):

1.4.2.1、SMON 系统监控进程(system monitor):

负责完成自动实例恢复和回收分类(sort)表空间。

1.4.2.2、PMON 进程监控进程:(PRocess monitor)

实现用户进程故障恢复、清理内存区和释放该进程所需资源等。

1.4.2.3、DBWR 数据库写进程:

数据库缓冲区的治理进程。在它的治理下,数据库缓冲区中总保持有一定数量的自由缓冲块,以确保用户进程总能找到供其使用的自由缓冲块(数据库实例与物理文件的连接)。

1.4.2.4、LGWR 日志文件写进程:

是日志缓冲区的治理进程,负责把日志缓冲区中的日志项写入磁盘中的日志文件上。每个实例只有一个LGWR进程。

1.4.2.5、ARCH 归档进程:(archiver process)

把已经填满的在线日志文件拷贝到一个指定的存储设备上。仅当日志文件组开关(switch)出现时,才进行ARCH操作。ARCH不是必须的,而只有当自动归档可使用或者当手工归档请求时才发出。

1.4.2.6、RECO 恢复进程:

是在具有分布式选项时使用的一个进程,主要用于解决引用分布式事务时所出现的故障。它只能在答应分布式事务的系统中出现。

1.4.2.7、LCKn 封锁进程:

用于并行服务器系统,主要完成实例之间的封锁。

2、 物理结构

物理数据库结构是由构成数据库的操作系统文件所决定,Oracle数据库文件包括:

1.1、数据文件(Data File)

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
  数据文件用来存储数据库中的全部数据,例如数据库表中的数据和索引数据.通常以为*.dbf格式,例如:userCIMS.dbf 。

1.2、日志文件(Redo Log File)

日志文件用于记录数据库所做的全部变更(如增加、删除、修改)、以便在系统发生故障时,用它对数据库进行恢复。名字通常为Log*.dbf格式,如:Log1CIMS.dbf,Log2CIMS.dbf 。

1.3、控制文件(Control File)

每个Oracle数据库都有相应的控制文件,它们是较小的二进制文件,用于记录数据库的物理结构,如:数据库名、数据库的数据文件和日志文件的名字和位置等信息。用于打开、存取数据库。名字通常为Ctrl*ctl 格式,如Ctrl1CIMS.ctl。

1.4、配置文件

配置文件记录Oracle数据库运行时的一些重要参数,如:数据块的大小,内存结构的配置等。名字通常为init*.ora 格式,如:initCIMS.ora 。

1.5、密码文件(Passwork File):

密码相关的数据存储

1.6、参数文件(Parameter File):

参数相关的数据存储

3、逻辑结构与物理结构的连接

逻辑结构和物理结构的连接达到数据存储(持久化)的目的。
    这里写图片描述
这里写图片描述

3.1、数据块(data block)

     是oracle数据块的存储基础,有若干字节组成。又是若干,到底是多少个字节呢?一般常用的是8KB,4KB的了,在创建数据库的时候可以指定。一旦指定就不能改变了,不过即使在4KB的数据库中,我们也可以指定创建8KB的表空间的,只要我们内存结构中存在8KB的缓存。
    数据块类似操作系统中的块大小,通常ORACLE数据库块大小会是操作系统块大小的整数倍,其中好处就无需多说了。不过原则是块尺寸是处理Oracle的更新、选择或者插入数据事务的最小单位,且访问很随机,则选择块较小的块尺寸;如果行比较小且访问主要是连续,或者如果有较大的行,则用较大的块尺寸。

3.2、 数据区间(extent)

      区,extent,是两个或者多个相邻的ORACLE数据块,他是空间分配的单元。概念总是如此的明了,3点关键。
a) 2个或2个以上
b) 相邻的数据块
c) 空间分配单元
      数据块是存储单元,区是分配单元。看着概念重不重要的,从概念我们就知道,ORACKE分配空间的时候至少2个数据块起步的。要是申请一个数据块,那么不好意思啦,就是不给。
就像小时候向爸爸妈妈要零花钱,
我们:“妈,给我5分钱,买个萝卜丝吃”
老妈:“!@#¥%……,没有5分”
我们:“一毛也行”
老妈:“好吧,又买两包萝卜丝?,给你1毛”
##3.3、数据段(segment)
  段是分配给某个逻辑结构的一组区。2个关键点:
a) 分配给某个逻辑结构
b) 一组区

3.4、 模式对象(schema object)

ORACLE数据库对象,主要就是如下10个了。

  1. 约束条件:保证数据完整性。
  2. 视图:虚表,命名的查询语句。
  3. 索引:加速查询(加快查询的速度)。
  4. 序列:一串连续递增或递减的数字,步长相同,(代理键) 。
  5. 同义词:一个对象的另外一个叫法(对象的别名)。
  6. 存储过程:用于操作
  7. 函数:用作复杂运算的。用于计算。
  8. 触发器:由事件触发的存储过程。

  9. 对数据库的操作可以基本归结为对数据对象的操作,这个对象蛤蟆也不知道如何去定义它。对象也是一个逻辑结构,是建立于段之上的,有头有脸的结构。

3.5、 表空间(Table Space)

表空间是一组数据文件,通常由相关的段组成。表空间是包含物理数据文件的逻辑实体。表空间存储数据库的所有可用数据。表空间也是一个逻辑结构是,数据库下最大的逻辑结构了。数据库创建完后会有如下表空间:
a) System表空间
b) Sysaux 表空间
c) 撤销Undo表空间
d) 临时temporary表空间
  一个或者多个数据文件构成成为表空间的实体。
  我们创建一个表空间时候,让他拥有一个2G大小的数据文件,那么该表空间就能存放2G大小的数据量,有一天耗尽了这2G,那么再增加一个数据文件给这个表空间,当然也可以扩大原先数据文件的大小。
  注意:上篇提到了对象如索引、表等,虽然也是存在表空间所属的数据文件中,但是这些对象本身不会指定要存放在那个数据文件上,数据文件只与表空间关联
###3.6、数据库实例、表空间、表、用户之间的恩怨情仇
这里写图片描述



  一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。



  **总结:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。**
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Oracle数据库体系结构是指Oracle数据库软件的组织结构和架构。它由多个组件组成,这些组件共同工作以提供高性能、可靠性和可伸缩性的数据库服务。 Oracle数据库体系结构包括以下几个重要组件: 1. 物理存储结构:包括数据文件、控制文件和日志文件。数据文件用于存储实际的用户数据,控制文件记录数据库结构和状态信息,日志文件用于记录数据库操作的过程。 2. 数据库实例:数据库实例是Oracle数据库软件的运行环境,它包括SGA(System Global Area)、后台进程和服务进程。SGA是用于缓存数据和SQL语句的内存区域,后台进程负责管理数据库的各种操作,服务进程用于处理来自客户端的请求。 3. 用户进程:用户进程是客户端应用程序与数据库之间的通信通道,它负责将用户请求传递到数据库实例,并返回查询结果。 4. Oracle实例进程Oracle实例进程是负责管理和维护数据库实例的进程,它包括后台进程和服务进程。后台进程负责管理数据库的内部操作,如数据库恢复和故障检测,服务进程用于处理来自用户进程的请求。 5. 分布式数据库Oracle数据库支持分布式数据库,在多个数据库之间实现数据共享和同步。分布式数据库可以提供更高的可用性和可伸缩性。 通过这些组件的相互配合工作,Oracle数据库能够提供高效、可靠的数据存储和管理服务。它具有很强的可扩展性和可定制性,可以根据需求进行配置和优化,以满足不同应用场景的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值