刚接触ORACLE的人肯定会对实例和数据库感到困惑,实例到底代表些什么?为什么会有这个概念的出现?
  ORACLE实例 = 进程 + 进程所使用的内存(SGA)实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态!
  数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件
  数据库是的,是一个文件的集合。
  ORACLE实例和数据库之间的关系
  1.临时性和性
  2.实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义
  3.一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库
  4.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!
  下面对实例和数据库做详细的诠释:
  在Oracle领域中有两个词很容易混淆,这是“实例”(instance)和“数据库”(database)。作为Oracle术语,这两个词的定义如下:
  数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle 10g的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
  实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上有用的事物,不过你完全可以把它想成是有用的事物,这有助于对实例和数据库划清界线。
  这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中多能装载和打开一个数据库!稍后会介绍这样的一个例子。
  是不是更糊涂了?我们还会做进一步的解释,应该能帮助你搞清楚这些概念。实例是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。不过,Oracle的真正应用集群(Real Application Clusters,RAC)是一个例外,这是Oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样可以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。由此,我们可以同时从多台不同的计算机访问这个数据库。Oracle RAC能支持高度可用的系统,可用于构建可扩缩性极好的解决方案。
  一个实例在其生存期中多只能装载和打开一个数据库。要想再打开这个(或其他)数据库,必须先丢弃这个实例,并创建一个新的实例。
  重申一遍:
  实例是一组后台进程和共享内存。
  数据库是磁盘上存储的数据集合。
  实例“一生”只能装载并打开一个数据库。
  数据库可以由一个或多个实例(使用RAC)装载和打开。
  前面提到过,大多数情况下,实例和数据库之间存在一种一对一的关系。可能正因如此,才导致人们很容易将二者混淆。从大多数人的经验看来,数据库是实例,实例是数据库。