这篇文章跟数据库开发有什么关系呢?我感觉呢只从字面上看确实没有什么关系,可是了解的话跟大牛讨论时他们最起码不会被鄙视、面试时可能也会有用。如果你再深入的钻研下去你就会发现里面的内容好“丰满”。作为一个菜鸟(指本人)以前跟别人讨论数据库时经常会说:“Oracle数据库、SQL Server数据库、DB2数据库”,以至于我认为数据库是一种软件(对于Oracle、微软、IBM来说也确实是软件),刚接触Oracle时才知道一个完整的“数据库”需要有数据库和实例。这是很多初学者比较难以掌握的概念。
那这两者到底是什么?
从字面上讲,我感觉tom的解释非常好:
数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle 10g 的自动存储管理(Automatic Storage Management,ASM)或RAW 分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
实例(instance):一组Oracle 后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。
说的白话点:实例就是一组操作系统进程(或者是一个多线程的进程)和一些内存,这些进程可以操作数据库。数据库只是一个文件集合(包括数据文件、控制文件、临时文件、重做日志文件)。
这两者又有什么联系?
数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!
想要正深入了解数据库和实例的话请看下图:如果对此图能够深入了解的话那你的Oracle体系结构将会非常的清楚。这里将不再讲述,下章再续。