数据库和数据库实例的区别

数据库就是一个相片底片

实例就是相纸

一个底片可以冲多个相纸,但一张相纸最多冲一个底片。


tom的一个解释
    数据库(database):物理操作系统文件或磁盘( disk)的集合。使用Oracle 10g 的自动存储管理(Automatic Storage Management,ASM)或RAW 分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
  
    实例(instance):一组Oracle 后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。

    这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!


补充:
一般来说,我们的一个数据库对应一个实例,但在集群RAC情况下,共享数据库文件时,一个数据库是可以被多个实例同时使用的。

 

[ORACLE实例与数据库详解]: 
在实际的开发应用中,关于Oracle数据库,经常听见有人说建立一个数据库,建立一个Instance,启动一个 
Instance之类的话。 其实问他们什么是数据库,什么是Instance,很可能他们给的答案就是数据库就是 
Instance,Instance就是数据库啊,没有什么区别。在这里,只能说虽然他们Oracle用了可能有了一定的经 
验,不过基础的概念还是不太清楚。 
什么是数据库,其实很简单,数据库就是存储数据的一种媒介。比如常用的文件就是一种,在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环境中实例的作用能够得到充分的体现! 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库连接(Database Connection)和数据库实例Database Instance)是数据库系统中两个不同的概念,它们之间有以下关系: 1. 数据库连接: - 数据库连接是应用程序与数据库之间建立的通信渠道,用于在应用程序和数据库之间传递数据和执行操作。 - 一个数据库连接表示应用程序与数据库之间的一次会话,它包含了连接所需的连接信息(如数据库地址、用户名、密码等)。 - 应用程序可以通过数据库连接向数据库发送SQL语句、获取查询结果,或执行数据库操作(如插入、更新、删除等)。 2. 数据库实例: - 数据库实例是在物理上运行的数据库软件。它是数据库系统的一个具体实例,由内存结构和后台进程组成。 - 当数据库软件启动时,会创建一个数据库实例。每个数据库实例都有自己的内存结构和后台进程,用于管理和处理数据库的运行。 - 数据库实例负责处理用户的请求,执行SQL语句,管理缓存、日志和数据文件等。 3. 关系: - 一个数据库实例可以同时支持多个数据库连接。多个应用程序可以通过不同的连接同时访问同一个数据库实例。 - 每个数据库连接都是独立的会话,它们在逻辑上是相互隔离的,每个连接可以有自己的事务和会话状态。 - 数据库连接通过与数据库实例建立通信,将应用程序的请求传递给数据库实例进行处理,并将处理结果返回给应用程序。 需要注意的是,数据库连接和数据库实例是两个不同的概念,它们是数据库系统中不同层次的抽象。数据库实例是物理上运行的数据库软件,而数据库连接是应用程序与数据库之间的通信通道。一个数据库实例可以支持多个数据库连接,每个连接表示一个独立的会话。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值