数据库的启动与停止是极为重要的管理性功能,只能由以管理员权限连接数据库的用户使用。
一、初始化参数文件与服务器参数文件
在启动实例时,Oracle 需要读取初始化参数文件(initialization parameter file)或服务器参数文件(server parameter file)。这两个文件中包含了一组供实例及数据库使用的配置参数。在较早的版本中,Oracle 将初始化参数存储于文本格式的初始化参数文件中。而在最近的版本中,用户也可以使用二进制格式的服务器参数文件(SPFILE)维护初始化参数。
服务器参数文件能够持续地(persistent)存储系统的初始化参数。在实例运行期间对初始化参数所做的修改能够保存到服务器参数文件中,供下次实例启动 时使用。
初始化参数可以被分为两部分:基础(basic)参数与高级(advanced)参数。在大多数情况下,用户只需调整基础参数就能保证数据库正常运行。而在极少数情况下,用户还需要对高级参数进行调整才能优化系统性能。
二、实例是如何启动的
当 Oracle 启动实例时,首先需要从服务器参数文件(server parameter file)或初始化参数文件(initialization parameter file)中读取初始化参数,之后创建存储数据库信息的共享内存区 SGA,最后创建后台进程(background process)。此时,构成实例的内存区及进程还没有和数据库产生联系。
管理员可以使实例以限制模式(restricted mode)启动,也可以将当前运行的实例切换到限制模式。运行在限制模式下的实例只允许具有 RESTRICTED SESSION 系统权限的用户连接到数据库。
在某些特殊情况下,一个实例也许不能被正常停止。例如,实例的某些进程没有正常结束。此时,如果用户按正常程序启动实例,数据库将返回错误。管理员需要在启动实例前手工结束系统中残留的 Oracle 进程才能解决这个问题。
三、数据库是如何挂载的
Oracle 将数据库挂载(mount)到实例,以便实例和数据库共同工作。在挂载数据库时,实例首先需要找到并打开数据库控制文件(control file)。控制文件的名称及位置信息记录在参数文件的 CONTROL_FILES参数中。接着 Oracle 将读取控制文件获取数据库的数据文件(datafile)名及重做日志文件(redo log file)名。
此时,数据库还没有被打开,只有 DBA 才能访问数据库。当数据库处于挂载状态时,管理员可以进行维护性的操作。此时数据库的常规操作都是被禁止的。
1、 RAC 系统中的数据库是如何挂载的
某些版本的 Oracle 允许多个实例同时挂载(mount)同一个数据库,DBA需要使用 CLUSTER_DATABASE 初始化参数来开启此项功能。此参数的默认值为 false。而在较早版本的不支持 RAC 的 Oracle 中,此参数只能被设为 false。
如果第一个挂载某数据库的实例的 CLUSTER_DATABASE 参数为 false,那么只有此实例才能够挂载这个数据库。而当第一个挂载数据库的实例的 CLUSTER_DATABASE 参数为 true 时,其它 CLUSTER_DATABASE 参数为 true 的实例也可以挂载同一个数据库。挂载同一数据库的实例的数量受一个预设的最大值限制,此值是在创建数据库时设定的。
2、备用数据库的挂
备用数据库(standby database)是一个与主数据库(primary database)完全相同的副本,她能在发生灾难时保证系统的持续可用性
(availability)。
备用数据库永远处于恢复模式(recovery mode)。为了构造一个备份数据库,管理与必须使用 ALTER DATABASE 语句使一个数据库以备份模式(standby mode)挂载,并将主数据库中产生的归档重做日志(archiveredo log)加载到此数据库中。
用户可以将一个备份数据库以只读模式(read-only mode)打开,作为临时的报表查询数据库。备份数据库不能以可读写状态(read/write mode)打开。
3、克隆数据库是如何挂载的
克隆数据库(clone database)是专供按时间点恢复(point-in-time recovery)表空间功能使用的数据库副本。当用户按时间点恢复表空间时,需要将克隆数据库挂载(mount)并将其中的表空间恢复到期望的时间,之后将克隆数据库中被恢复的表空间的元数据及数据文件复制到主数据库(primary database)。
四、 数据库是如何打开的
将已挂载数据库(mounted database)打开(open)就可以使此数据库正常工作。任何有效的用户都可以连接到一个打开的数据库并访问其中的信息。通常数据库是处于打开状态的,以便为用户提供服务。
当管理员打开数据库时, Oracle 将打开所有联机的数据文件(datafile及重做日志文件(redo log file)。如果数据库上次停止时某个表空间处于脱机状态,那么打开数据库时此表空间及相关的数据文件将依旧处于脱机状态。
如果 Oracle 在打开数据库时找不到所需的数据文件或重做日志文件,系统将返回错误信息。管理员必须从备份中恢复损坏或缺失的文件后,才能打开数据库。