用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - sql代码库

第三章 Oracle的体系结构

2014-04-26 作者: Rainlate举报

[sql]代码库

第三章 Oracle的体系结构
3.1 Oracle数据库的整体架构 (DBA)

由上图可知,Oracle数据库由实例和数据库组成。

3.2 数据库存储结构
3.2.1 数据库存储结构

Oracle数据库有物理结构和逻辑结构。数据库的物理结构是数据库中的操作系统文件的集合。数据库的物理结构由数据文件、控制文件和重做日志文件组成。
1、数据文件:数据文件是数据的存储仓库。
2、重做日志文件:重做日志文件包含对数据库所做的更改记录,在发生故障时能够恢复数据。重做日志按时间顺序存储应用于数据库的一连串的变更向量。其中仅包含重建(重做)所有已完成工作的最少限度信息。如果数据文件受损,则可以将这些变更向量应用于数据文件备份来重做工作,将它恢复到发生故障的那一刻前的状态。重做日志文件包含联机重做日志文件(对于连续的数据库操作时必须的)和归档日志文件(对于数据库操作是可选的,但对于时间点恢复是必须的)。
3、控制文件:控制文件包含维护和验证数据库完整性的必要的信息。控制文件虽小,但作用非常大。它包含指向数据库其余部分的指针:联机重做日志文件和数据文件的位置,以及更新的归档日志文件的位置。它还存储着维护数据库完整性所需的信息。控制文件不过数MB,却起着至关重要的作用。

除了三个必须的文件外数据库还能有其它非必须的文件如:参数文件、口令文件及归档日志文件。
1、实例参数文件:当启动oracle实例时,SGA结构会根据此参数文件的设置内置到内存,后台进程会据此启动。
2、口令文件:用户通过提交用户名和口令来建立会话。Oracle根据存储在数据字典的用户定义对用户名和口令进行验证。
3、归档重做日志文件:当重做日志文件满时将重做日志文件进行归档以便还原数据文件备份。

3.2.2 Oracle数据库结构的16个要点(表空间-->段-->区-->块)

  1、一个数据文件只能归到某一个表空间上,每个表空间可以含一个或多个数据文件。包括系统数据和用户数据。 
  2、表空间是包括一个或多个数据文件的逻辑结构。用于存放数据库表、索引、回滚段等对象的磁盘逻辑空间 
  3、数据库文件是存放实际数据的物理文件。包括实例和数据库。 
  4、数据文件可以在创建表空间时创建,也可以以增加的方式创建。 
  5、数据文件的大小一般与操作系统限制有关。 
  6、控制文件是Oracle的重要文件,主要存放数据文件、日志文件和数据库的基本信息,一般在数据打开时访问。 
  7、日志文件在数据库活动时使用。 
  8、临时表空间是用于存放排序段的磁间;临时表空间由一个或多个临时文件组成。 
  9、归档日志文件由归档进程将联机日志文件读出并写到一个路径上的文件。 
  10、Oracle实例由一组后台进程和内存结构组成。 
  11、Oracle实例的内存结构常叫系统全局区,简称SGA。 
  12、DBA_开头的数据字典存放的字符信息都是大写,而V$_开头的视图存放的都是小写。 
  13、后台进程是一组完成不同功能的程序,主要包括DBWR、LGMR、CKPT等。 
  14、数据字典是Oracle的重要部分,也就是用于系统内部的一组表。 
  15、数据字典分为动态和静态两部分,静态主要是DBA_开头的数据字典,而动态则是以V$_开头的视图。 
  16、SGA分为数据缓冲区、共享池和日志缓冲区。
3.2.3 Oracle逻辑结构及表空间

1.ORACLE逻辑结构
ORACLE将数据逻辑地存放在表空间,物理地存放在数据文件中。
一个表空间任何一个时刻只能属于一个数据库。
 
