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、表空间有online、offline、readonly、readwrite属性,也就是说我们可以修改表空间的属性,来设置这个表空间是否可以被访问。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内存结构:分为SGA(System Global Area)系统全局区,PGA(Program Global Area)程序全局区,和UGA(User Global Area)用户全局区。
SGA是全部用户都可以访问的实例的共享内存区域。用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。系统全局区包含的数据:缓存数据块,在数据库上执行的SQL语句,用户执行的存储过程、函数和触发器等。SGA由DB高速缓存、共享池、重做日志缓存、大型池。
数据高速缓存database buffercache(DBC),DBC的作用:保存最近从数据文件中读取的数据块,其中的数据被所有用户共享。
影响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是一类没有共享的内存,它专用于特定的服务器进程,并且只能够由这个进程访问。
程序全局区由排序区,会话区,游标区,堆栈区组成
排序区:保存执行orderby、group by等包含排序操作的SQL语句时产生的临时数据。会话区保存会话所具有的权限、角色、性能统计信息。游标区保存执行带有游标(cursor)的PL/SQL语句时产生的临时数据。堆栈区保存会话中的绑定变量、会话变量以及SQL语句运行时的内存结构信息。
PGA与SGA的区别: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/3。3、重做日志缓存中的数据量达到了1M。4、每隔3秒时间。
ARCH主要职责:将重做日志的事物变化写入归档日志。
CKPT主要职责:该进程在检查点出现时,对全部数据文件的标题进行修改。
在通常情况下,检查点进程是不启动的它的工作由日志写入进程LGWR执行,然而,如果检查点明显的降低系统性能时,CKPT进程就会运行,将原来由LGWR进行执行的检查点的工作分离出来,由CKPT进程实现。
CJQ O主要职责:在Oracle中规划将要在数据库后台运行的进程或者作业。
RECO主要职责:在分布式数据库环境中恢复进程自动恢复那些失败的分布式事务。
实例和数据库,实例是进程+内存结构,数据库:数据文件+重做文件+控制文件+临时文件。区别:Oracle实例是SGA和一组后台进程的组合。Oracle数据库是指运城数据库所需要的所有数据文件,Oracle服务启动时先启动实例,然后才装载数据库文件,也就是装载数据库。
用户和模式和角色,Oracle中的用户是用于登录Oracle的命名账号,用户可以拥有自己的数据库对象。模式是对用户所创建的数据库对象的总称,在Oracle中任何数据库对象都属于一个特定用户,一个用户以及其所拥有的对象称为模式。用户和模式是一一对应的。角色,是一组相关权限的命名集合。使用角色的最主要的目的是建行权限管理。
数据字典和表,表时数据库中用来存储数据的对象,包含了行和列。列用来存储表中特定数据行的数据属性,行包含了在表定义中定义的列值。数据字典是用来记录数据库的系统信息;用户不能修改数据字典的信息。数据表用来记录用户数据;数据表由用户穿件可以被用户修改。- ORACLE 体系结构
- ORACLE 体系结构
- oracle体系结构
- oracle体系结构
- oracle 体系结构
- Oracle体系结构
- Oracle体系结构
- Oracle体系结构
- oracle体系结构
- oracle体系结构
- ORACLE 体系结构
- Oracle 体系结构
- ORACLE体系结构
- oracle 体系结构
- Oracle体系结构
- ORACLE体系结构
- Oracle 体系结构
- oracle体系结构
- Populating Next Right Pointers in Each Node II leetcode
- webview使用详解
- 随笔
- const int *p和int * const p的区别(常量指针与指向常量的指针)
- HDOJ题目2502月之数(数学,递推)
- Oracle体系结构
- 资源汇总
- python实现tail -f命令功能
- HDU4941Magical Forest(map)
- hbase scan 类
- 6.2.8 In Action
- hdu-oj 1219 AC Me
- 记录一个程序中的小bug,关于GUI的JTable组件
- Stockbroker Grapevine