oracle 体系结构详解
(参考资料)oracle 体系结构详解
oracle 体系结构详解一、体系结构图oracle实例=SGA区+后台进程oracle服务器=oracle实例+oracle数据库数据库实例启动实质上即为:分配SGA区,启动后台进程Oracle 实例1、是访问Oracle 数据库的一种方式2、通常只开一个且仅开一个数据库3、由内存结构和进程结构组成,即SGA区+后台进程连接Oracle实例:包括建立用户连接和创建会话Oracle数据库是作为整体的数据集,由三类文件组成:Data files, Control files, Redo log files二、物理结构主要由三类文件组成:data files ,control files,redo-log files1.data files:数据文件,存放基本表信息(即表中数据等)、索引信息(系统内建有索引表)、回退信息(主要为数据的rollback)、临时信息(如有orderby 等操作时系统有临时信息)、系统引导信息(如数据字典等)2、control files:控制文件(二进制的)。
存放库物理结构、库名、库创建日期、序列号(存有同步信息);控制文件至少有两个一摸一样的,用做备份用参数Controlfiles=/../../文件名1,/../../文件名2;指定3、redo log files:回退日志文件,存放修改前后的信息,主要用于数据的恢复,一个数据库至少有两个redo log files文件,以便可以循环记录信息注:三类文件都有序列号,必须同步才能使用,且已Control files中的序列号为准,其他的必须与其保持一致除了上面三类文件还有:Parameter file(参数文件),Password file(口令文件),Archived log files(归档文件)等参数文件:有二进制、文本两种,用于设定参数的值。
二进制参数文件可以及时更改,即时生效;文本参数文件需重启口令文件:可用orapwd.exe 建口令文件。
Oracle数据库体系结构
Oracle数据库体系结构⼀、oracle数据库体系结构基本组成:Oracle server:⼀般情况下是⼀个instance和⼀个database组成⼀般:1个instance只能对应⼀个数据库。
特殊:1个数据库可以有多个instance(RAC)⼀台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应⼀个instance,也可以理解成每个数据库只有⼀个SID 。
利⽤DBCA建出的每个库都是相对独⽴的,在同⼀服务器上如果创建多库必须将环境变量的参数⽂件做区分,并且在对实例切换时需如下操作:connect ⽤户名/密码@实例的服务名1.1 oracle服务器和实例1.1.1实例由内存区和后台进程组成①内存区:数据库⾼速缓存、重做⽇志缓存、共享池、流池以及其它可选内存区(如Java池),这些池也称为数据库的内存结构②后台进程:包括系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT)、其它进程(SMON,如归档进程、RECO进程等)③注:要访问数据库必须先启动实例,实例启动时先分配内存区,然后再启动后台进程,后台进程执⾏库数据的输⼊、输出以及监控其它Oracle进程。
在数据库启动过程中有五个进程是必须启动的,它们是系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT),否则实例⽆法创建。
1.1.2服务器Oracle服务器由数据库实例和数据⽂件组成,也就是我们常说的数据库管理系统。
数据库服务器除了维护实例和数据库⽂件之外,还在⽤户建⽴与服务器的连接时启动服务器进程并分配PGA1.2 oracle数据库逻辑结构表空间:据库的基本逻辑结构,是⼀系列数据⽂件的集合;段:不同类型数据在数据库中占⽤的空间,有许多区组合⽽成;区:由连续的块组成,⽬的是为数据⼀次性预留⼀个较⼤的空间,oracle为存储空间进⾏分配回收都是以区为单位的;块:最⼩的存储单位,在创建数据库时指定,不能修改。
第4章ORACLE服务器体系结构和组成
PFILE子句是必需的,SPFILE子句可以省略, 那么SPFILE存贮在缺省位置 <ORACLE_HOME>\DATABASE\下。
ORACLE的体系构造 物理构 造
• 查看效劳器端参数文件
• 在SQL PLUS中使用SHOW PARAMETERS命令
• 修改效劳器端参数文件
• 在9i中直接手工修改本地参数化文件是没 用的,不会改变数据库的设置。
• 利用ALTER SYSTEM SET parameter = value语句可以在数据库运行时修改初始化参 数的值。
• 在SET子句中可以使用SCOPE选项来设 置影响范围,所谓影响范围就是ALTER SYSTEM语句对参数的修改是仅对当前实例 有效〔记录在内存中〕,还是永久有效〔记 录在SPFILE中〕。
日志缓冲存储区〔Log Buffer〕 日志缓冲区
以记录项的形式备份数据库缓
冲区中被修改的缓冲块,这些
记录将被写到日志文件中。
LOG_BUFFER
日志文件
确定日志缓冲区的大小。
ORACLE的体系构造 图示
PMON LCKn RECO SMON
共享池
SGA
数据缓冲区 日志缓冲区
体系构造
Server UUUssseeerrr
当一个日志文件组被填满时
关闭数据库时
ORACLE的体系构造 物理构 造
日志文件写操作图示
Log File 2
ORACLE的体系构造 物理构 造
镜像日志文件是为防止日志文件的丧失,在 不同磁盘上同时维护两个或多个联机日志文件 的副本。 其特点如下: 每个日志文件组至少包含两个日志文件成员。 每组的成员数目一样。 同组的所有成员同时被修改。 同组的成员大小一样,不同组的成员大小可 不同。
Oracle数据库体系结构
Oracle数据库体系结构一.Oracle数据库体系结构1.实例:一组用于管理数据库文件的内存结构,实例对应着数据库;RAC/CDB CDB:CDB为数据库容器,PDB插拔数据库。
在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC),即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。
而实例与数据库不可能是一对多的关系。
当进入ORACLE 12C后,实例与数据库可以是一对多的关系。
RAC:允许多个Oracle数据库实例在多台服务器上共享同一个数据库存储空间,并通过集群来保证高可用性和容错性。
简单来说,RAC就是将多个数据库实例连接起来,形成一个“集群”。
2.ShardingSphere:中间件,不同的数据库对应不同的实例,中间有一个中间件,使用者连接中间件;数据库中间件可以简化对读写分离以及分库分表的操作,并隐藏底层实现细节,可以像操作单库单表那样操作多库多表。
常见的中间件有MyCat,Mysql-Proxy,DRDS,Atlas,Zebra二.Orcal数据库体系结构:Orcal服务器=数据库+实例1.实例是暂时的,它只不过是一组逻辑划分的内存结构和进程结构,它会随着数据的关闭而消失数据库它就是一堆物理文件(控制文件、数据文件、日志文件等等)它呢是永久存在的数据库和实例是一对一的,这种结构我们一般称为单实例体系结构;既然有一对一,那就会有一对多,在复杂的分布式结构中,一个数据库可以对多个实例,多个实例之间可以通过网络来进行数据的一个交互或着交换2.PGA:程序全局区,为单独的服务器进程存储私有数据的内存区域(SAG属于公共资源,PAG是私有的)3.SGA:系统全局区,所有用户都可以访问的共享内存区域启动Oracle数据库时,系统先在内存内规划一个固定区域,用来储存用户需要的数据,以及Oracle运行时必备的系统信息4.后台进程结构,此处只罗列必须启动的5个后台进程系统监控器SMON:负载检查数据库一致性,有必要会在数据库打开时启动数据库恢复进程监视器PMON:负责一个Orcal数据库进程失败时清理资源,会定期唤醒或者被其他主动事务主动唤醒数据库写进程DBWR:负责将更改的数据从“数据库高速缓冲区”写入“数据文件”日志写进程LGWR:负载把日志数据写到练级日志文件检查点进程SKPT:负责检查点操作,主要检查数据库状态一致性和记录系统变更时间5.三个文件1)控制文件:存储数据库结构,一个控制文件只属于一个数据库,包含数据文件日志文件信息及相关状态归档信息,2)数据文件:存储数据,xxx.dbf文件存储着系统数据,数据字典数据,索引数据及用户存储的数据3)日志文件:存储与事务有关的重做日志三.逻辑存储结构1.块是Oracle用来管理存储的最小单元,也是最小的逻辑存储结构2.区是Oracle数据库分配空间的最小单位3.段由多个区组成,这些区可以是连续的,也可以是不连续的4.表空间是Oracle数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象。
第2讲_Oracle的体系结构
Page 9
2.2.3 控制文件(.ctl)
控制文件(control files)是一个较小的二进制文件,在Oracle服务器在启 动期间用来标识物理文件和数据库物理结构。 创建数据库时,创建控制文件。数据库的启动和正常运行都离不开控制文 件。启动数据库时,Oracle从初始化参数文件中获得控制文件的名字及位 置,打开控制文件,然后从控制文件中读取数据文件和联机日志文件的信 息,最后打开数据库。数据库运行时,Oracle会修改控制文件。 三个控制文件内容一样,镜像关系。
– 将执行结果返回用户
2.5.3 后台进程
为所有数据库用户异步完成各种任务
Page 21
服务器进程
后台进程
用户进程
Page 22
2.5.3.1 DBWR进程
数据库写进程。该进程执行将缓冲区写入数据文件,是负责缓冲存储区管 理的一个ORACLE后台进程。 当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是 将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。
实例
用户进程 共享缓冲区 库缓冲区 服务器进程 PGA 数据字典
SGA
数据缓冲区 日志缓冲区 大池
Java池
PMON SMON DBWR LGWR CKPT Others
参数文件 口令文件
数据文件
控制文件
重做日 志文件
归档日志文件
数据库
Page 3
数据库和实例
数据库(Database)及实例(Instance) 数据库:物理操作系统文件或磁盘(disk)的集合。 实例:数据库启动时,系统首先在服务器内存中分配系统全局区 (SGA),构成了Oracle的内存结构,然后启动若干个常驻内存 的操作系统进程,即组成了Oracle的进程结构,内存区域和后台 进程合称为一个Oracle实例。
简述oracle体系结构
简述oracle体系结构
Oracle体系结构
Oracle是一种支持分布式数据库管理系统,其体系结构主要包
括E-R图,表和索引,存储过程和视图, SQL,PL/SQL程序和组件,等等。
1. E-R图
E-R图是一种关系数据库管理系统的基本模型,其中实体表示客观事物,关系表示实体之间的联系。
E-R图可以被用来描述实体和它们之间的关系,以及实体的属性和它们之间的关系。
2.表和索引
表是由一系列列组成的逻辑结构,它们包含每行和每列的数据。
索引是一种特别的表,可以被用来提高表的搜索速度和性能。
3.存储过程和视图
存储过程是一种特定类型的程序,它们可以被用来完成某些操作,比如查询和更新。
视图是一种准备好的查询,它们可以被用来返回数据库中的数据。
4.SQL,PL/SQL程序和组件
SQL(Structured Query Language)是一种用于在数据库中执行查询和更新操作的语言,是一种面向关系型数据库的核心语言。
PL/SQL是一种可以嵌入SQL语句的程序设计语言,用来定义复杂的
查询,更新和实现回调函数。
组件是一种模块化的程序,用来构建更复杂的系统。
Oracle数据库体系结构
在Oracle 9i之前,初始化参数都是以文本格式存放 的。在Windows平台上,建议将PFILE文件存放在 %ORACEL_HOME%\database目录中,文件名为 initSID.ora,其中SID为实例名。
(2)SPFILE
SPFILE是以二进制格式存放的。在Window 平台上,Oracle建议将SPFILE存放在 %ORACLE_HOME%\dbs 目录中。文件名为sp。
2.4.2 段
• 段是用户建立的数据库对象(如:表,索引, 簇等)的存储表示。它是有一个或多个区组 成的。
• 当建立表、索引、簇时,Oracle会为这些对 象分配段,以存放它们的数据信息,并且段 名与对象名完全相同。
• 用户建立的每一个表都会有一个在表空间中 存储的逻辑段。为用户所建立的对象生成的 段都要在磁盘上占用空间。
• 日志文件主要用于数据库恢复。
• 查看重做日志文件
SQL> select member from v$logfile;
MEMBER -------------------------------------------------E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
db_block_size 指定标准oracle块的尺寸
db_cache_size 指定标准数据高速缓存的尺寸
share_pool_size 指定共享池的尺寸
常用初始化参数(一)
参数名 log_buffer sga_max_size java_pool_size large_pool_size
oracle第一篇:oracle12c体系结构
oracle第⼀篇:oracle12c体系结构1、oracle12c的体系结构:内存(逻辑)结构:SGA可以分为数据缓冲区、⽇志缓冲区、共享池、⼤型池、JAVA池、流池。
数据缓冲区(data buffer cache):oracle读取数据的缓存区,执⾏数据的临时存储空间以及修改未提交时,未写⼊磁盘的脏数据。
主要作⽤是提⾼数据的查询速度和减少磁盘的I/O操作;⽇志缓冲区(redo log buffer cache):在执⾏sql语句之前,需要计算出sql执⾏语句的改变向量,并将该向量以⽇志的形式临时存储在该内存区域,然后再去数据缓冲区进⾏数据的更改。
共享池(share pool):共享池分为库缓存、数据字典缓存、sql查询和pl/sql函数结果查询缓存;共享池的⼤⼩9i版本之后就可以直接调整⼤⼩。
库缓存:⽤于临时存储近期已经分过的代码,再次使⽤时就不需要对该代码进⾏分析,直接调⽤。
提⾼语法的执⾏效率。
数据字典缓存:⽤于对近期调⽤的数据字典进⾏缓存,并且数据字典缓存的分配是在库缓存之后的,所以只要库缓存没问题,数据字典缓存也就没问题。
sql查询和pl/sql函数结果查询缓存:当同⼀会话或者多个不同的会话执⾏多次,就会将该查询的结果存储在内存中,当下⼀次查询时直接去调⽤该查询的结果。
在运⽤该执⾏结果之前缓存机制会⾃动的检查查询中的表等对象是否发⽣了变化。
如果变化就会重新查询,使⽤重新查询得到的结果。
⼤型池(large pool):可选择型的内存区域,主要⽤于共享服务器进程的使⽤。
如果未分配再⽤⼑该内存时会在共享池中进⾏分配。
JAVA池(java pool):在运⾏java过程时才使⽤到java池,它作⽤于java对象所需要的堆空间。
但是实际java的实际运⾏还是在数据缓存区。
流池(stream pool):⽤于在redo log中获取⽇志向量,并重新构造执⾏语句,在远程数据库执⾏。
⽽在redo log中提取更改的进程以及应⽤更改的进程将⽤到内存,该内存即是流池。
Oracle架构与组成部分
用户进程
用户发起的进程
用户启动的进程,用于执行查询、更新或其他数据库操作。
工具和实用程序发起的进程
由Oracle提供的工具和实用程序启动的进程,用于管理数据 库。
05 Oracle数据库的网络结构
数据库网络服务
1 2 3
Oracle Net
Oracle Net是Oracle数据库的网络通信协议,它 允许客户端和服务器之间的连接。
数据文件的创建与维护
在Oracle数据库中,可以通过CREATE DATABASE、ALTER DATABASE等命令来创建、修改或删除数据文件。
控制文件
控制文件的定义
控制文件是Oracle数据库中记录数据库物理结构信息的文 件,包括数据库名称、数据文件和重做日志文件的名称和 位置等信息。
控制文件的组成
区
连续的数据块集合
区是由连续的数据块组成的集合,这些数据块都属于同一个段。当一个段的空间不足时,Oracle会自 动分配一个新的区,以确保该段可以继续增长。区的大小和数量取决于数据库的配置和管理策略。
块
最小的数据存储单位
块是Oracle数据库中存储数据的最小单位, 也是进行数据I/O操作的基本单位。每个块 的大小是固定的,通常为8KB、16KB或 32KB等。块的大小可以在创建数据库时指 定,并且可以在以后通过更改参数进行修改
存储结构
存储结构定义
存储结构是指数据库中数据的物理存储方式,包括数据文件、控制文 件、重做日志文件等。
数据文件
数据文件是Oracle数据库中存储数据的主要文件,包括表数据、索引 数据等。
控制文件
控制文件是Oracle数据库中记录数据库物理结构信息的文件,包括数 据库名称、数据文件和重做日志文件的名称和位置等信息。
Oracle数据库体系结构小结
Oracle数据库体系结构小结——参考文献:Concepts双语版Oracle数据库体系结构分为四大体系结构,即:Oracle网格体系结构、应用体系结构、物理数据库结构、逻辑数据库结构;一、 Oracle网格体系结构:Oracle是第一个为企业网格计算而设计的数据库。
在网格体系中所有资源被统一储备、随需分配。
回顾网格的相关内容:1、网格将相似的IT资源整体地看做一个池。
2、网格中管理的IT资源包括:基础设施:组成数据存储、软件运行环境的硬件和软件;应用:定义业务过程(business process)的程序逻辑(program logic)和流程(flow);信息:蕴含于各种数据中用于指导业务的数据的内在含义;3、网格中的两个独特核心理念:虚拟化和资源供给;虚拟化,就是将各类独立的资源视为一个池,经过抽象后提供给资源消费者。
这意味着打破了资源提供者与资源消费者之间的硬性联系(也就是说没有明确规定哪一块资源就是某个消费者独有的)。
资源供给,就是当消费者通过虚拟层请求资料时,网格在幕后找出满足需求的资源,并分配给消费者。
注:基础设施、应用、信息三种资源的虚拟化与资源供给的具体方法各不相同,但思路是相通的。
并且通过网格供给三种资源给用户带来的益处也各不相同,但都具备商质量、低造价、及灵活的特点。
将基础设施资源视为一个池并随需分配,提高了资源利用水平,减少了冗余资源,节约了软硬件购买资金。
数据库服务器的网格特性:1、基础设施网格:A、服务能力虚拟化:Oracle实时应用集群(RAC Oracle Real Application Clusters)可以使一个数据库运行在网格中多个集群节点上,即把多个计算机的处理能力作为池。
Oracle是目前唯一不需要将数据分区再分布处理就能利用多个计算机提供的处理能力的数据库。
B、存储能力虚拟化。
Oracle数据库10g的自动存储管理功能(ASM,Automatic Storage Management)在数据库存储硬件之间建立了一个虚拟层,多个磁盘可以被视为一个磁盘组,而且磁盘可以在保持数据库联机的状态下动态地添加或先移除。
Oracle数据库的体系结构介绍
Oracle数据库的体系结构介绍Oracle数据库是目前世界领先的企业级关系数据库管理系统,其卓越的性能、可靠性以及安全性被广泛地应用于企业级应用系统中。
本文将详细介绍Oracle数据库的体系结构,帮助读者更好地了解Oracle数据库。
一、概述Oracle数据库的体系结构分为三层:物理层、逻辑层和视图层。
物理层描述了数据在物理介质上的存储方式和管理方式;逻辑层主要由Oracle数据库的核心服务组成,该层体现了Oracle数据库的最核心功能;视图层则提供给应用程序用户和管理员使用,是Oracle数据库的最外层。
二、物理层Oracle数据库的物理层包括数据文件、控制文件和重做日志文件。
其中,数据文件用于存储数据表、索引和其他对象的数据;控制文件则记录了数据库的结构信息和操作日志,是维护数据库一致性和恢复数据的关键元素;重做日志文件用于记录正在进行的操作和已经完成的操作,以便在系统崩溃或停机时进行恢复。
三、逻辑层Oracle数据库的逻辑层包括多个服务组件,如SQL解析器、优化器、缓存池、锁管理器、存储管理器等。
其中,SQL解析器用于解析SQL语句,将其转换成可执行的优化器,并进行语法和语义检查;优化器则负责分析并优化SQL执行计划,以提高查询效率;缓存池用于存储查询结果和表空间等数据对象,提高查询响应速度;锁管理器则负责管理并发访问,防止数据冲突,保证数据库的一致性和稳定性。
四、视图层Oracle数据库的视图层提供了多种视图和接口,包括SQL*Plus、SQL Developer、Toad等。
其中,SQL*Plus是Oracle自带的命令行工具,提供简单的SQL语句执行和结果输出;SQL Developer是Oracle 提供的图形化界面工具,提供更为便捷的数据库管理和开发支持;Toad则是第三方软件,提供了更为强大和灵活的数据库管理和开发支持。
五、总结Oracle数据库作为目前世界领先的企业级关系数据库管理系统,其体系结构设计合理,层次清晰,提供了完备的物理、逻辑和视图三层管理机制,为企业级应用系统提供了高效、可靠、稳定的运行环境和数据服务。
oracle体系结构简介
oracle体系结构简介一、物理存储结构1、数据文件存放数据库数据,以dbf为扩展名。
将数据放在多个数据文件中,再将数据文件分放在不同的硬盘中,可以提高存取速度。
数据文件由数据块构成,块大小由数据库创建时确定。
2、重做日志文件,以rdo为扩展名。
含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。
一个数据库至少需要两个重做日志文件。
重做日志在日志文件中以循环的方式工作。
有归档日志模式和非归档日志模式。
3、控制文件,以ctl或ctrl为扩展名。
控制文件维护数据库的全局物理结构,记录数据库中所有文件的控制信息,每个数据库至少要有一个控制文件,建议用户使用两个或更多控制文件,并存放在不同的磁盘上。
Oracle系统通过控制文件保持数据库的完整性,以及决定恢复数据时使用哪些重做日志。
4、参数文件,以ora为扩展名。
在一个数据库启动时,每个参数都有一个默认值,而参数文件中的设置值被用来更改默认值,参数值极大影响了oracle如何去执行其不同的任务。
参数文件包括以下几种:<1>、初始化参数文件。
当创建一个数据库时,oracle创建了一个默认的init.ora文件,如果不修改任何参数,oracle将用所有的缺省值来启动数据库,通常根据实际的应用修改参数设置以提高性能。
<2>、配置参数文件。
一般被命名为config.ora,它被用于特定实例的信息。
这个文件是一个由init.ora文件调用或激活的文本文件,init.ora中包含一个ifile参数以设置config.ora文件的位置。
既然一个数据库可以有一个或多个实例与之关联,那么配置文件中每一个参数对于不同的实例配置可能不同,当然,如果和数据库关联的实例只有一个,所有信息都保存在文件init.ora中,那么config.ora文件就不是必需的了。
<3>、服务器参数文件(spfile)。
它被设计为一个服务器端的参数文件,可以被认为是在oracle数据库服务器执行的机器上被管理的初始化参数的仓库。
Oracle数据库体系结构详解
Oracle体系结构详解(上)一、oracle数据库的整体架构由上图可知,oracle数据库由实例和数据库组成。
二、数据库存储结构:2.1数据库存储结构Oracle数据库有物理结构和逻辑结构。
数据库的物理结构是数据库中的操作系统文件的集合。
数据库的物理结构由数据文件、控制文件和重做日志文件组成。
数据文件:数据文件是数据的存储仓库。
联机重做日志文件:联机重做日志文件包含对数据库所做的更改记录,在发生故障时能够恢复数据。
重做日志按时间顺序存储应用于数据库的一连串的变更向量。
其中仅包含重建(重做)所有已完成工作的最少限度信息。
如果数据文件受损,则可以将这些变更向量应用于数据文件备份来重做工作,将它恢复到发生故障的那一刻前的状态。
重做日志文件包含联机重做日志文件(对于连续的数据库操作时必须的)和归档日志文件(对于数据库操作是可选的,但对于时间点恢复是必须的)。
查看系统的redo log的信息SQL> select group#,sequence#,bytes,members,status from v$log;GROUP# SEQUENCE# BYTES MEMBERS STATUS---------- ---------- ---------- ---------- ----------------1 22 524288001 INACTIVE2 23 524288001 CURRENT3 21 524288001 INACTIVESQL> select member from v$logfile;MEMBER/u01/app/oracle/oradata/hnzk/redo03.log/u01/app/oracle/oradata/hnzk/redo02.log/u01/app/oracle/oradata/hnzk/redo01.log控制文件:控制文件包含维护和验证数据库完整性的必要的信息。
Oracle数据库体系结构(详细版)
Oracle体系结构Oracle核心竞争力可扩充性:Oracle系统有能力承担增长的工作符合,并且相应的扩充系统资源利用情况。
可靠性:无论出现系统资源崩溃,电源断电还是系统故障的时候,我们都可以对Oracle进行配置。
以保证检索用户数据事务处理的时候,不受到影响。
可管理性:数据库管理员可以微调Oracle使用内存的方式,以及Oracle向磁盘写入数据的频率。
并且管理可以调整,数据库为连接到数据库的用户分配操作系统进程的方式。
Oracle总体结构分为三个部分第一部分:系统全局区(SGA)第二部分:程序全局区和后台进程第三部分:Oracle的文件如果从功能上划分的话:存储结构:由这些文件就构成了Oracle的物理存储结构。
内存结构:使用内存最多的是SGA,也是影响数据库系统性能最大的一个参数。
进程结构:前台进程服务进程和用户进程,是根据实际需要而运行的,并在需要结束后立刻结束。
后台进程是指Oracle数据库启动后自动启动的几个操作系统进程。
存储结构包括物理结构和逻辑结构,既独立又相互联系的。
物理结构:是和操作系统平台有关的。
逻辑结构:逻辑存储结构是和操作系统平台无关的。
_______________________________________________________________________________这个图是两种存储结构中的对应关系表空间包括系统表空间和用户表空间。
表空间也是最大的逻辑单位。
块是最小的一个逻辑单位。
逻辑结构的表空间对应着物理结构的数据文件,也就是创建表空间的时候要给它指定数据文件,但是一个表空间可以对应多个数据文件。
表空间的大小也就是他包含的数据文件大小的总和。
数据文件呢同时又对应着操作系统中的数据块,数据文件也是以数据块的形式,存在于操作系统中。
逻辑结构中的块也对应着操作系统的数据块。
——————————————————————————————————————— 物理存储结构Oracle的物理存储结构,也就是Oracle的数据库文件数据库文件又分为主要文件和其他文件主要文件:首先来看数据文件:就是物理存储Oracle数据库数据的文件有一下特点:◆每一个数据文件,只与一个数据库相关联。
Oracle体系结构详解
Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白。
如图:一、基本组成:Oracle server:一般情况下是一个instance和一个database组成1个instance只能对应一个数据库。
特殊:1个数据库可以有多个instance(rac)一台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应一个instance,也可以理解成每个数据库只有一个SID 。
利用DBCA建出的每个库都是相对独立的,在同一服务器上如果创建多库必须将环境变量的参数文件做区分,并且在对实例切换时需如下操作:connect 用户名/密码@实例的服务名Oracle Instance:是由内存(SGA)和后台进程(backupground Process)组成通过instance来访问database一个实例只能打开一个数据库Oracle database:数据文件(Data files):数据文件永远存储数据库的数据,包括数据字典、用户数据(表、索引、簇)、undo数据等重做日志(Redo log):“先记后写”重做日志用于记录数据库的变化,当进行例程恢复或介质恢复时需要使用重做日志执行DDL或DML操作时,事物变化会被写到重做日志缓冲区,而在特定的时刻LGWR会将重做日志缓冲区中的内容写入重做日志。
控制文件(Control file)控制文件用于记录和维护数据库的物理结构,并且每个Oracle数据库至少要包含一个控制文件。
归档日志(Archive log):是非活动(Inactive)重做日志的备份。
口令文件(Password file):用于验证特权用户(具有SYSDBA、SYSOPER权限的特殊数据库用户)参数文件(Parameter file):用于定义启动实例所需要的初始化参数,包括文本参数文件(pfile)和服务器参数文件(spfile)(二进制文件放入裸设备,引入spfile)User and Server process :在执行sql语句时产生的进程,每一个连接,oracle server创建一个session,产生一个server process,在client发起一个connection时就产生了一个user process。
Oracle的体系结构
•临时表空间所对应的临时数据文件是一类比较特殊的数据文件。 •临时文件的信息只能通过数据字典视图DBA_TEMP_FILE和动 态性能视图V$TEMPFILE来查看;不能像普通数据文件一样通过 DBA_DATA_FILES和V$DATAFILE视图来查看。
3.物理存储结构
3.2控制文件
数据库控制文件是一个很小的二进制文件,在其中包含了关 于数据库物理结构的重要信息。通过在加载数据库时读取控 制文件,Oracle才能找到自己所需的操作系统文件(数据文 件、重做日志文件等)。
当一个段中的所有空间被使用完后,系统将自动 为该段分配一个新的盘区。
2.逻辑存储结构
2.3段
段是由一系列盘区组成,它也不再是存储空间的 分配单位,而是一个独立的逻辑存储结构。
对于具有独立存储结构的对象,它的数据全部存 储在保存它的段中。一个段只属于一个特定的数 据库对象,每当创建一个具有独立段的数据库对 象时,Oracle将为它创建一个段。
5.实例的进程结构
5.1用户进程
用户执行一个Oracle应用程序或启动一个Oracle工具(如 SQL*Plus)时,创建一个用户进程来执行相应的用户任务。 相关概念:
(1)连接:是一个用户进程与数据库实例之间的一条通信路径, 这条通信路径通过操作系统平台中的进程间通信机制或网络连接来 实现。
3.物理存储结构
3.3重做日志文件
重做日志文件是记录数据库中所有修改信息的文件
1.修改前的数据 2.修改后的数据 当满足一定条件时先将修改操作所产生的重做记录写入重做日志文件 中,然后才将内存中的修改结果成批的写入数据文件,最后再提交事 务。 重做日志文件是由重做记录组成的,重做记录是由修改向量组成的。 当用户执行一条update语句对某一个表中的记录进行修改时,会生成 一条记录。这条记录用多个向量记录下了被这条语句修改过的各个数 据块中的信息。
Oracle体系结构
Oracle体系结构一、物理结构二、逻辑结构三、内存结构四、数据库实例与进程五、数据字典一、Oracle 的物理结构Oracle 数据库文件包括数据文件、日志文件、控制文件、配置文件数据文件(1)用来存储数据库中的全部数据,如数据库表中的数据和索引数据。
通常为后缀名为.dbf格式的文件。
(2) 每个Oracle 可以有一个或多个数据文件,一个数据文件只能属于一个数据库。
(3) 每个数据文件又由若干物理块组成;(4) 一个或多个数据文件组成表空间;日志文件(重做日志文件)(1)用于记录数据库所做的全部变更(如增加、删除、修改),以便在系统发生故障时,用它对数据库进行恢复。
名字通常为Log*.dbf格式。
控制文件(1)用于打开和存取数据库。
(2)是较小的二进制文件,记录了数据库的物理结构,如:数据库名、数据库的数据文件和日志文件的名字和位置等信息。
(3)名字通常为Ctr*.ctl格式,如CtrlCIMS.ctl。
(4)控制文件中的内容只能够由Oracle本身来修改。
(5)每个数据库必须至少拥有一个控制文件。
一个数据库也可有多个控制文件,但是一个控制文件只能属于一个数据库。
配置文件:(1)是一个ASCII文本文件,记录Oracle 数据库运行时的一些重要参数。
(2)名字通常为initsid*.ora格式,如:initCIMS.ora,(3)SID相当于它所控制的数据库的标识符。
(4)每个Oracle数据库和实例都有它自己惟一的init.ora 文件。
二、Oracle 的逻辑结构逻辑结构描述了数据库从逻辑上如何来存储数据块中的数据。
包括表空间、段、区、数据块和模式对象。
逻辑结构支配一个数据库如何使用系统的物理空间,模式对象及其之间的关系则描述关系数据库之间的设计。
一个数据块从逻辑上是由一个或多个表空间组成,表空间是数据块中物理编组的数据仓库,每个表空间由段构成,段由一组区组成,一个区由连续的数据块组成。
ORACLE体系结构逻辑结构-表空间、段、区和数据块
ORACLE体系结构逻辑结构-表空间、段、区和数据块转⾃:⼀、Oracle的逻辑结构Oracle的逻辑结构是⼀种层次结构。
主要由:表空间、段、区和数据块等概念组成。
逻辑结构是⾯向⽤户的,⽤户使⽤Oracle开发应⽤程序使⽤的就是逻辑结构。
数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系。
1.数据块(Data Blocks)1.1 数据块是Oracle最⼩的存储单位,Oracle数据存放在“块”中。
⼀个块占⽤⼀定的磁盘空间。
特别注意的是,这⾥的“块”是Oracle的“数据块”,不是操作系统的“块”。
1.2 Oracle每次请求数据的时候,都是以块为单位。
也就是说,Oracle每次请求的数据是块的整数倍。
如果Oracle请求的数据量不到⼀块,Oracle也会读取整个块。
所以说,“块”是Oracle读写数据的最⼩单位或者最基本的单位。
1.3 块的标准⼤⼩由初始化参数DB_BLOCK_SIZE指定。
具有标准⼤⼩的块称为标准块(Standard Block)。
块的⼤⼩和标准块的⼤⼩不同的块叫⾮标准块(Nonstandard Block)。
1.4 操作系统每次执⾏I/O的时候,是以操作系统的块为单位;Oracle每次执⾏I/O的时候,都是以Oracle的块为单位。
1.5 Oracle数据块⼤⼩⼀般是操作系统块的整数倍。
1.6 数据块的格式(Data Block Format)块中存放表的数据和索引的数据,⽆论存放哪种类型的数据,块的格式都是相同的,块由块头(header/Common and Variable),表⽬录(Table Directory),⾏⽬录(Row Directory),空余空间(Free Space)和⾏数据(Row Data)五部分组成块头(header/Common and Variable):存放块的基本信息,如:块的物理地址,块所属的段的类型(是数据段还是索引段)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的状态,这段时间内的修改将失效,由 undo 回退。整个系统回退到一个完整的正 常状态。 只有 LGWR 写完成时 commit 操作才算完成,因此不会出现提示 commit 完成而没 有将相应的日志写入。可以对应这种情况:当提交 commit 命令后,系统提示操作 生效,而此时由于内容不多,操作的结果都由系统暂时存在内存中而没有即时写入 磁盘,而此时系统崩溃,则内存中的数据丢失,而磁盘上也没有保留,则在下次启 动时,系统会自动调用 SMON 进程进行恢复,从而不会使真正更新过的数据得不 到保留。 3、SMON 系统监控进程 作用:1)实例恢复(由系统自动调用):a、将 redo log 文件中提交的信息重做一 遍 b、将没有提交的信息进行回退,即 undo;c、将数据库打开,用户可以登录 2)回收临时段 3)每 3 秒回收一次自由空间,合并自由空间 4、PMON 进程监控进程 作用:检查到别的进程失败后清理垃圾用的:回退事务、释放锁、回收释放资源、 报告失败信息。 5、CKPT 检查点进程,在检查点发生时启动 作用:1)当检查点发生时通知 DBWn;2)使用检查点的信息来更新数据文件头; 3)用检验点的信息来更新控制文件 可选的:ARCn:归档进程,在归档方式下才有该进程,将写满的 log file 写出来,写到 ARC01.file 等文件中;REC0:恢复进程,运行在分布式环境下;LCKn:锁进程,在并行服务 器方式下。
Database buffer Dirty buffer:存放已经修改并且 commit 但仍未写入磁盘的信息 Free buffer :内存与磁盘上对应信息一致的(如已经写入磁盘后的) Pinned buffer:正在更新,尚未提交 所有的数据更新都首先与 data buffer 交互,然后才能与磁盘交互,Oracle 的 I/O 最 小单位为 block(块),而不是以数据为单位,因此都要经过 data buffer 的缓冲。 当读入时存入 free buffer,当 free buffer 不足时系统将 dirty buffer 中存入磁盘而变为 free buffer, Data buffer 由 db_cache_size 决定大小。主要是为了提高操作数据的效率,缓冲区 采用最近最少使用淘汰算法(LRU)
后台进程:主要有:DBWR,LGWR,SMON,PMON,CKPT 此为必须的,其他的如 ARCn,RECO,LCK 等 是可选的。在实例启动时启动。
1、DBWn:表示最多可以产生 10 个 DBWR 进程,命名为 DBW0..DBW9 作用:将 database buffer 的 buffer cache 中的内容写入磁盘,当单 CPU 时只能有一个 DBW0,当有多个 CPU 时才能有多个 DBWR 进程。 启动条件:一般情况下 DBWR 进程都处于休眠状态,当满足条件时才启动:
当 U2 发出 commit 命令时则启动 log writer 的 LGWR 进程,将 U1,U2 的修改前后 信息写入 log 文件,当发生错误而恢复时,有专门的进程(SMON)使用 log 文件进 行恢复,根据错误发生的记录进行 redo 操作,利用回退段 undo,使错误发生前没 有提交的操作全部撤销,从而得到一个完整的正常系统状态。级若 U2 提交了 commit 而 U1 没有提交,那么此时发生故障,要进行恢复,则 U2 可以恢复到当前 commit 后的状态,所有 U2 以前的操作将保留有效,而 U1 则回退到上一个 commit
三、内存结构
主要分为:PGA 区,SGA 区 PGA 区:程序的全局区,不可共享,存放用户信息。在服务进程启动时启动 SGA 区:系统全局区,为所有用户共享;在实例启动时分配,是实例的基本组成部分
Shared pool 大小由 Shared_pool_size 决定 Data Dictionary cache:数据字典缓冲区,在数据库启动时将最常用的数据字典存入 缓存区,在系统启动时即放入 Library cache :库缓冲区:缓存 SQL 脚本,分析表,方案等,PL/SQL 的过程;分为: SQL 区,PL/SQL 区;使用最近最少使用淘汰算法(LRU)
服务器进程:客户端连入时服务器完成客户端的请求操作 直接与 Oracle 服务器交互,接收用户进程的请求,完成操作并返回结果。服务器有专用 服务器、共享服务器两种方式: 专用服务器:服务器进程与用户进程一一对应,但由于资源总量有限,服务器进程 的总量是有限的,因此连入的数量也是有限的,当达到上限时用户无法连入。 共享服务器:系统启动时即创建一定数量的服务器进程,当用户连入时,选择空闲 的服务器进程为之服务,而且共享服务器中服务器进程也是可以动态生成的,可以 设置服务器进程生成的最大数量。
除了上面三类文件还有:Parameter file(参数文件),Password file(口令文件),Archived log files(归档文件)等 参数文件:有二进制、文本两种,用于设定参数的值。二进制参数文件可以及时更改,即时生 效;文本参数文件需重启 口令文件:可用 orapwd.exe 建口令文件。拥有 sysdba 权限的用户存在口令文件中,数据库未 打开时即可使用,而普通用户需要数据库启动后方可登陆 可以 connect 用户名/口令 as sysdba 归档文件:存 放归档的日志文件等,即有日志文件循环满时拷贝出去归档。在一个日志文件写 满切换到另一个日志文件的同时联机的日志文件将拷贝出归档,并更新序列号(每换 一次,序 列号加 1)。若数据库允许归档方式的恢复时系统会自动生成归档文件,可用于恢复数据库, 恢复到错误之前的点上。
Oracle 数据库
是作为整体的数据集,由三类文件组成:Data files, Control files, Redo log files
二、物理结构
主要由三类文件组成:data files ,control files,redo-log files
1.data files: 数据文件,存放基本表信息(即表中数据等)、索引信息(系统内建有索引 表)、回退信息(主要为数据的 rollback)、临时信息(如有 orderby 等操作时系统有临时信 息)、系统引导信息(如数据字典等) 2、control files:控制文件(二进制的)。存放库物理结构、库名、库创建日期、序列号 (存有同步信息);控制文件至少有两个一摸一样的,用做备份用参数 Control files=/../../文件名 1,/../../文件名 2;指定 3、redo log files:回退日志文件,存放修改前后的信息,主要用于数据的恢复,一个数据 库至少有两个 redo log files 文件,以便可以循环记录信息 注:三类文件都有序列号,必须同步才能使用,且已 Control files 中的序列号为准,其他的 必须与其保持一致
撤销段:作 commit 操作后其中的信息就没用了,自动被重用;作 rollback 时就要用到其中 的信息,回退后该段空间又可被重用。 I/O 的最小单位是块,而分配的最小单位是区,一个区由一个或多个块组成。 建表时系统先分配:initial extent 空间,当不断插入数据使空间满时,将再次自动分配空间 next extent,当再次不足时将再次自动分配 next*(1+PCTINCREASE),再次将为 next*(1+PCTINCREASE)2,下次将为 next*(1+PCTINCREASE)3;如此下去。其中,next 是设定 额下一个分配的空间大小,PCTINCREASE 则为递增的比例。另有:maxextent=100,设置最多 只能分配 100 个区,minextents 表示建好表后最少要分配几个区。Initial extent, next extent, PCTINCREASE,maxextent,minextents 一个区的五个参数,与 datafile 里的五类信息相对应。 当插入数据受限时有可能是下列原因:
Redo log buffer 记录了对数据库数据的所有更改,主要是为了恢复
Java pool(可选) 当前端为 java 开发时,需手动设置,用于记录 java 代码
Large pool(可选) 当为共享服务器时,需手动设置(使用的不是 LRU 管理)
控制参数: SGA_MAX_SIZE :设置 SGA 区的大小,可以动态调整 Db_cache_size :设置 database buffer 的大小 Shared_pool_size 设置 shared pool 大小e 实例=SGA 区+后台进程 oracle 服务器=oracle 实例+oracle 数据库 数据库实例启动实质上即为:分配 SGA 区,启动后台进程
Oracle 实例
1、是访问 Oracle 数据库的一种方式 2、通常只开一个且仅开一个数据库 3、由内存结构和进程结构组成,即 SGA 区+后台进程 连接 Oracle 实例:包括建立用户连接和创建会话
1、table space 占用完,即没有了表空间 2、分区数达到上限,此时可以调高上限,即调高 maxextents 的值 3、当 maxextents 值达到系统设定的上限时,可以重新建表空间,调高 initial extent 逻辑结构与物理结构的对应 物理上数据库由 data files,redo log files,control files 组成,任何一个表空间至少对应一个或 多个 data files,多个 data files 的总和即为表空间的大小,所以当表空间的大小不足时解决的 办法之一可以是再增加 data files,而一个 data files 只能对应一个表空间。段不可以跨越表 空间,但可以跨越同一个表空间的不同的 data files,段的所有信息都存在 data files 文件 中。
1)没有 free buffer 时,即没有空闲 buffer 则需要写回磁盘。 2)dirty buffers 中数据达到一定阀值时。 3)超时发生时(默认 3 秒) 4)检查点发生 5)RAC ping 连接请求 6)表空间 offline 7)表空间 read only 8)表 drop 或 TRUNCATE 9)表空间开始备份 在以下情况下检查点会发生:1)日志切换 2)用户发命令强制产生检查点 3)数据 库关闭时:以 normal, transactional, immediate 方式,4)某表空间转为 offline 2、Log writer(LGWR) 作用:将 log buffer 里的内容写入 log 文件 启动条件: 1)buffer 中的数据量达到 1/3. 2)数据量达到 1m 3)时间间隔到时(规定的时间间隔是 3s) 4)检查点发生 5)在 DBWn 写之前 6)commit 命令 其实:检查点发生则 DBWn 将启动