作为Oracle术语,"实例"(instance)和"数据库"(database)很容易让人混淆的。下面分别作下解释:

1、ORACLE实例 = 进程 + 进程所使用的内存(SGA)
实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态!
2、数据库 = 数据文件 + 控制文件 + 日志文件 + 临时文件
数据库是永久的,是一个文件的集合。
3、ORACLE实例和数据库之间的关系
A.临时性和永久性
B.实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义
C.一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库
D.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!

简单总结一下,如下图:

 

Oracle database:

一个ORACLE数据库是数据的集合,被处理成一个单位。一个ORACLE数据库有一个物理结构和一个逻辑结构。

一、物理数据库结构(physical database structure)

它是由构成数据库的操作系统文件所决定。每一个ORACLE数据库是由几种类型的文件组成:数据文件、日志文件、控制文件、口令文件、参数文件等。数据库的文件为数据库信息提供真正的物理存储。
 
1、数据文件(Data files):

    每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:
A、 一个数据文件仅与一个数据库联系;
B、 当数据库空间用完时,数据文件可以按照预定的设置自动扩展;                                          C、一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。
     数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由 ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。
2、控制文件(Control file)
控制文件用于记录和维护数据库的物理结构,并且每个Oracle数据库至少要包含一个控制文件。
3、重做日志(Redo log)

原则:“先记后写”

每个Oracle数据库都有两个或多个重做日志文件(redo log file)。这组文件作为一个整体被称为数据库的重做日志。重做日志由重做条目(redo record)构成(也被称为重做记录)。

重做日志用于记录数据库的变化,当进行例程恢复或介质恢复时需要使用重做日志
执行DDL或DML操作时,事物变化会被写到重做日志缓冲区,而在特定的时刻LGWR会将重做日志缓冲区中的内容写入重做日志。

重做日志中的信息只能用于恢复由于系统或介质故障导致的不能被写入数据文件的数据。例如,如果突然的断电导致数据库操作停止,则内存中的数据不能被写入数据文件,造成数据丢失。当电力恢复数据库再次打开时可以恢复丢失的数据。将最新的重做日志文件中的信息应用于数据文件,Oracle可以将数据库恢复到断电时的状态。

在恢复操作中恢复重做日志信息的过程叫做前滚(rolling forward )。

4、归档日志(Archive log)
当数据库运行在ARCHIVELOG模式下,Oracle将自动地归档重做日志文件;是非活动(Inactive)重做日志的备份。

5、参数文件(Parameter file)
 

参数文件包含了数据库与实例的配置参数列表。用于定义启动实例所需要的初始化参数,包括文本参数文件(pfile)和服务器参数文件(spfile)
 
6、口令文件(Password file)
用于验证特权用户(具有SYSDBA、SYSOPER权限的特殊数据库用户)
 

二、逻辑数据库结构(Logical database structure)

数据库逻辑结构包含表空间、段、段(extent)、数据块。

1、表空间(Tablespace)