数据库概论

来源:互联网 发布:在手机淘宝上如何开店 编辑:程序博客网 时间:2024/06/05 20:00

数据库的组成
关系型数据库的先驱之一
1977年,Larry Ellison与Bob Miner和Ed Oates在硅谷共同创办了SDL,后更名为RSI(1982年更名为Oracle)
1979年在VAX机器上第一个商业关系型数据库
1983年,第3版。Miner和Scott历尽艰辛用C语言写就。第一款在PC机、小型机及大型机上运行的便携式数据库
1986年Oracle5支持C/S结构和分布式数据库
1988年Oracle6支持事务处理和PL/SQL
1992年Oracle7支持MTS和Oracle Parallel Server

支持面向对象和物联网技术
1997年Oracle8支持CORBA和面向对象、支持分区技术
1999年Oracle8i面向internet,支持sqlj和多媒体2000
2001年Oracle9i支持RAC、集成了OLAP、Data Mining

网格计算和云技术
2003年Oracle10g支持网格计算、集成CRS和ASM
2007年Oracle11g持续发展的网格计算、集成RAT、高级数据压缩和Active DataGuard等技术
2012 年,Oracle发布Oracle 12c OEM、可插拔数据库
2013 年,Oracle发布 Oracle 12c!
数据库的选件:
Real Application Clusters 集群数据库
Partitioning 数据分区
Enterprise Manager Packs 高级管理工具包
Advanced Security 强大的验证与加密
Label Security 基于行标签的安全性
Database Vault 高级数据库安全访问控制
Audit Vault 数据库集中审计
高级压缩(11g) 全面高效的数据压缩技术
闪回与Total Recall(11g) 高级的数据跟踪功能
DataGuard与Active DataGuard(11g) 灾备同步数据查询
Real Application Testing(11g) 系统测试和SQL性能分析
TimesTen Oracle内存数据库
Spatial Oracle空间数据库管理
Oracle Lite Oracle移动数据库
Berkeley Db Oracle嵌入式数据库
Oracle Database管理的主要任务
安装Oracle数据库软件
创建数据库
升级数据库和软件
启动和关闭数据库实例
管理数据库存储结构
管理用户和权限
管理数据库方案对象
备份和恢复
监控数据库并预防问题发生
监控并优化数据库性能
数据库管理工具
Oracle Universal Installer (OUI)
Database Configuration Assistant (DBCA)
Database Upgrade Assistant (DBUA)
Oracle Net Manager
Oracle Enterprise Manager (OEM)
SQL*Plus and iSQL*Plus
Recovery Manager (RMAN)
Data Pump
SQL*Loader
数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制
Oracle服务器提供开放、全面和综合的信息管理。
一个Oracle server包括一个Oracle实例(Instance)和一组数据库文件(Database files,Oracle数据库)
Oracle 实例是后台进程和内存结构的集合
内存
进程
数据文件
数据库结构
数据文件
每个Oracle数据库必须至少包含一个数据文件。一个Oracle数据文件对应于磁盘上的一个物理操作系统文件。Oracle数据库中的每个数据文件只能是一个表空间中间的一员,然而,一个表空间可以由多个数据文件组成。
数据库中的所有数据最终都驻留在数据文件之中,数据文件中频繁访问的块缓存在内存中。
重做日志文件
无论何时在表、索引、或者其它Oracle对象中添加,删除或者改变数据,都会将一个条目写入到当前的重做日志文件。每个Oracle数据库必须至少有2个重做日志文件,因为Oracle以循环的方式重复使用重做日志文件。当一个重做日志文件填满重做日志条目的时候,就会发生切换,使用一个新的重做日志文件。
如果数据库发生崩溃,那么数据库缓冲区缓存中新添加的或者更新的数据块就有可能还没有写入到数据文件中,重新启动Oracle实例时,通过前滚操作将重做日志文件中的条目应用于数据库数据文件,从而将数据库的状态恢复到发生故障时的情况。
控制文件
每个Oracle数据库至少有一个控制文件,用户维护数据库的元数据,即,有关数据库自身物理结构的数据,它包括以下内容:
数据库名称
数据库创建日期
数据文件和重做日志文件的名称和位置
表空间名称
Rman信息
重做日志文件
无论何时在表、索引、或者其它Oracle对象中添加,删除或者改变数据,都会将一个条目写入到当前的重做日志文件。每个Oracle数据库必须至少有2个重做日志文件,因为Oracle以循环的方式重复使用重做日志文件。当一个重做日志文件填满重做日志条目的时候,就会发生切换,使用一个新的重做日志文件。
如果数据库发生崩溃,那么数据库缓冲区缓存中新添加的或者更新的数据块就有可能还没有写入到数据文件中,重新启动Oracle实例时,通过前滚操作将重做日志文件中的条目应用于数据库数据文件,从而将数据库的状态恢复到发生故障时的情况。
初始化参数文件
当数据库实例启动时,分配Oracle实例的内存,并且打开两种初始化参数文件中的一种,基于文本的文件,称为init.ora(称为pfile),或者是服务器参数文件(称为spfile)。实例首先寻找spfile,其次寻找pfile。
初始化参数文件包括了跟踪文件,控制文件等等的位置,各种内存大小的限制,以及限制有多少用户可以同时连接到数据库
归档的重做日志文件
Oracle数据库有两种模式:archivelog和noarchivelog模式。
当数据库处于noarchivelog模式下时,重做日志文件不断的被重复使用,当一个重做日志文件被写满时,所有信息就会被擦去,从头开始使用。
当数据库处于archivelog模式下时,当重做日志文件被填满时,数据库实例自动将已填满的重做日志文件发送到一个或者多个目的地,进行备份。这样,归档的重做日志文件可以在发生数据库故障后的任意给定时点中恢复数据库。
警告日志文件
当数据库产生错误时,Oracle通常将相关信息写入到告警日志中去
数据库信息存储于SGA,由多个数据库进程共享
共享池
共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域
共享池由库缓存和数据字典缓存组成。
共享池的大小直接影响数据库的性能。
数据缓冲区
用于存储从磁盘数据文件中读入的数据,所有用户共享。
服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。
数据缓冲区的大小对数据库的读取速度有直接的影响。
日志缓冲区
日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。
当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。
相对来说,日志缓冲区对数据库的性能影响较小。
程序全局区(PGA)包含单个服务器进程所需的数据和控制信息
PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle 数据库连接的用户进程所需的信息
PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放
内存参数
日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。
系统全局区大小上限由参数SGA_MAX_SIZE决定
共享池大小由参数SHARED_POOL_SIZE决定
数据块高速缓冲区大小由参数DB_BLOCK_SIZE决定
日志缓冲区尺寸大小由参数LOG_BUFFER定义
JAVA_POOL_SIZE/LARGE_POOL_SIZE
必须的后台进程
DBWn PMON CKPT LGWR SMON RECO
可选择的后台进程
ARCn LMON Snnn QMNn LMDn
CJQ0 Pnnn LCKn Dnnn
进程监视器(Process Monitor,缩写PMON)
进程监视器是在用户进程失败是执行进程恢复,清理出现故障的进程。
PMON响应清除高速缓冲存储器和释放进程正在使用的资源。如PMON将回滚未提交的工作释放所有当前挂起的锁定,释放分配给失败进程的SGA资源。
PMON也检查调度器和服务器进程,如果他们已经失败则重新启动。
系统监控器 (System Monitor, 缩写SMON)
在实例失败之后,重新打开数据库时自动恢复实例。
整理数据文件的自由空间,将相邻区域结合起来,产生连续的自由空间,使之容易分配。
SMON清除不再使用的临时段。
数据库书写器(Database Writer, 缩写DBWR)
管理数据缓冲区,将最近使用过的块保留在内存中。
将修改过的块从数据库告诉缓冲存储器中写入数据文件。
虽然一个数据库书写器进程(DBW0)对于大多数系统已经足够了,但是用户可以配置附加的进程(DBW1 到DBW9)来提高有大量数据修改的系统写入性能。初始化参数DB_WRITER_PROCESSES 用来确定DBWn 进程的个数。
日志书写器(Log Writer,缩写LGWR)
日志书写器进程将重做日志纪录写入磁盘。重做日志纪录是在系统全局区的重做日志缓冲器中产生的。
LGWR 将重做重做日志纪录写入联机重做日志文件组中。日志纪录按顺序写入联机重做日志文件中。
检查点(Checkpoint,缩写CKPT)
在特定的时间,所有修改的系统全局区数据库缓冲器由DBWn将它们写入数据文件;这种情况叫做检查点。
检查点进程在检查点响应DBWn信号,更新所有的数据库的数据文件和控制文件到大多数最近的检查点。
给 DBWn 发信号
修改数据文件块头
修改控制文件信息
检查点(Checkpoint,缩写CKPT)
在特定的时间,所有修改的系统全局区数据库缓冲器由DBWn将它们写入数据文件;这种情况叫做检查点。
检查点进程在检查点响应DBWn信号,更新所有的数据库的数据文件和控制文件到大多数最近的检查点。
给 DBWn 发信号
修改数据文件块头
修改控制文件信息
存档器(Archiver, 缩写ARCn)
当ARCHIVELOG模式被设置时自动归档联机重做日志文件。
一个或多个存档器进程在联机重做日志满了或日志切换发生时,将它们拷贝到归档存储中。
保存所有数据库变化。
可选择的后台进程。
恢复器(Recover, 缩写RECO)
恢复器用来解决在分布数据库中由于网络或系统失败而挂起的分布事务。
在一定的时间间隔里,本地的RECO视图连接远程得数据库,并自动地完成提交或任何挂起的分布事务的本地端口的回滚。
调度器(Dispatcher,缩写Dnnnn)
调度器是后台进程的选项,只有在多线程服务器(MTS)配置使用时才给出。
表空间(TableSpace)
表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。
每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。
表空间的大小等于构成该表空间的所有数据文件大小之和。
Oracle基本的表空间有以下几种:
系统表空间,主要存放数据字典和内部系统表和基表
临时表空间,顾名思义,这是用来存放临时数据的,例如排序操作所需要的临时空间,它的空间会在下次系统启动时全部释放。
撤销表空间,主要用来存放一些回滚的信息。
数据表空间,主要存放数据信息。
段 (Segments)
段是构成表空间的逻辑存储结构,段由一组区组成。
段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。
一个段只能属于一个表空间,当然一个表空间可以有多个段。
表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件发生关系。
一个段可以属于多个数据文件,关于段可以指定扩展到哪个数据文件上面。
按照段所存储数据的特征,将段分为四种类型:
数据段(Data Segment)
索引段(Index Segment)
回滚段(Rollback Segment)
临时段(Temporary Segment)
区 (Extents)
区间是数据库中的下一个逻辑分组级别。当扩大数据库对象时,为该对象增加的空间分配一个区间。
区间是为数据一次性预留的一个较大的存储空间,直到那个区间被用满,数据库会继续申请一个新的预留存储空间,即新的区间,一直到段的最大区间数(Max Extent)或没有可用的磁盘空间可以申请。
区为段分配空间,它由连续的数据块组成。
当段中的所有空间已完全使用时,系统自动为该段分配一个新区。
区不能跨数据文件存在,只能存在于一个数据文件中。
块(Block)
数据块是Oracle服务器所能分配、读取或写入的最小存储单元。
Oracle服务器以数据块为单位管理数据文件的存储空间。
Oracle最基本的存储单位,是OS数据块的整数倍。
Oracle的操作都是以块为基本单位,一个区间可以包含多个块(如果区间大小不是块大小的整数倍,Oracle实际也扩展到块的整数倍)。
模式(Schema)
模式是对用户所创建的数据库对象的总称。
模式是一种命名的对象集合。
一个用户被创建,对应的模式就被创建。
一个用户仅仅对应一个模式。
用户名其实就等同于模式名。
模式对象包括表、视图、索引、同义词、序列、过程和程序包等。
索引(Index)
索引是供用户快速查找到记录的数据库结构。索引(index)是与表和簇相关的一种选择结构。
Oracle中主要有簇索引、表索引、位图索引三种索引形式。
索引是为提高数据检索的性能而建立,利用它可快速地确定指定的信息。
Oracle索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。
索引可建立在一表的一列或多列上,一旦建立,由Oracle自动维护和使用,对用户是完全透明的。
索引是逻辑地和物理地独立于数据,它们的建立或删除对表没有影响,应用可继续处理。
索引数据的检索性能几乎保持常数,而当一表上存在许多索引时,修改、删除和插入操作的性能会下降。
视图(View)
可以理解为固化的查询或者没有数据存储的表,它是一组表的查询结果集合,对应用来说是独立的结构,除没有数据存储以外,拥有和表同样的属性。
视图允许用户查看单独表或者多个连接表中数据的的自定义表示。
它是原始数据库数据的一种变换,查看表中数据的另外一种方式。
视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。
那些用于产生视图的表叫做该视图的基表。
一个视图也可以从另一个视图中产生。
视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。
通过视图看到的数据存放在基表中。视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。
物化视图(Materialized View)
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。
物化视图的类型ON DEMAND、ON COMMIT。二者的区别在于刷新方法的不同:
ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;
而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。
物化视图可以分为以下三种类型:
包含聚集的物化视图;
只包含连接的物化视图;
嵌套物化视图。
三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。
同义词(Synonyms)
在分布式数据库环境中,要完全识别一个对象,必须指出对象的主机、属主等信息,为了简化这一过程,可以对这些对象建立同义词,引用这些同义词时系统自动转义成对原始对象的引用。
数据库链路(Database Link)
引用其他数据库的数据时,需要指明详细路径,链路就是详细路径的识别名。