`
pavel
  • 浏览: 930699 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle中的Instance实例和数据库的区别

阅读更多

      什么是数据库,其实很简单,数据库就是存储数据的一种媒介。比如常用的文件就是一种,在Oracle10G中,数据的存储有好几种。第一种是文件形式,也就是在你的磁盘中创建一批文件,然后在这些文件中存储信息。第二种就是磁盘阵列形式,这个是什么意思呢,这个就是说明数据库不是存放为某个文件,而是把一个或者多个磁盘格式化成Oracle的一种格式了,等于整个磁盘就是存放Oracle数据库的,不能作为别的用途。这样的优点是存储性能高,因为不再借助别的文件格式了,而是把整个磁盘都成为Oracle最适应的文件系统格式。当然还可能有别的形式,比如网络什么的。不过我们最常用的还是文件格式的,在文件格式中,数据库指的就是那些数据文件,控制文件以及REDO文件等等一系列文件。

  而什么是Instance呢,Instance其实就是指的操作系统中一系列的进程以及为这些进程所分配的内存块。在Oracle中,我们可以新建一个Oracle的Instance,这个时候虽然有了进程还有SGA等一系列的内存快,但是这个时候并没有把数据库文件读取进来。所以只是一个实例,在后来,你可以通过命令手动或者自动地把数据库文件加载进我们的数据库Instance中,这个时候的数据库才可以让我们真正的开始访问操作。

  所以说,数据库的应用如果想实现,数据库和数据库Instance是缺一不可的,如果只有数据库的那些文件,那么,只能代表数据在这个文件中,但是我们无法直接进行操作。而如果只有数据库Instance,那么我们虽然可以急性操作,但是也不知道操作哪些数据,操作生成的数据也无法保存等等。所以,当一个Oracle Instance真正Load了一个Oracle Database了以后,数据库才可以被我们使用。

  在这里要注意一点的是,Oracle的实例在启动以后,只能load一次数据库,如果想把数据库与Instance断开,然后再重新挂在一个数据库Instance,那么就需要你首先把数据库Instance进程结束,然后重新建立这个instance的一个进程,再load另外一个数据库。否则肯定要抛除ORA-16169错误,说数据库已经被打开。因为一个数据库Instance在其生存期中最多只能load和打开一个instance。

 

ORACLE实例 = 进程 + 进程所使用的内存(SGA)
实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态!
数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件
数据库是永久的,是一个文件的集合。
ORACLE实例和数据库之间的关系
1.
临时性和永久性
2.
实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义
3.
一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库
4.
一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!

下面对实例和数据库做详细的诠释:
在Oracle领域中有两个词很容易混淆,这就是“实例”(instance)和“数据库”(database)。作为Oracle术语,这两个词的定义如下:
q
数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle 10g的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
q
实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。
这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!稍后就会介绍这样的一个例子。
是不是更糊涂了?我们还会做进一步的解释,应该能帮助你搞清楚这些概念。实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。不过,Oracle的真正应用集群(Real Application Clusters,RAC)是一个例外,这是Oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样就可以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。由此,我们可以同时从多台不同的计算机访问这个数据库。Oracle RAC能支持高度可用的系统,可用于构建可扩缩性极好的解决方案。

 

分享到:
评论

相关推荐

    Oracle中Instance实例和数据库的区别

    数据库的应用如果想实现,数据库和数据库Instance是缺一不可的, 如果只有数据库的那些文件,那么,只能代表数据在这个文件中,但是我们无法直接进行操作。而如果只有数据库Instance,那么我们虽然可以急性操作, ...

    ORACLE实例与数据库详解.doc

    Oracle数据库系统是由两个核心组成部分构成:Oracle实例(Instance)和数据库(Database)。理解它们之间的关系对于有效管理和维护Oracle环境至关重要。 1. **Oracle实例**:实例是操作系统中的进程集合,这些进程...

    oracle数据库_实例_用户_表空间之间的关系

    Oracle 实例(Oracle Instance)是一组后台进程(Backguound Processes)和内存结构(Memory Structures)组成的实体。一个数据库可以有多个实例,每个实例都可以有不同的配置和参数设置。 用户 用户是在实例下...

    oracle实例名,数据库名,服务名等概念区别与联系.doc

    Oracle 数据库概念解释 Oracle 数据库中有多个概念经常让初学者...数据库名、实例名、数据库域名、全局数据库名、服务名等概念都是 Oracle 数据库中重要的概念,理解它们的区别和联系对于数据库管理和开发非常重要。

    oracle中的全局数据库名称和sid的区别

    Oracle 中的全局数据库名称和 SID 的区别 Oracle 中的全局数据库名称和SID是两个不同的概念,分别用于标识数据库和实例。数据库名(DB_NAME)是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的...

    数据库名实例名sid的区别

    在Oracle数据库系统中,数据库名(DB_NAME)、实例名(INSTANCE_NAME)以及操作系统环境变量(ORACLE_SID)是区分和管理数据库的关键概念。这些参数在不同的Oracle版本中有不同的作用和重要性。 首先,数据库名(DB...

    oracle修改实例名

    标题《oracle修改实例名》与描述《修改oracle数据库的实例名,修改oracle数据库的实例名》暗示本文主要讲述的是在Oracle数据库中如何修改数据库实例名称的操作。实例名(也称作SID,即系统标识符)是数据库安装后在...

    Oracle体系架构(实例+数据库).pdf

    Oracle数据库系统是一个复杂而强大的关系型数据库管理系统,其体系架构主要由两个核心组成部分构成:实例(Instance)和数据库(Database)。这两个部分共同协作,确保Oracle数据库的高效运行和数据的安全存储。 ...

    Oracle数据库_实例_用户_表空间之间的关系.doc

    表空间是Oracle数据库中用于组织和管理数据存储的逻辑单元。每个表空间都与一个或多个数据文件关联,数据文件是数据库中实际存储数据的物理文件。一个表空间可以包含多个数据文件,而每个数据文件只能属于一个表空间...

    ORACLE_SID_实例名_数据库名_讲解

    在一般情况下,数据库名和实例名是一对一的关系,但如果在 oracle 并行服务器架构中,数据库名和实例名是一对多的关系。 ORACLE_SID 是操作系统的环境变量,用于与操作系统交互,也就是说,从操作系统的角度访问...

    Instance和数据库的区别

    数据库和Instance是Oracle数据库系统中的两个关键概念,它们在数据库应用中起着至关重要的作用。理解二者的区别对于有效的数据库管理和运维至关重要。 首先,我们来解释一下“数据库”(Database)。数据库是一个...

    Oracle Instance 全图

    在ora_arch.pdf这个文件中,你可能会找到关于Oracle9i数据库体系架构的详细信息,包括如何配置和优化实例,以及如何应对常见问题。通过学习这份资料,你不仅可以理解Oracle9i的工作原理,还能为理解和适应更现代的...

    Oracle 12c数据库实例深入浅出

    简单来说,一个运行中的Oracle数据库背后实际上是一个实例,这个实例负责管理和提供对数据库文件的访问。 #### 二、Oracle数据库实例的组成 - **系统全局区域 (SGA)** - **定义**: SGA是实例启动后由Oracle数据库...

    Oracle 10g 手动创建数据库及实例

    ### Oracle 10g 手动创建数据库及实例 #### 一、引言 在Oracle 10g中,创建数据库有两种主要方式:一种是利用DBCA(Database Configuration Assistant)工具,这种方式直观便捷;另一种则是手动创建数据库,虽然相对...

    oracle 数据库名、实例名、数据库域名、全局数据库名、服务名 解析

    ### Oracle 数据库名、实例名、数据库域名、全局数据库名、服务名 解析 #### 一、Oracle数据库名称(DB_NAME) 在Oracle数据库系统中,**数据库名称**(DB_NAME)是一个非常重要的概念,用于唯一标识一个特定的...

    linux下oracle手动建实例

    - 示例中指定了两个实例,分别是`bgroup`和`robot8`。 ##### 2. 创建所需的文件目录 - 需要为实例创建一系列目录,用于存放各种类型的文件: - `admin`:用于存放实例的日志文件、跟踪文件等。 - `oradata`:用于...

    oracle实例名,服务名等概念区别与联系

    数据库名、实例名、服务名、数据库域名和全局数据库名都是 Oracle 数据库中的重要概念,每个概念都有其特定的作用和用途。了解这些概念的区别和联系,可以帮助我们更好地理解和使用 Oracle 数据库。

    Oracle数据库体系结构( 中文详细版)

    9. **实例**(Instance):实例是Oracle数据库在内存中的表示,包括系统全局区(SGA)和程序全局区(PGA)。SGA是共享内存区域,包含数据缓冲区、重做日志缓冲区、共享池等;PGA则是每个服务器进程或后台进程的私有...

Global site tag (gtag.js) - Google Analytics