Oracle体系结构

来源:互联网 发布:淘宝店运营视频教程 编辑:程序博客网 时间:2024/05/01 05:53

Oracle体系结构简介:

1、存储结构,包括控制文件、数据文件、日志文件等文件。

2、内存结构,包括系统全局区(SGA)和程序全局区(PGA)。

3、进程结构,包括前台进程、后台进程。

Oracle的存储结构分为物理结构(主要描述Oracle数据的外部存储结构,即在操作系统中如何组织、管理数据。)和逻辑结构(逻辑存储结构主要描述Oracle数据库的内部存储结构,即从技术概念上描述Oracle数据库中如何组织、管理数据)。

物理结构由主要文件和其他文件构成而主要文件由数据文件、日志文件、控制文件三部分构成

数据文件,就是物理存储Oracle数据库数据的文件。具有以下几个特点:

1、每一个数据文件只与一个数据库相关联。

2、一个表空间可以包含一个或多个数据文件,也就是说表空间的大小是它所包含数据文件的总和。

3、一个数据文件只能属于一个表空间。

日志文件分为重做日志文件和归档日志文件。重做日志文件用于记录数据库变化,是用户的事务处理日志,归档日志是非活动重做日志的备份。

控制文件是Oracle服务器在启动期间用来标识物理文件和数据库结构的二进制文件。控制文件主要记录数据文件的位置以及大小,以及重做日志文件的位置及大小,并记录数据库名称以及创建时间和日志序列号。

其他文件包括:参数文件、临沭文件、预先分配文件。

参数文件是用于在启动实例的时候配置数据库的文件。参数文件的默认位置为ORACLE_HOME目录下database目录下。参数文件有两种,第一种是当建立数据库的时候就可以运行的初始化文件,规定数据库中所使用的各种设置值,文本参数文件的名称格式为inti<SID>.ora。另一种参数文件是服务器参数文件,服务器参数文件名称格式为SPFILE<SID>.ora,它可以管理数据库参数和值。参数文件中参数的数据包括:整型、字符型、逻辑型。

逻辑存储结

Oracle数据库的逻辑存储结构由一个或0个表空间组成,一个表空间(tablespace)由一组段组成,一个段(segment)由一组区组成,一个区(extent)由一批数据库块组成,一个数据库块(block)对应一个或多个物理块。

表空间:是最大的逻辑存储结构,它对应一个或多个数据文件,表空间的大小是它所对应的数据文件大小的总和。

表空间特性:

1、控制数据库数据磁盘分配。

2、限制用户在表空间中可以使用的磁盘空间大小。

3、表空间有onlineofflinereadonlyreadwrite属性,也就是说我们可以修改表空间的属性,来设置这个表空间是否可以被访问。4、完成部分数据的备份与恢复。

5、表空间通过数据文件来扩大,表空间的大小等于构成该表空间的所有数据文件的大小之和。

修改表空间的属性:alter tablespace表空间名称属性

查询表空间状态:select tablespace_name,status fromdba_tablespaces;

Example实例表空间,他用来存放我们在安装Oracle的时候创建的实例用户模式的数据信息。

SYSAUS表空间:他用于减少系统负荷,提高系统作业效率。

SYSTEM表空间:存放关于表空间名称,控制文件、数据文件等管理信息。

UNDOTBS重做表空间:用于存放UNDO数据。

USERS用户表空间:用户表空间永久存放用户对象和私有信息,也被称为数据表空间。

块:是数据库中使用的I/O最小单元,又称逻辑块或ORACLE

块的大小有参数DB_BLOCK_SIZE确定,块的大小是操作系统块大小的整数倍。数据块的结构包括块头和存储区两部分,块头中包括数据块标题、表目录、行目录等信息。存储区中包括空闲区和行数据区。

数据块标题:在标题中存储着数据类型以及块的物理位置等信息。表目录:在一个数据块中可以存储多个表的数据。表目录用于记录数据块中存储了那些表。行目录:用于记录数据块中各行的物理地址。

空闲区:当第一次分配数据块的时候,他只有空闲区,没有数据行。随着行被插入,空闲区会越来越小。

行数据区:这是数据块中存储实际行的地方。

盘区:Oracle逻辑存储中最小的单位是块,盘区是由连续的数据块集合构成的,而盘区构成了段,段又构成了表空间,表空间构成了数据库。盘区数量和盘区大小可以在正在建立的对象的storage子句中规定。

initial.设置为对象建立地第一个盘区的大小,next.是随后盘区的大小,minextents.这是立即分配的盘区数量。maxextents这是能够为这个表建立的盘区的最大数量,它可以是一个数值或者unlimited就是无限制的盘区数量。

段:是表空间中一个指定类型的逻辑结构,它由一个或多个区组成,段将占用并增长存储空间。

段的四种类型:数据段(data segment)存储表中的所有数据;索引段(index segment):存储表上最佳查询的所有索引数据;临时段(Temporary segment):存储表排序操作期间建立的临时表的数据。回滚段(rollback segment):存储修改之前的位置和值,是Oracle的撤销机制。

Oracle内存结构:分为SGASystem Global Area)系统全局区,PGA(Program Global Area)程序全局区,和UGAUser Global Area)用户全局区。

SGA是全部用户都可以访问的实例的共享内存区域。用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。系统全局区包含的数据:缓存数据块,在数据库上执行的SQL语句,用户执行的存储过程、函数和触发器等。SGADB高速缓存、共享池、重做日志缓存、大型池。

数据高速缓存database buffercacheDBCDBC的作用:保存最近从数据文件中读取的数据块,其中的数据被所有用户共享。

影响DBC的两个参数(主要影响读取效率):DB_BLOCK_SIZE缓冲区数据块大小,DB_BLOCK_BUFFERS缓冲区数据块个数。

