概述
一个数据库可以包含一个或者多个实例
实例的定义:由操作系统后台进程和分配的内存区域构成。说
得简单点就是oracle在nomount状态就分配了内存区域,一个实
例也就差不多快形成了。
实例是个动态概念,它由一系列进程和内存区域组成;而数据库是个静态概念,主要指的是构成数据库的一系列文件,如数据文件、重做日志文件、控制文件等。一般情况下实例与数据库是一对一的,但是在多实例数据库环境下,一个数据库可以对应多个实例。
实例由称为系统全局区(SGA)的共享内存以及若干后台进程组成。生存期就是它在内存中存在的时间。数据库是由磁盘上的物理文件组成,可以永久存在。实例与数据库可以是多对一的关系。在打开数据库的时候,nomount阶段就是创建并启动实例,即根据初始化参数文件分配内存,启动后台服务进程。
简单来说有时候这两个名词有时可以互换使用、但是其概念还是不同的。
实例 instance =进程 + 进程所使用的内存(SGA)
数据库 database=物理操作系统文件或磁盘(disk)的集合(redo文件+control文件+data文件+临时文件)
实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态!
数据库是永久的,是一个文件的集合。
ORACLE实例和数据库之间的关系
1.临时性和永久性
2.实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义
3.一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库
4.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!
数据库实例也称作服务器, 是用来访问数据库文件集的存储结构及后台进程的集合.
1、一个数据库可以被多个实例访问(称为真正的应用群集选项).
2、一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库
3、Oracle的实例在启动以后,只能load一次数据库,如果想把数据库与Instance断开,然后再重新挂在一个数据库Instance,那么就需要你首先把数据库Instance进程结束,然后重新建立这个instance的一个进程,再load另外一个数据库。否则肯定要抛除ORA-16169错误,说数据库已经被打开。因为一个数据库Instance在其生存期中最多只能load和打开一个instance。.
4、另外实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义
ORACLE服务= 实例+数据库
实例是一群为你服务的进程,数据库是你真实需要的数据
比如你去饭店吃饭享受服务,厨师+服务员的服务相当于实例,食材、饭菜什么相当于数据库的数据
转自:blog1 blog2
最后
以上就是俏皮可乐为你收集整理的Oracle中数据库与实例的区别的全部内容,希望文章能够帮你解决Oracle中数据库与实例的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复