概述:只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库。
在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库。
虽然数据库正常运行,但如果没有启动监听程序,客户端就不能连接到数据库。
Oracle数据库的完整启动过程包含以下3个步骤:
简单地说,就是:启动实例-->加载数据库-->打开数据库.
具体说明:
1.创建并启动与数据库对应的实例。
在启动实例时,将为实例创建一系列后台进程和服务进程,并且在内存中创建SGA区等内存结构。在实例启动的过程中只会使用到初始化参数文件,数据库是否存在对实例的启动没有影响。如果初化参数设置有误,实例将无法启动。
2.为实例加载数据库。
加载数据库时实例将打开数据库的控制文件,从控制文件中获取数据库名称、数据文件的位置和名称等有关数据库物理结构的信息,为打开数据库做好准备。如果控制文件损坏,则实例将无法加载数据库。在加载数据库阶段,实例并不会打开数据库的物理文件----数据文件和重做日志文件。
3.将数据库设置为打开状态。
打开数据库时,实例将打开所有处于联机状态的数据文件和重做日志文件。控制文件中的任何一个数据文件或重做日志文件无法正常打开,数据库都将返回错误信息,这时需要进行数据库恢复。
只有将数据库设置为打开状态后,数据库才处于正常状态,这时普通用户才能够访问数据库。在很多情况下,启动数据库时并不是直接完成上述3个步骤,而是逐步完成的,然后执行必要的管理操作,最后才使数据库进入正常运行状态。所以,才有了各种不同的启动模式用于不同的数据库维护操作。
因为Oracle数据库启动过程中不同的阶段可以对数据库进行不同的维护操作,对应我们不同的需求,所以就需不同的模式启动数据库。
各种模式详解:
1.NoMount 模式(启动实例不加载数据库)
命令:startup nomount
讲解:这种启动模式只会创建实例,并不加载数据库,Oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据文件。在NoMount模式下,只能访问那些与SGA区相关的数据字典视图,包括V$PARAMETER、V$SGA、V$PROCESS 和 V$SESSION等,这些视图中的信息都是从SGA区中获取的,与数据库无关。非安装启动,这种方式启动下可执行:重建控制文件、重建数据库、读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
模式用途:
(1)创建新数据库;
(2)重建控制文件。
2.Mount模式(加载数据库但不打开数据库)
命令:startup mount
讲解:这种启动模式将为实例加载数据库,但保持数据库为关闭状态。因为加载数据库时需要打开数据库控制文件,但数据文件和重做日志文件都都无法进行读写,所以用户还无法对数据库进行操作。 在Mount模式下,只能访问那些与控制文件相关的数据字典视图,包括V$THREAD、V$CONTROLFILE、V$DATABASE、V$DATAFILE 和 V$LOGFILE等,这些视图都是从控制文件中获取的。
模式用途:
(1)重命名数据文件;
(2)添加、删除或重命名重做日志文件;
(3)执行数据库完全恢复操作;
(4)改变数据库的归档模式。
3.Open模式(正常打开数据库)
命令:startup [open]
讲解:正常按3个步骤启动数据库。
模式用途:平时不对数据库做什么维护,像只做应用开发,用这个模式就好了。
4.强制启动模式
命令:startup force
用途&讲解:在某些情况下,使用前面的各种模式都无法成功启动数据库时,可以尝试强制启动模式。
使用Alter Database语句,还可以在各启动模式间切换。并且,还可以对数据库设置不同的状态用于不同的操作,如受/非受限抽状态、只读。