DBC工作原理:在我们初次访问数据时Oracle将读取磁盘上的数据文件,将数据放入数据高速缓冲,在处理数据。如果数据已经位于数据高速缓存中,Oracle就可以直接操作数据。

共享池:保存了最近执行的SQL语句、PL/SQL程序和数据字典信息,是对SQL语句和PL/SQL程序进行语法分析、编译、执行的内存区。

库缓存区(library cache)包括:解析用户进程提交的SQL语句或PL/SQL程序和保存最近解析过的SQL语句或PL/SQL程序。

数据字典区(dictionary cache)用于存放数据字典信息行。

重做日志高速缓存:用于存储重做记录的缓存。重做记录并不是直接写入磁盘的重做日志文件,而是先写入重做日志缓存,当重做日志缓存中的重做记录达到一定数量时,由lgwr(日志写入进程)写入重做日志(先内存后磁盘

大型池:用于需要大内存操作提供相对独立的内存空间,以便提高性能。

需要大型池的操作:数据库备份和恢复,用于共享服务进程的会话内存(例如大量排序的SQL语句),并行化的数据库操作等。

PGA是一类没有共享的内存,它专用于特定的服务器进程,并且只能够由这个进程访问。

程序全局区由排序区,会话区,游标区,堆栈区组成

排序区:保存执行orderbygroup by等包含排序操作的SQL语句时产生的临时数据。会话区保存会话所具有的权限、角色、性能统计信息。游标区保存执行带有游标(cursor)的PL/SQL语句时产生的临时数据。堆栈区保存会话中的绑定变量、会话变量以及SQL语句运行时的内存结构信息。

PGASGA的区别:SGA系统全局去是对系统内的所有进程都是共享的,PGA是为了某个用户进程所服务的。

Oracle进程结构:他的实例有两种类型:单进程实例和多进程实例。

操作系统会使用多个进程来执行oracle的不同部分,并且对于每一个连接的用户都有一个进程。oracle进程可分为两种:用户进程和Oracle进程,Oracle进程可以分为服务器进程和后台进程。

用户进程:当用户运行应用程序时,操作系统会为用户运行的应用创建一个进程,那么这个进程就是我们所说的用户进程。用户进程是一个需要和服务器交互的程序,当应用程序向数据库服务器发送请求时,即创建用户进程。

服务器进程:用于处理连接到该实例的用户进程的请求。

当应用程序和ORACLE服务器在同一台机器上运行而不通过网络来链接时,服务器一般将用户进程和它相应的服务器进程组合成单个的进程,可以降低系统开销。当不在同一台机器时,服务器进程将执行以下任务:1、对应用程序所发出的SQL语句进行语法分析和执行。2、从磁盘中读入必要的数据块到SGA的共享数据库缓冲区。3、将结果返回给应用程序处理。

后台进程:是在实例启动时启动,启动ORACLE数据库的实例时会自动启动后台进程。后台进程是为所有数据库用户异步完成各种任务。

主要的后台进程有:PMON,进程监控进程;SMON,系统监控进程;DBWR,数据库写入进程;LGWR,日志写入进程;ARCH,归档进程;CKPT,检查点;CJQO,作业队列协调器;RECO,恢复进程。

PMON主要职责:1、监控服务器进程,以确保能够销毁发生损坏或者出现故障的进程,释放他们的资源。2、在主机操作系统上使用Oracle监听器注册数据库服务器。

SMON主要职责:1、在出现实例故障的情况下,SMON负责重新启动系统,执行崩溃恢复。2、将会清除已经分配但还没有释放的临时段。3、会在表空间管理中执行盘区结合。

DBWR主要职责:1、该进程将缓存区用户所用的数据写入数据文件。2、使用户进程总是可以得到未使用的缓冲区。

LGWR主要职责:是向在线重做日志文件中记录所用数据库的已提交事务处理。日志写入进程会在以下四种情况执行写入操作:1、事务处理提交。2、重做日志缓存已经填充了1/33、重做日志缓存中的数据量达到了1M4、每隔3秒时间。

ARCH主要职责:将重做日志的事物变化写入归档日志。

CKPT主要职责:该进程在检查点出现时,对全部数据文件的标题进行修改。

在通常情况下,检查点进程是不启动的它的工作由日志写入进程LGWR执行,然而,如果检查点明显的降低系统性能时,CKPT进程就会运行,将原来由LGWR进行执行的检查点的工作分离出来,由CKPT进程实现。

CJQ O主要职责:在Oracle中规划将要在数据库后台运行的进程或者作业。

RECO主要职责:在分布式数据库环境中恢复进程自动恢复那些失败的分布式事务。

实例和数据库,实例是进程+内存结构,数据库:数据文件+重做文件+控制文件+临时文件。区别:Oracle实例是SGA和一组后台进程的组合。Oracle数据库是指运城数据库所需要的所有数据文件,Oracle服务启动时先启动实例,然后才装载数据库文件,也就是装载数据库。

用户和模式和角色,Oracle中的用户是用于登录Oracle的命名账号,用户可以拥有自己的数据库对象。模式是对用户所创建的数据库对象的总称,在Oracle中任何数据库对象都属于一个特定用户,一个用户以及其所拥有的对象称为模式。用户和模式是一一对应的。角色,是一组相关权限的命名集合。使用角色的最主要的目的是建行权限管理。

数据字典和表,表时数据库中用来存储数据的对象,包含了行和列。列用来存储表中特定数据行的数据属性,行包含了在表定义中定义的列值。数据字典是用来记录数据库的系统信息;用户不能修改数据字典的信息。数据表用来记录用户数据;数据表由用户穿件可以被用户修改。
44 0
原创粉丝点击