完整的Oracle数据库通常由两部分组成Oracle数据库实例和数据库
)数据库是一系列物理文件的集合(数据文件控制文件联机日志参数文件等)
)Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区
在启动Oracle数据库服务器时实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存)然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件Oracle有一个很大的内存快成为全局区(SGA)
一数据库表空间数据文件
数据库
数据库是数据集合Oracle是一种数据库管理系统是一种关系型的数据库管理系统
通常情况了我们称的数据库并不仅指物理的数据集合他包含物理数据数据库管理系统也即物理数据内存操作系统进程的组合体
数据库的数据存储在表中数据的关系由列来定义即通常我们讲的字段每个列都有一个列名数据以行(我们通常称为记录)的方式存储在表中表之间可以相互关联以上就是关系模型数据库的一个最简单的描述
当然Oracle也是提供对面象对象型的结构数据库的最强大支持对象既可以与其它对象建立关系也可以包含其它对象关于OO型数据库以后利用专门的篇幅来讨论一般情况下我们的讨论都基于关系模型
表空间文件
无论关系结构还是OO结构Oracle数据库都将其数据存储在文件中数据库结构提供对数据文件的逻辑映射允许不同类型的数据分开存储这些逻辑划分称作表空间
表空间(tablespace)是数据库的逻辑划分每个数据库至少有一个表空间(称作SYSTEM表空间)为了便于管理和提高运行效率可以使用一些附加表空间来划分用户和应用程序例如USER表空间供一般用户使用RBS表空间供回滚段使用一个表空间只能属于一个数据库
每个表空间由同一磁盘上的一个或多个文件组成这些文件叫数据文件(datafile)一个数据文件只能属于一个表空间在Oracle以后数据文件创建可以改变大小创建新的表空间需要创建新的数据文件数据文件一旦加入到表空间中就不能从这个表空间中移走也不能与其它表空间发生联系
如果数据库存储在多个表空间中可以将它们各自的数据文件存放在不同磁盘上来对其进行物理分割在规划和协调数据库I/O请求的方法中上述的数据分割是一种很重要的方法
Oracle数据库的存储结构分为逻辑存储结构和物理存储结构
)逻辑存储结构用于描述Oracle内部组织和管理数据的方式
)物理存储结构用于描述Oracle外部即操作系统中组织和管理数据的方式
二Oracle数据库实例
为了访问数据库中的数据Oracle使用一组所有用户共享的后台进程此外还有一些存储结构(统称为System Gloabl Area即SGA)用来存储最近从数据库查询的数据数据块缓存区和SQL共享池(Shared SQL Pool)是SGA的最大部分一般占SGA内存的%以上通过减少对数据文件的I/O次数这些存储区域可以改善数据库的性能
Oracle数据库实例(instance)也称作服务器(server)是用来访问数据库文件集的存储结构及后台进程的集合一个数据库可以被多个实例访问(这是Oracle并行服务器选项)
决定实例大小及组成的参数存储在initora文件中(在i中是spfile)Oracle数据库实例启动时需要读这个文件并且在运行时可以由数据库管理员修改对该文件的任何修改都只有在下一次启动时才启作用实例的initora文件件通常包含实例的名字:如果一个实例名为orcl 那么initora文件通常被命名为initorclora另一个配置文件configora用来存放在数据库创建后就不再改变的变量值(如数据库的块大小)实例的configora文件通常也包含该实例的名字如果实例的名字为orcl则configora一般将被命名为 configorclora为了便于使用configora文件的设置值在实例的initora文件中该文件必须通过IFILE参数作为包含文件列出