业务系统中,经常要接触各种不同的数据库,每次在安装和新建的时候都折腾不少时间。现总结理清下思路
首先要搞清楚数据库和实例的区别:
什么是数据库?
数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
上面的是专业术语解释,简单地说:数据库就是一组互相关联的文件集合,包括数据文件和日志文件等等,它看起来是相对静态的。
什么是实例?
数据库实例(也称为服务器Server)就是用来访问一个数据库文件集的一个存储结构及后台进程的集合。它使一个单独的数据库可以被多个实例访问(也就是ORACLE并行服务器-- OPS)。实例和数据库的关系如下:
----------------------------------------------------------------------------
| 实例1 SGA+进程 | 实例2 SGA+进程 |
----------------------------------------------------------------------------
| 数据库(一组数据文件) |
----------------------------------------------------------------------------
它看起来是相对动态的。当服务器关闭数据后,实例也就不存在了。
下面这个图能很好的概括他们的关系:
一个数据库软件安装好后,可以在上面建多个实例和数据库。
对于日常来讲:我们安装好数据库软件,比如oracle后,我们说新建一个库,这里指的其实是新建一个实例,一个数据库上可以建多个实例,一般对开发人员来讲,操作的也主要是实例。只是大家说操作数据库说习惯了。
从create database ...开始指定日志文件,指定表文件等等,这个详细的在下一篇文章中说明。
对于oracle来说,如果要在一个库上建多个实例,一定要以startup nomount状态启动。