每个运行的Oracle数据库都对应一个oracle实例(Instance),也可以称为例程。当数据库服务器上的一个数据库启动时,oracle将为其分配一块内存区间,叫做系统全局区(SGA),然后启动一个或多个oracle进程。其中SGA和oracle进程结合在一起,就是一个oracle实例。为了区分不同的实例,每个oracle实例都有一个系统标识符SID
实例启动后,oracle把它与指定的数据库联系在一起,这个过程叫做装载数据库。此时,数据库处于就绪状态,有权限的用户可以访问该数据库。
数据库是存储数据的一种媒介。比如常用的文件就是一种,在Oracle11G中, 数据的存储有好几种。
第一种是文件形式,也就是在你的磁盘中创建一批文件,然后在这些文件中存储信息 。
第二种就是磁盘阵列形式,这个是什么意思呢,这个就是说明数据库不是存放为某个文件,而是把一个或 者多个磁盘格式化成Oracle的一种格式了,等于整个磁盘就是存放Oracle数据库的,不能作为别的用途。这 样的优点是存储性能高,因为不再借助别的文件格式了,而是把整个磁盘都成为Oracle最适应的文件系统格 式。当然还可能有别的形式,比如网络什么的。
不过我们最常用的还是文件格式的,在文件格式中,数据库 指的就是那些数据文件,控制文件以及REDO文件等等一系列文件。
在这里要注意一点的是,Oracle的实例在启动以后,只能load一次数据库,如果想把数据库与Instance断开 ,然后再重新挂在一个数据库Instance,那么就需要你首先把数据库Instance进程结束,然后重新建立这个 instance的一个进程,再load另外一个数据库。否则肯定要抛除ORA-16169错误,说数据库已经被打开。因为 一个数据库Instance在其生存期中最多只能load和打开一个instance。
ORACLE实例 = 进程 + 进程所使用的内存(SGA)实例是一个临时性的东西,你也可以认为它代表了数据库某一 时刻的状态!
数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件数据库是永久的,是一个文件的集合。
(1)打开(OPEN):启动实例,装载并打开数据库。该模式是默认的启动模式,它允许任何有效用户连接到数据库,并执行典型的数据库访问操作
(2)关闭(CLOSE):关闭操作首先终止用户访问数据库所需的进程,然后释放计算机中供oracle运行使用的内存
(3)已装载(MOUNT):启动实例并装载数据库,但不打开数据库。该模式用于更改数据库的归档模式或执行恢复操作,还可以用于数据文件恢复。因为此状态下没有打开数据库,所以不允许访问
(4)已启动(NOMOUNT):启动实例,但不装载数据库。该模式用于重新创建控制文件,对控制文件进行恢复或重新创建数据库等。