Oracle Database 10g:为网格计算设计的数据库
- 自动存储管理(ASM)
- 可移植集群件
- Real Application Clusters 和自动工作量管理
- 资源管理器
- Oracle Streams
- 使用 Oracle Enterprise Manager Grid Control 进行集中管理
- Oracle Database 10g 新增的自我管理功能
数据库体系结构
- 概述
- 在数据库服务器上启动数据库后,Oracle 软件将对共享内存区(即系统全局区 (SGA))进行分配,并将启动多个Oracle 后台进程。这种 SGA 和 Oracle 进程的组合称为 Oracle 实例。
- 启动实例后,Oracle 软件会将该实例与特定数据库相关联。该操作称为装载数据库。
- Oracle 内存结构
- 系统全局区 (SGA):由所有服务器进程和后台进程共享,包含实例的数据和控制信息的内存区
- 数据库缓冲区高速缓存:用于缓存从数据库检索到的数据块
- 重做日志缓冲区:用来缓存用于实例恢复的重做信息,直到可以将其写入磁盘中存储的物理重做日志文件
- 共享池:用于缓存可在用户间共享的各种结构
- 大型池:可选区域,能够为某些大型进程(例如Oracle 备份和恢复操作)和 I/O 服务器进程提供较大的内存分配
- Java 池:用于 Java 虚拟机(JVM) 中特定于会话的所有Java 代码和数据
- 流池:由 Oracle Streams 使用
- 程序全局区 (PGA):由每个服务器和后台进程专用,每个进程都有一个PGA。包含每个服务器进程的数据及控制信息
- Oracle 进程
- 系统监视器 (SMON):启动的实例失败时,执行崩溃恢复
- 进程监视器 (PMON):用户进程失败时,执行进程清理
- 数据库写进程 (DBWn):将修改后的块从数据库缓冲区高速缓存写入磁盘中的数据文件
- 检查点 (CKPT):更新数据库的所有数据文件和控制文件以指示最新的检查点
- 日志写进程(LGWR):将重做日志条目写入磁盘
- 归档程序 (ARCn):发生日志切换时,将重做日志文件复制到归档存储中
- 物理数据库结构
- 控制文件:包含与数据库本身相关的数据,即物理数据库结构信息。
- 数据文件:包含数据库的用户或应用程序数据
- 联机重做日志文件:用于进行数据库的实例恢复。
- 参数文件:用于定义实例启动时的配置。
- 口令文件:允许用户远程连接到数据库执行管理任务。
- 备份文件:用于进行数据库恢复。
- 归档日志文件:包含实例发生的数据更改(重做)的实时历史记录。使用这些文件和数据库备份,可以恢复丢失的数据文件。
- 跟踪文件:每个服务器和后台进程都可以写入关联的跟踪文件。
- 预警日志文件:按时间顺序列出的消息日志和错误日志
- Oracle Managed Files (OMF)
- DB_CREATE_FILE_DEST 定义数据文件和临时文件默认文件系统目录的位置
- DB_CREATE_ONLINE_LOG_DEST_n 定义重做日志文件和控制文件的创建位置
- DB_RECOVERY_FILE_DEST 定义 RMAN 备份的位置
- 逻辑和物理数据库结构
- 表空间:数据库分为多个逻辑存储单元,这些单元称为表空间,用于将相关逻辑结构归到一组。
- 数据库、表空间和数据文件:每个数据库在逻辑上都分为一个或多个表空间,系统为每个表空间均显式创建一个或多个数据文件。
- 方案:方案是数据库用户所拥有的数据库对象的集合
- 数据块:从最细的层面来讲,Oracle 数据库的数据存储在数据块中。每个表空间的数据块大小是在表空间创建时指定的
- 区:区是特定数量的相邻数据块(通过一次分配获得),用于存储特定类型的信息
- 段:段是为某个逻辑结构分配的一组区
- 数据段:每个非集群、非索引组织的表都有一个数据段。
- 索引段:每个索引都有一个索引段,存储其所有数据。
- 还原段:用于临时存储还原信息
- 临时段:临时段是SQL 语句需要临时工作区来完成执行时由 Oracle 数据库创建的
概述 Oracle 实例管理
- 在运行 Oracle 的计算机(通常称为主机或数据库服务器)上启动了一个实例。
- 运行应用程序的计算机(本地计算机或客户机工作站)在用户进程内运行应用程序。客户机应用程序尝试通过 Oracle Net Services 驱动程序与实例建立连接。
- 该实例检测到应用程序发出的连接请求,并连接到代表该用户进程的服务器进程。
- 用户更新了某一行数据。
- 服务器进程接收到语句,并检查 SGA 的共享池中是否已存在该语句。如果找到了共享SQL 区域,服务器进程将检查用户对请求数据的访问权限,并且使用以前现有的共享 SQL 区域处理该语句。如果共享池内没有该语句,则将为该语句分配新的共享SQL 区域,从而可对其进行分析和处理。
- 服务器进程从 SGA 中存储的实际数据文件(表)或数据块中检索任何必需的数据值。
- 服务器进程将对 SGA 中的表数据进行修改。
- 提交事务处理后,LGWR 进程会立即将该事务处理记录到重做日志文件中。
- 如果有必要,DBWn 进程会将修改的块写入磁盘。
- 服务器进程将通过网络向应用程序发送一条成功或错误消息。