Oracle服务器由Oracle实例和Oracle数据库组成
每一个运行的Oracle数据库都与一个Oracle实例关联。在数据库服务器上启动数据库后,Oracle软件会分配一个称为系统全局区还会启动(SGA)的共享内存区,还会启动若干个Oracle后台进程,这种SGA和Oracle进程的组合就称为一个Oracle实例
启动实例后Oracle软件会将实例与特定的数据库关联,这个过程称为装载数据库,在同一台计算机上可以并发执行多个实例,每一个实例只能访问自己的物理数据库
Oracle数据库使用内存结构和。进程来管理,访问数据库所有内存结构都存在于构成数据库服务器的计算机的主存中,进程指的是在这些计算机内存中运行的作业。
Oracle内存结构
系统全局区(SGA)由所有服务器进程和后台进程共享。
程序全局区(PGA)专用于每一个服务器进程后台进程。每一个进程使用一个PGA
SGA是包含实例的数据和控制信息的内存区。包含以下数据结构
数据库缓冲区高速缓存:缓存从数据库检索的数据块
重做日志缓冲区:高速缓存重做信息(用于实例恢复)知道可以将其写入磁盘中存储的物理
共享池:缓存可在用户间共享的各个结构
大型池:是一个可选区域,可为某些大型进程提供大量内存分配
Java池:用于Java虚拟机中特定会话的所有Java代码和数据
Oracle数据库服务器有Oracle数据库和Oracle实例组成。Oracle实例有SGA和台进程构成,
用户进程在数据库用户请求连接到Oracle服务器时启动
服务器进程可以连接到Oracle实例,它在用户建立会话时启动
后台进程在启动Oracle实例时启动
常见的后台进程
系统监视器(SMON):出现故障后,在启动实例时执行崩溃恢复任务
进程监视器:PMON用户进程失败时执行进程清理任务
数据库写进程DBWn:将修改后的块从数据库缓冲区高速缓存写入磁盘中的数据文件
检查点CKPT:通过更新数据库的所有文件和控制文件指出最新的检查点
日志写进程LGWR:将重做日志条目写入磁盘
归档进程:ARCn将重做日志文件复制到归档存储器
服务器进程和数据库缓冲区高速缓存
处理某个查询时,Oracle 服务器进程会在数据库缓冲区高速缓存中查找它所需要的所有数
据块。如果未在数据库缓冲区高速缓存中找到数据块,服务器进程会从数据文件读取数据
块,并在数据库缓冲区高速缓存中添加一个副本。因为对同一数据块的后续请求可能会在
内存中找到该数据块,因此,这些请求可能不需要执行物理读操作。Oracle 服务器使用最
近最少使用算法腾出最近未访问的缓冲区,以便在数据库缓冲区高速缓存中为新数据块提
供空间。
缓冲区高速缓存中的缓存区可能处于以下四种状态之一
已连接:可防止多个会话同时对同一数据块执行写操作
干净:缓冲区现已解除连接,如果没有在此引用当前内容,则可以立即释放缓冲区
空闲或未使用:实例刚刚启动时缓冲区为空,缓冲区尚未使用
脏:缓冲区不再处于已连接状态,但是内容(数据块)已更改,DBWn 必须先将内
容刷新到磁盘,才能腾出缓冲区。
构成 Oracle 数据库的文件可分为以下几类:
控制文件:包含有关数据库本身的数据(即物理数据库的结构信息)。这些文件对
数据库而言至关重要。没有这些文件,就无法打开用于访问数据库数据的数据文件。
数据文件:包含数据库中的用户数据或应用程序数据。
联机重做日志文件:可用来实现数据库实例恢复。如果数据库已崩溃但未丢失任何
数据文件,那么使用这些文件中的信息可以通过实例恢复数据库。
要成功运行数据库,以下附加文件非常重要:
参数文件:用于定义启动实例时如何配置实例。
口令文件:允许用户远程连接到数据库并执行管理任务。
备份文件:用于恢复数据库。当因介质故障或用户错误而损坏或删除了原始文件时,
通常需要还原备份文件。
归档日志文件:包含实例生成的数据更改(重做)的实时历史记录。使用这些文件
和数据库备份可以恢复丢失的数据文件。也就是说,使用归档日志可以恢复还原的
数据文件。
跟踪文件:每个服务器和后台进程都可以对关联的跟踪文件执行写操作。如果在进
程中检测到内部错误,进程就会将关于错误的信息转储到进程的跟踪文件中。写入
到跟踪文件中的某些信息专门供数据库管理员使用,另一些信息则供 Oracle 支持服务部门使用。
预警日志文件:是特殊的跟踪文件,又称为预警日志。数据库预警日志是按时间顺
序列出的消息日志和错误日志。Oracle 建议您查看这些文件。
表空间和数据文件
一个表空间中包含一个或多个文件
一个数据文件仅属于一个表空间
数据库对象以段的形式存储在表空间中,每个都包含一个或多个区。区有相邻的数据块组成,所以每个区都存在于一个数据库文件中。数据块是数据库中最小的I/O单元
数据库分为多个逻辑存储单元,这些单元称为表空间,他可以将相关的逻辑结构分组在一起。
每个数据库按逻辑都分为一个或多个表空间。可以为每个表空间显示创建一个或多个数据文件,这样可在表空间中按物理方式存储所有逻辑结构的数据。
每个 Oracle 数据库都包含 SYSTEM表空间和SYSAUX 表空间。这两个表空间是在创建数据库时创建的。系统默认设置是创建小文件表空间。也可以创建大文件表空间。
SYSTEM表空间始终处于联机状态,这个表空间可存储支持数据库核心功能的表。如数据字典表SYSAUX表空间是SYSTEM表空间的辅助表空间,SYSAUX表空间可存储许多数据库组件,要使所有数据库组件正常运行,该表空间必须处于联机状态
段区块
段存在于表空间中,段由区的集合构成,区是数据块的集合,数据块将映射到磁盘块中
逻辑和物理数据库结构
Oracle 数据库是被视为单元的数据的集合。数据库一般用来存储和检索相关信息。数据库具有逻辑结构和物理结构。
表空间
数据库分为多个逻辑存储单元,这些单元称为表空间,表空间可以将相关的逻辑结构分组在一起。例如,为了简化某些管理操作,表空间通常会对应用程序的所有对象进行分组。此时,可以对应用程序数据使用一个表空间,对应用程序索引使用另一个表空间。
数据库、表空间和数据文件
每个数据库按逻辑都分为一个或多个表空间。可以为每个表空间显式创建一个或多个数据文件,这样可在表空间中按物理方式存储所有逻辑结构的数据。如果它是 TEMPORARY 表空间而不是数据文件,则这个表空间拥有一个临时文件。
数据块
Oracle 数据库的数据以最细的粒度级存储在数据块中。一个数据块对应于磁盘上特定字节数的物理数据库空间。每个表空间的数据块大小是在创建表空间时指定的。数据库可以使用和分配 Oracle 数据块中的空闲数据库空间。
区
块的上一级逻辑数据库空间称为区。区是特定数目的相邻数据块(在一次分配中获取的)
用于存储特定类型的信息。
段
区之上的逻辑数据库存储级别称为段。段是为特定逻辑结构分配的区集。例如,各种类型的段包括:
数据段:每个非集群、非索引的组织表都有一个数据段。该表的所有数据都存储在
表数据段的区中。对于分区表,每个分区都有一个数据段。每个集群都有一个数据
段。集群中每个表的数据都存储在集群的数据段中。
索引段:每个索引都有一个索引段,用于存储索引的所有数据。对于已分区索引,
每个分区都有一个索引段。
还原段:数据库管理员会创建一个 UNDO 表空间,用于临时存储还原信息。还原段
中的信息用于生成一致读取信息,在数据库恢复过程中,还可用于回退用户的未提
交事务。
临时段:当SQL 语句需要一个临时工作区来完成执行时,Oracle 数据库会创建临时段。执行完语句后,临时段的区会返回到实例,以供将来使用。请为每个用户指定一个默认临时表空间,或指定一个在数据库级别使用的默认临时表空间。
Oracle 数据库可动态分配空间。如果段的现有区已满,则会添加更多的区。由于区是按需分配的,因此,段的区在磁盘上不一定是相邻的。