数据库——表空间——段——区——ORACLE块
每个数据库由一个或多个表空间组成,至少一个。
每个表空间基于一个或多个操作系统的数据文件,至少一个,一个操作系统的数据文件只能属于一个表空间。一个表空间可以存放一个或多个段 segment。
每个段由一个或多个区段extent组成。
每个区段由一个或多个连续的ORACLE数据库块组成。
每个ORACLE数据块由一个或多个连续的操作系统数据块组成。
每个操作系统数据文件由一个或多个区段组成,由一个或多个操作系统数据块组成。
      
   ⑴、表空间(tablespace)
   表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数据库都有一个SYSTEM表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。表空间具有在线(online)和离线(offline)属性,可以将除SYSTME以外的其他任何表空间置为离线。
   ⑵、段(segment)
   数据库的段可以分为四类:数据段、索引段、回退段和临时段。
   ⑶、区
   区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储与段中,它由连续的数据块组成。
   ⑷、数据块
   数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的Oracle版本DB_BLOCK_SIZE的默认值是不同的。
   ⑸、模式对象
   模式对象是一种应用,包括:表、聚簇、视图、索引序列生成器、同义词、哈希、程序单元、数据库链等。 
   最后,在来说一下Oracle的用户、表空间和数据文件的关系:
   一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。 
   总结:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。 

2.两类表空间:
系统SYSTEM表空间  非系统表空间 NON-SYSTEM表空间
系统SYSTEM表空间与数据库一起建立,在系统表空间中有数据字典,系统还原段。可以存放用户数据但是不建议。
非系统表空间NON-SYSTEM表空间 由管理员创建。可以方便管理。
 
3.创建数据库表空间语句:
CREATE TABLESPACE  
4.创建临时表空间
5.设置表空间脱机注意表空间名的大小写
6.表空间的设置为只读模式,注意表名字默认是大写,如果创建表空间时表名小写并加双引号可以成小写。
7.改变表空间的存储设置
alter tablespace "test" minimumextent 100K

3.3 实例的整体架构

实例整体架构图:

实例由内存和后台进程组成,它暂时存在于RAM和CPU中。当关闭运行的实例时,实例将随即消失。数据库由磁盘上的物理文件组成,不管在运行状态还是停止状态,这些文件就一直存在。因此,实例的生命周期就是其在内存中存在的时间,可以启动和停止。一旦创建数据库,数据库将永久存在。通俗的讲数据库就相当于平时安装某个程序所生成的安装目录,而实例就是运行某个程序时所需要的进程及消耗的内存。

Oracle的内存架构包含两部分系统全局区(SGA)和程序全局区(PGA)。

3.3.1 程序全局区


3.3.2 系统全局区
在操作系统提供的共享内存段实现的内存结构称为系统全局区(SGA)。SGA在实例启动时分配,在关闭时释放。在一定范围内,可以在实例运行时通过自动方式或响应DBA的指令,重新调整11g实例中的SGA及其中的组件的大小。

由上图可知SGA至少包含三种数据结构:数据库缓冲区缓存、日志缓冲区及共享池。还可能包括:大池、JAVA池。可以使用show sga,查看sga的状态。

1、共享池
    a.库缓存是内存区域,按其已分析的格式存储最近执行的代码。分析就是将编程人员编写的代码转换为可执行的代码,这是oracle根据需要执行的一个过程。通过将代码缓存在共享池,可以在不重新分析的情况下重用,极大地提高性能。
    b.数据字典缓存有时称为“行缓存”,它存储最近使用的对象定义:表、索引、用户和其他元数据定义的描述。
    c.PL/SQL区:存储的PL/SQL对象是过程、函数、打包的过程、打包的函数、对象类型定义和触发器。

2、数据库缓冲区
     数据库缓冲区是oracle用来执行SQL的工作区域。

3、日志缓冲区
 日志缓冲区是小型的、用于短期存储将写入到磁盘上的重做日志的变更向量的临时区域。日志缓冲区在启动实例时分配,如果不重新启动实例,就不能在随后调整其大小。


1、PMON-----程序监控器
2、SMON-----系统监控区
3、DBWR-----数据写进程
4、LGWR-----日志写进程
5、CKPT-----检查点进程
6、Others---归档进程


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...