启动 Oracle 数据库并使其可以为所有用户提供服务的三个步骤如下:
1、启动实例
2、挂载(mount)数据库
3、打开(open)数据库
DBA 可以使用 SQL*Plus 的 STARTUP 语句或企业管理器(Enterprise Manager)来执行这三个步骤。
实例是如何启动的
当 Oracle 启动实例时,首先需要从服务器参数文件(server parameter file)或初始化参数文件(initialization parameter file)中读取初始化参数,之后创建存储数据库信息的共享内存区 SGA,最后创建后台进程(background process)。此时,构成实例的内存区及进程还没有和数据库产生联系。
数据库是如何挂载的
Oracle 将数据库挂载(mount)到实例,以便实例和数据库共同工作。在挂载数据库时,实例首先需要找到并打开数据库控制文件(control file)。控制文件的名称及位置信息记录在参数文件的 CONTROL_FILES 参数中。接着 Oracle 将读取控制文件获取数据库的数据文件(datafile)名及重做日志文件(redo log file)名。
此时,数据库还没有被打开,只有 DBA 才能访问数据库。当数据库处于挂载状态时,管理员可以进行维护性的操作。此时数据库的常规操作都是被禁止的。
数据库是如何打开的
将已挂载数据库(mounted database)打开(open)就可以使此数据库正常工作。任何有效的用户都可以连接到一个打开的数据库并访问其中的信息。通常数据库是处于打开状态的,以便为用户提供服务。
当管理员打开数据库时,Oracle 将打开所有联机的数据文件(datafile)及重做日志文件(redo log file)。如果数据库上次停止时某个表空间处于脱机状态,那么打开数据库时此表空间及相关的数据文件将依旧处于脱机状态。
如果 Oracle 在打开数据库时找不到所需的数据文件或重做日志文件,系统将返回错误信息。管理员必须从备份中恢复损坏或缺失的文件后,才能打开数据库。
关闭一个数据库及相关实例的三个步骤如下:
1、关闭(close)数据库
2、卸载数据库
3、停止实例
DBA 能够在企业管理器(Enterprise Manager)中执行以上操作,Oracle 也能够在实例停止时自动地执行以上步骤。
关闭数据库
当 DBA 关闭数据库时,Oracle 将 SGA 内的数据库数据及恢复数据分别写入数据文件(datafile)及重做日志文件(redo log file)。之后,Oracle 关闭所有联机的数据文件及重做日志文件。(脱机表空间的脱机数据文件已经处于关闭状态。当用户再次打开数据库时,脱机的表空间及其中的数据文件将保持脱机状态。)此时数据库已经处于关闭状态,不能执行一般操作。在数据库已经关闭但仍旧挂载时,控制文件(control file)还是处于打开状态。
卸载数据库
当数据库被关闭(close)后,Oracle 将卸载数据库,使之与实例分离。此时,实例依旧存在于计算机的内存中。
数据库被卸载后,Oracle 将关闭数据库的控制文件(control file)。
停止实例
停止(shutdown)数据库的最后一个步骤是停止实例。当 DBA 停止实例时,SGA 将被从内存中清除,后台进程将被终止。