# 数据库 与 实例
什么是数据库?什么是数据库实例呢?
# 概念简介
# 数据库 database
数据库 database 就是存储数据
的一种媒介。数据的存储有好几种:
- 第一种是
文件形式
,也就是在你的磁盘中创建一批文件,然后在这些文件中存储信息。 - 第二种就是
磁盘阵列形式
,数据库不是存放为某个文件,而是把一个或者多个磁盘格式化成 Oracle 的一种格式了,等于整个磁盘就是存放 Oracle 数据库的,不能作为别的用途。这样的优点是存储性能高,因为不再借助别的文件格式了,而是把整个磁盘都成为 Oracle 最适应的文件系统格式。 - 当然还可能有别的形式,比如网络什么的。不过我们最常用的还是文件格式的。
# 数据库实例 Instance
Instance 其实就是指的操作系统中 一系列的进程 以及 为这些进程所分配的内存块
(即 实例是“内存”和“后台进程”的集合)。我们可以新建一个 Oracle 的 Instance,这个时候虽然有了进程还有 SGA 等一系列的内存块,但是这个时候并没有把数据库文件读取进来。所以只是一个实例,在后来,你可以通过命令手动或者自动地把数据库文件加载进我们的数据库 Instance 中,这个时候的数据库才可以让我们真正的开始访问操作。
# 白话一点
数据库是用来长久存储数据的,而我们知道 【内存只能临时存储
,磁盘等才能真正存储数据】
。所以 数据库 == 磁盘上的文件(或磁盘阵列)。
那我们怎么使用数据库呢?我们要知道 【使用数据库,必须把磁盘上的文件读入内存才能使用】
。所以我们并不能直接使用磁盘上的文件,也就是说我们不能直接使用数据库,需要 通过 数据库实例 instance 将文件读入内存中才能使用数据库。
实例就是内存和一组后台进程,所以正常的数据库读写操作
是:
- 读:是由实例中一组后台进程从磁盘上将数据文件读入到实例的内存中。
- 写:然后经过在内存中对数据的操作再从实例的内存中经过一组后台进程写到数据库中.
# 二者关系
特别注意,一个实例可以用于一个数据库,多个实例也可以同时用于一个数据库。举个例子,如果把数据库比作一架飞机,实例就是飞机的发动机。那么,一台发动机可以驱动飞机,两台发动机也可以同时驱动一架飞机。数据库与实例的关系是 1 对多的。
多个 “实例” 同时驱动一个 “数据库” 的架构叫 “集群
(Oracle real application clusters,简称 RAC)”,这是 Oracle 的一种高端应用,如果结合磁盘阵列的保护机制,RAC 能最大限度的保护我们的应用不间断运行,数据不丢失。