代码改变世界

Oracle数据库和实例

2011-05-12 14:15  马哈鱼  阅读(329)  评论(0编辑  收藏  举报

数据库服务器包括Oracle 数据库和Oracle 实例。
数据库定义:物理操作系统文件或磁盘的集合。
实例定义:一组Oracle后台进程/线程以及一个共享内存区(System Global Area,SGA)。

ORACLE实例 = 进程 + 进程所使用的内存(SGA)
实例是一个临时性的东西!
数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件
数据库是永久的,是一个文件的集合。
一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库,一个数据库可被许多实例同时装载和打开(即RAC,多实例系统)。

实例的内存结构
Oracle 创建并使用内存结构完成多个作业。Oracle 有两个内存结构:SGA和PGA。


SGA 是实例中保存数据和控制信息的共享内存区域。每个实例拥有自身的SGA。连接到数据库的用户共享SGA 中的数据。
SGA 包括:
数据库缓冲:保存最近使用的数据块,不管是更新过还是没有更新过。实例中的数据库缓冲集合称为数据库缓冲cache。
重做日志缓冲:保存数据库修改的日志。重做日志缓冲中的重做入口写到在线重做日志中。
共享缓冲区:保存共享内存结构,比如共享SQL 区域。
语句句柄或游标:游标是为执行语句而保存分析语句和其他信息SQL 区域的句柄或名称。
PGA 是保存服务器进程的数据和控制信息的内存缓冲。当服务器进程启动时Oracle 创建PGA。PGA的大小和保存内容是由实例配置来决定的。


Oracle 后台进程
用户进程:在运行应用程序或Oracle 工具时创建。负责与服务器进程的通讯。
Oracle 进程:被其他进程调用执行。Oracle 创建服务器进程与用户进程通讯并与Oracle 相互作用来管理用户进程的请求。