ORACLE实例与数据库的区别
总是有人贴,但总是没讲清楚,下面的讲解是我见到的讲的最清楚的,谢谢原创者
===========================================
刚接触ORACLE的人肯定会对实例和数据库感到困惑,实例到底代表些什么?为什么会有这个概念的出现?
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能支持高度可用的系统,可用于构建可扩缩性极好的解决方案。
一个实例在其生存期中最多只能装载和打开一个数据库。要想再打开这个(或其他)数据库,必须先丢弃这个实例,并创建一个新的实例。
重申一遍:
实例是一组后台进程和共享内存。
数据库是磁盘上存储的数据集合。
实例“一生”只能装载并打开一个数据库。
数据库可以由一个或多个实例(使用RAC)装载和打开。
前面提到过,大多数情况下,实例和数据库之间存在一种一对一的关系。可能正因如此,才导致人们很容易将二者混淆。从大多数人的经验看来,数据库就是实例,实例就是数据库。
不过,在许多测试环境中,情况并非如此。在我的磁盘上,可以有5个不同的数据库。测试主机上任意时间点只会运行一个Oracle实例,但是它访问的数据库每天都可能不同(甚至每小时都不同),这取决于我的需求。只需有不同的配置文件,我就能装载并打开其中任意一个数据库。在这种情况下,任何时刻我都只有一个“实例”,但有多个数据库,在任意时间点上只能访问其中的一个数据库。
所以,你现在应该知道,如果有人谈到实例,他指的就是Oracle的进程和内存。提到数据库时,则是说保存数据的物理文件。可以从多个实例访问一个数据库,但是一个实例一次只能访问一个数据库。
分享到:
相关推荐
理解Oracle实例与数据库的区别和相互作用对于管理员来说非常重要,因为它涉及到如何有效地管理资源、故障排除和优化数据库性能。在实际工作中,正确配置和管理这两个组件将直接影响到Oracle数据库系统的稳定性和效率...
Oracle 数据库概念解释 Oracle 数据库中有多个概念经常让初学者...数据库名、实例名、数据库域名、全局数据库名、服务名等概念都是 Oracle 数据库中重要的概念,理解它们的区别和联系对于数据库管理和开发非常重要。
删除和重建 Oracle 实例 Oracle 数据库是一种关系型数据库管理系统,广泛应用于企业级数据库应用中。然而,在某些情况下,我们需要删除和重建 Oracle 实例,以便解决一些问题或进行升级维护。在这篇文章中,我们将...
Oracle 数据库实例用户表空间之间的关系 Oracle 数据库实例用户表空间之间的关系是 Oracle 数据库管理系统的核心概念。了解它们之间的关系对于数据库的设计、管理和优化至关重要。 数据库 Oracle 数据库是一个...
### Oracle数据库迁移实例01:Windows环境下通过镜像文件实现db_name与instance_name不一致的迁移 #### 环境概述 本案例介绍了一个特定场景下的Oracle数据库迁移过程,涉及的环境包括: - **源数据库**:Oracle 9.2...
本实例主要关注如何使用VC++与Oracle数据库进行交互,实现数据的存取、查询、更新和删除等操作。Oracle数据库是一个关系型数据库管理系统,提供了丰富的API和工具,如OCI(Oracle Call Interface)和ODBC(Open ...
本教程将深入探讨如何手动创建一个Oracle 10g数据库实例,这对于理解数据库的内部工作原理以及进行数据库管理至关重要。我们将按照以下步骤进行: 1. **环境准备** 在开始创建数据库实例之前,确保你的系统已经...
实例名(也称作SID,即系统标识符)是数据库安装后在操作系统中唯一标识一个Oracle实例的名称。在Oracle数据库的管理中,正确地修改实例名是数据库维护的关键步骤之一,特别是在迁移或者整合数据库时。 修改Oracle...
在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨如何在Oracle数据库中使用PL/SQL来构建一个名为"student"的模式,这包括创建数据库对象如表、索引,以及填充样本数据。 首先,"student"模式可能包含一...
Oracle实例与管理数据库操作 Oracle实例是指Oracle数据库中的一个运行实例,它是指Oracle数据库管理系统(DBMS)在操作系统上的一个实例。Oracle实例由后台进程、系统全局区(SGA)和程序全局区(PGA)组成。Oracle...
在本教程中,首先会介绍Oracle数据库的概述,包括它的发展历史、核心功能以及与其他数据库系统的区别。Oracle数据库以其强大的数据存储能力、高度可扩展性、高可用性和安全性著称。理解这些基础信息对于后续的学习至...
Oracle 11g 创建数据库实例是一项关键任务,用于在计算机上建立一个运行Oracle数据库的环境。这个过程包括多个步骤,确保实例能够正确地管理和存储数据。以下是对标题和描述中所述知识点的详细说明: 首先,Oracle...
Oracle数据库,使用OraClient10g。创建数据库实例、建用户名、配置服务名、建表空间、表的导入
ORACLE 数据库 实例教程 很经典也很容易的实例 适合大部分程序员 学习一下
Oracle RAC集群数据库实例创建过程详解 Oracle RAC(Real Application Clusters)是Oracle公司推出的集群解决方案,旨在提供高可用性、可扩展性和高性能的数据库解决方案。下面是创建Oracle RAC集群数据库实例的...
总结来说,Oracle实例与数据库是Oracle数据库系统中不可或缺的组成部分,理解它们之间的关系和工作原理,对于数据库的管理和维护具有重要意义。实例是运行时的内存结构和进程,数据库是存储数据的物理文件,而RAC...
Oracle数据库实例是一个复杂而关键的系统,用于存储和管理企业级的数据。本篇将深入讨论Oracle数据库的热备份和完整恢复机制,这是确保数据安全和业务连续性的重要环节。 首先,热备份是一种在数据库运行状态下进行...
数据库最大连接数修改与 Oracle 多实例启动在 Linux 系统下 一、修改 Oracle 数据库允许的最大连接数 Oracle 数据库的最大连接数可以通过修改参数文件或使用 alter system 语句来实现。下面是修改最大连接数的步骤...
1. 数据库安装与配置:Oracle 11g的安装过程涉及选择正确的软件版本、配置数据库实例、设置网络服务以及创建数据库。理解Oracle的配置助手如DBCA(Database Configuration Assistant)对于顺利安装至关重要。 2. ...
总的来说,这个"Oracle数据库实例代码"压缩包提供了一个很好的学习资源,可以帮助你深化对Oracle数据库中触发器和视图的理解,从而提升你在数据库管理和开发方面的能力。通过实践这些示例,你将能够更自如地应对各种...