现在的位置: 首页 > 综合 > 正文

Oracle数据库体系结构

2013年07月21日 ⁄ 综合 ⁄ 共 2269字 ⁄ 字号 评论关闭

Oracle服务器

 

◆ 是一个数据库管理系统,它提供开放、全面、集成的方法进行信息管理。

 

◆ 有Oracle实例和Oracle数据库组成。

 

Oracle 数据库体系结构

Oracle 服务器是进行信息管理的关键。通常,Oracle 服务器必须可靠地管理多用户环境中
的大量数据,大多数用户才能并发访问同一数据。这一点必须实现才能提供高性能。另外,
Oracle 服务器必须阻止未授权的访问,并且在进行故障恢复时提供有效的解决方案。

数据库结构
每一个运行的Oracle 数据库都与一个Oracle 实例关联。在数据库服务器上启动数据库后,
Oracle 软件会分配一个称为系统全局区(SGA) 的共享内存区,还会启动若干个Oracle 后
台进程。这种由SGA 和Oracle 进程组成的组合就称为一个Oracle 实例。
启动实例后,Oracle 软件会将实例与特定的数据库关联。这个过程称为装载数据库。然后
可打开数据库,使得授权用户可访问数据库。在同一台计算机上可以并发执行多个实例,
每一个实例只访问它自己的物理数据库。
您可以将Oracle 数据库体系结构看作各种不同的、相互关联的结构化组件。
Oracle 数据库使用内存结构和进程来管理、访问数据库。所有内存结构都存在于构成数据
库服务器的计算机的主存中。进程指的是在这些计算机内存中运行的作业。进程被定义为
“控制线程”或操作系统中可以运行一系列步骤的一种机制。

 

Oracle 内存结构
与Oracle 实例关联的基本内存结构包括:
• 系统全局区(SGA):由所有服务器进程和后台进程共享
• 程序全局区(PGA):专用于每一个服务器进程或后台进程。每一个进程使用一个PGA
SGA 是包含实例的数据和控制信息的内存区。
SGA 包含以下数据结构:
• 数据库缓冲区高速缓存:缓存从数据库检索的数据块
• 重做日志缓冲区:高速缓存重做信息(用于实例恢复),直到可以将其写入磁盘中存
储的物理重做日志文件
• 共享池:缓存可在用户间共享的各个结构
• 大型池:是一个可选区域,可为某些大型进程(如Oracle 备份和恢复操作、I/O 服务
器进程)提供大量内存分配
• Java 池:用于Java 虚拟机(JVM) 中所有特定会话的Java 代码和数据
• Streams 池:由Oracle Streams 使用
通过使用Enterprise Manager 或SQL*Plus 启动实例,可以显示为SGA 分配的内存量。

程序全局区(PGA) 是包含每一个服务器进程的数据及控制信息的内存区。Oracle 服务器进
程为客户机的请求提供服务。每一个服务器进程都有自己专用的PGA,这个PGA 是在服
务器进程启动时创建的。由该服务器进程独占对PGA 的访问,PGA 只由对它自身执行操
作的Oracle 代码读写。
使用动态SGA 基础结构时,可以在不关闭实例的情况下更改数据库缓冲区高速缓存、共
享池、大型池和Java 池和Streams 池的大小。
Oracle 数据库使用初始化参数创建并配置内存结构。例如,SGA_TARGET 参数用于指定
SGA 可用的总空间量。如果SGA_TARGET 设置为0,则会禁用“自动共享内存管理”。

 

 

 

 

 进程结构
调用应用程序或Oracle 工具时,如调用Enterprise Manager 时,Oracle 服务器会通过创建
服务器进程来执行应用程序发出的命令。Oracle 服务器还会针对一个实例创建一组后台进
程。这些进程不仅彼此进行交互操作,还与操作系统进行交互操作,这样可以管理内存结
构,通过异步执行I/O 操作将数据写入磁盘,而且还可以执行其它所需的任务。存在哪些
后台进程取决于数据库中当前使用的功能。

 

 

Oracle 实例管理
Oracle 数据库服务器由Oracle 数据库和Oracle 实例组成。Oracle 实例由称为系统全局区
(SGA) 的内存结构和后台进程构成,这些后台进程可以处理实例运行中涉及的大量后台任
务。以下是最常见的后台进程:
• 系统监视器(SMON):出现故障后启动实例时执行崩溃恢复任务
• 进程监视器(PMON):用户进程失败时执行进程清理任务
• 数据库写进程(DBWn):将修改后的块从数据库缓冲区高速缓存写入磁盘中的数据
文件
• 检查点(CKPT):通过更新数据库的所有数据文件和控制文件指出最新的检查点
• 日志写进程(LGWR):将重做日志条目写入磁盘
• 归档进程(ARCn):发生日志切换时将重做日志文件复制到归档存储器

 

 

服务器进程和数据库缓冲区高速缓存
处理某个查询时,Oracle 服务器进程会在数据库缓冲区高速缓存中查找它所需的所有数据
块。如果未在数据库缓冲区高速缓存中找到数据块,服务器进程会从数据文件中读取数据
块,并在数据库缓冲区高速缓存中添加一个副本。因为关于同一数据块的后续请求可能会
在内存中找到该数据块,因此,这些请求可能不需要进行物理读操作。Oracle 服务器使用
最近用过的算法腾出最近未访问的缓冲区,以便在数据库缓冲区高速缓存中为新数据块提
供空间。
缓冲区高速缓存中的缓冲区可能处于以下四种状态之一:
• 已连接:可防止多个会话同时对同一数据块进行写操作。此时,其它会话正等待访
问该块。
• 干净:缓冲区现已解除连接,如果没有再次引用当前内容(数据块),该缓冲区是
可以立即腾出的候选项。此时,不是缓冲区的内容已与磁盘中存储的数据块内容同
步,就是缓冲区中包含块的一致读取(CR) 快照。
• 空闲或未使用:实例刚刚启动,缓冲区为空。此状态与“干净”状态非常相似,不
同之处在于缓冲区尚未使用。
• 灰数据:缓冲区不再处于已连接状态,但是内容(数据块)已更改,DBWn 必须先
将内容刷新到磁盘,才能腾出缓冲区。

抱歉!评论已关闭.