体系结构概念
索引:
1.数据库
数据库由处理数据文件的一组程序组成。Oracle 数据库中存放有两种类型的信息:用户数据、系统数据。
2.Oracle层次概念
层次:数据库、表空间、数据文件、表、数据。
解释数据库、表空间、数据文件、表、数据的最好办法是想象一个装满东西的柜子。数据库就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。表空间实质上就是组织数据文件的一种途径。
不要把多个应用系统的数据放在同一个表空间中。应用创建表空间时,应给一个便于区分的名字。
3.表空间类型
表空间是一个或多个数据文件的集合。类型如下:
- 系统表空间中保存用于管理Oracle系统自身及其中存放的数据所需的信息。这些表空间的名称是固定的。
- 临时表空间是Oracle中临时使用的区域。当特定事件发生时,Oracle需要用这些磁盘空间管理有关的事务。
- 工具表空间保存那些Oracle数据库上运行的工具软件所需的对象。
- 用户表空间中存放用户专用的数据库对象。
- 回滚表空间中存放数据库对象的回滚段。
- 数据和索引表空间中存放用户的应用数据。
4.重做日志(恢复日志)
Oracle数据库由两种类型的文件组成:
- 结合在一起构成表空间的数据文件。
- 结合在一起构成重做日志系列的数据文件。
除了与表空间联系紧密的数据文件外,Oracle还有另一个与其相关的称作联机重做日志(Online Redo Log)的操作系统文件。重做日志(Redo Log)也称作事务日志(Transaction Log),Oracle在这些特殊的操作系统文件中记录针对数据库进行的修改操作或事务。
对每一个Oracle数据库都要求至少具有两个联机重做日志。
Oracle 数据库可以在下列两种模式下运行:
- ARCHIVELOG模式下将保存所有的事务日志。
- NOARCHIVELOG模式下不保存旧事务日志。
5.控制文件
控制文件是一个非常小的文件,其中存放一些与Oracle数据库所有文件相关的关键信息。Oracle系统通过控制文件保持数据库的完整性(Integrity)以及决定恢复数据时使用哪些重做日志。
每个数据库中必须至少有一个控制文件,我们极力建议用户使用两个或更多的控制文件。
如果Oracle系统通过控制文件中的信息发现数据库不正常,数据库将不能正常运行。
每当出现数据库校验点(Checkpoint)或者修改数据库结构后,都要修改控制文件。如果没有合法的控制文件,数据库不能启动。
6.程序(进程)
两类Oracle进程:用户进程和服务器进程。
(1).用户进程
用户进程在用户方工作,它向服务器进程请求信息。Oracle Developer以及SQL *Plus都是用户进程的例子,都是用户与数据库通信实现数据交换和访问的常用工具。
(2).服务器进程
服务器进程接受用户进程发出的请求,并根据请求与数据库通信,通过这些通信完成用户进程对数据库中数据的处理要求。
(3).主要服务器进程
数据库写入进程(Database Writer, DBWR)是一个专用的进程,它将修改后的数据块写回数据库文件。它是仅有的两种能够对构成Oracle数据库的数据文件进行写入的进程之一。
校验点进程(CKPT)是一个可选进程。当重做日志交换(Switch)时,将出现校验点进程。在出现校验点进程时,Oracle要把内存中脏数据块中的信息写回磁盘。除此之外,Oracle还要将交换重做日志的情况通知控制文件。这些任务由校验点进程来完成。
日志写入进程(Log Writer, LGWR)是一个专门用于将重做项写入重做日志的进程。
系统监控进程(System Monitor, SMON)是在数据库系统启动时执行恢复工作的强制性进程。
进程监控进程(Process Monitor, PMON)是用于恢复失败的数据库用户的强制性进程,它先获取失败用户的标识,释放该用户占有的所有数据库资源,然后回滚中止(Abort)的事务。
归档进程(ARCH)是一个可选进程。当数据库工作在ARCHIVELOG模式时,日志交换时数据库会生成重做日志的拷贝。归档进程类似于拷贝机(Copy Machine),它产生文件的拷贝。
锁进程(Lock, LCKn)是一个可选进程。只有数据库运行在Oracle分布式选项下才能看到这个可选进程。在分布式事务中,分布在两个或更多地点的数据必须保持同步。
调度进程(Dispatcher, Dnnn)是一个可选的后台进程,仅在使用多线程服务器时出现。
作业队列进程(Job Queue Processes, SNPn)利用了Oracle的快照技术。这些进程不时被唤醒并对快照进行周期性更新。
队列监控进程(Queue Monitor Processes , QMNn)在支持Oracle8i的高级队列(Advanced Queuing ,缩写为AQ)选件时起作用,该选件在Oracle中实现了消息队列系统的集成。使用AQ,存储在数据库中的消息可以推迟或即时发送。
7.内存结构
Oracle使用两种类型的内存结构:一种是系统全局区(System Global Area),也称SGA;另一种是程序全局区(Program Global Area),也称PGA。
系统全局区
系统全局区(SGA)是Oracle数据库存放系统信息的一块内存区域。所有的用户进程和服务器进程都可以访问这个内存结构。
Oracle Server SGA 分为如下关键部件:
- 数据高速缓冲区(Data Buffer Cache):存放着Oracle系统最近使用过的数据库数据块。
- 字典高速缓冲区(Dictionary Cache (Row Cache)):用于保存数据字典(Date Dictionary)中的行。数据字典中存放Oracle系统管理自身需要的所有信息,这些信息包括:访问过Oracle数据库的用户、这些用户有哪些数据库对象以及这些数据库对象的位置等等。
- 重做日志缓冲区(Redo Log Buffer)。
- 共享SQL池(Shared SQL Pool):相当于程序高速缓冲区,所有的用户程序都存放在共享SQL池中。Oracle数据库中的所有程序都基于SQL语言。这个高速缓冲区中存放所有通过SQL语法分析、准备执行的SQL语句。
程序全局区
PGA是单个Oracle进程使用的内存区域。程序全局区不能共享,它含有单个进程工作时需要的数据和控制信息。有进程会话变量及内部数组等等。
8.Oracle实例
Oracle实例(Instance)是有自己的系统全局区和与其相关数据库文件的Oracle服务器进程集。
每个实例都要用称为SID(System Identifier,系统标识符)的符号来标识。绝大多数UNIX计算机是通过置变量“ORACLE_SID”设置的。每个服务器进程命名都与SID匹配。