完整的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并行服务器选项)
lishixinzhi/Article/program/Oracle/201311/17362
实例
实例就是一组 *** 作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以 *** 作数据库;实例 就是治理相关库的内存结构的名字(由SGA、PGA、服务器进程、用户进程、后台进程等组成)
数据库
数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。数据库 就是实际的磁盘上的文件(数据文件、日志文件、控制文件等),负责保存数据,但由对应的实例来 *** 作它的数据
3.服务名
服务名 就是对外公布的名称,为网络监听服务
4.SID
sid用于实例区分各个数据库,service name用于外部链接。
数据库(database):物理 *** 作系统文件或磁盘( disk)的集合。使用Oracle 10g 的自动存储管理(Automatic Storage Management,ASM)或RAW 分区时,数据库可能不作为 *** 作系统中单独的文件,但定义仍然不变。实例(instance):一组Oracle 后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。
这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!
一般来说,我们的一个数据库对应一个实例,但在集群RAC情况下,共享数据库文件时,一个数据库是可以被多个实例同时使用的。
同一时间,一个实例只能打开一个数据库,也就是一个实例只能 *** 作或管理一个数据库;通常,同一时间,一个数据库只能被一个实例打开,但RAC情况除外。
安装oracle时,通常会安装一个实例——数据库对(当然可以装多对),而且他们的名字相同(也就是实例和数据库名字相同),他们的名字当然可以不同,不管相不相同,他们的联系是通过xxx/pfile/init.ora初始化文件联系的。因为xxx就是实例的名字,而xxx.ora中的db_name,则记录相应数据库的名字。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)