概述mysql
只有具有sysdba和sysoper系统特权的用户才能启动和关闭数据库。sql
在启动数据库以前应该启动监听程序,不然就不能利用命令方式来管理数据库,包括启动和关闭数据库。数据库
虽然数据库正常运行,但若是没有启动监听程序,客户端就不能链接到数据库。缓存
在oracle用户下: 启动监听程序 lsnrctl start 关闭监听程序lsnrctl stopsession
查询监听程序状态lsnrctl statusoracle
startup.net
支持参数rest
STARTUP options | upgrade_options日志
options为:[FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname]对象
| [ OPEN [open_options] [dbname] ] | NOMOUNT ],
NOMOUNT、MOUNT、OPEN为startup的三个阶段,不能在命令中同时存在。其中,open_options为:READ {ONLY
| WRITE [RECOVER]} | RECOVER。
upgrade_options为:[PFILE=filename] {UPGRADE | DOWNGRADE} [QUIET]
简单地说,就是:启动实例-->加载数据库-->打开数据库.
------------------------------------------------------------------------------------------------------------------
1.建立并启动与数据库对应的实例。
在启动实例时,将为实例建立一系列后台进程和服务进程,而且在内存中建立SGA区等内存结构。在实例启动的过程当中只会使用到初始化参数文件,数据库是否存在对实例的启动没有影响。若是初化参数设置有误,实例将没法启动。
2.为实例加载数据库。
加载数据库时实例将打开数据库的控制文件,从控制文件中获取数据库名称、数据文件的位置和名称等有关数据库物理结构的信息,为打开数据库作好准备。若是控制文件损坏,则实例将没法加载数据库。在加载数据库阶段,实例并不会打开数据库的物理文件----数据文件和重作日志文件。
3.将数据库设置为打开状态。
打开数据库时,实例将打开全部处于联机状态的数据文件和重作日志文件。控制文件中的任何一个数据文件或重作日志文件没法正常打开,数据库都将返回错误信息,这时须要进行数据库恢复。
只有将数据库设置为打开状态后,数据库才处于正常状态,这时普通用户才可以访问数据库。在不少状况下,启动数据库时并非直接完成上述3个步骤,而是逐步完成的,而后执行必要的管理操做,最后才使数据库进入正常运行状态。因此,才有了各类不一样的启动模式用于不一样的数据库维护操做。
由于Oracle数据库启动过程当中不一样的阶段能够对数据库进行不一样的维护操做,对应咱们不一样的需求,因此就需不一样的模式启动数据库。
小白:在启动实例以前,须要先启动SQL*Plus,并以一个用户身份链接到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语句,还能够在各启动模式间切换。而且,还能够对数据库设置不一样的状态用于不一样的操做,如受/非受限抽状态、只读。
使用Alter Database语句,在各启动模式间切换。
(1)从NoMount模式切换到Mount模式(没有从mount切换到nomount的):
命令:ALTER DATABASE MOUNT;
(2)当数据库状态为关闭时,切换到Open模式
命令:ALTER DATABASE OPEN;
(3)在Open模式下,还能够选择将数据库设置为非受限状态和受限状态。
命令:
在启动Open模式时,添加restrict关键字:startup restrict
设置或取消受限状态:alter system enable\disable restricted session;
讲解:
非受限状态,就是咱们平时应用程序开发用到的状态。
受限状态,当打开的数据库被设置为受限状态时,只有Create Session 和 Restricted Session系统权限 或者 具备SYSDBA 和 SYSPORE 系统权限的用户才能链接到数据库。但进入受限状态后,系统中仍然可能会存在活动的普通用户会话。
受限状态用途:
(1)执行数据导入或导出操做;
(2)暂时拒绝普通用户访问数据库;
(3)进行数据库移植或升级操做。
(4) 只读状态
设置只读命令:alter database open read only;
取消只读命令:alter database open read write;
用途&讲解:当一个正常打开的数据库被设置为只读状态时,用户只能查询数据,但不能以任何方式对数据库对象进行修改。处于只读状态,可能保证数据文件和重作日志文件中的内容不被修改,可是并不限制那些不会写入数据文件与重作日志文件的操做。
关闭数据库与实例
与数据库启动一下,关闭数据库与实例也分为3步:关闭数据库-->实例卸载数据库--->终止实例。
(1)关闭数据库,oracle将重作日志高速缓存中的内容写入重作日志文件,而且将数据库高速缓存中被改动过的数据写入数据文件,而后再关闭全部的数据文件和重作日志文件,这时数据库的控制文件仍然处于打开状态,可是因为数据库处于关闭状态,因此用户没法访问数据库。
(2)卸载数据库,关闭数据库后,例程才能被卸载,控制文件再这个时候被关闭,但例程仍然存在 。
(3)终止例程,进程终止,分配给例程的内存sga区被回收。
1.Nomal(正常关闭方式)
命令:shutdown nomal
讲解:正常方式关闭数据时,Oracle执行以下操做:
(1)阻止任何用户创建新的链接。
(2)等待当前全部正在链接的用户主动断开链接(此方式下Oracle不会当即断掉当前用户的链接,这些用户仍然操做相关的操做)
(3)一旦全部的用户都断开链接,则当即关闭、卸载数据库,并终止实例。(因此,通常以正常方式关闭数据库时,应该通知全部在线的用户尽快断开链接)
2.Immediate(当即关闭方式)
命令:shutdown immediate
讲解:
(1)阻止任何用户创建新的链接,同时阻止当前链接的用户开始任何新的事务。
(2)Oracle不等待在线用户主动断开链接,强制终止用户的当前事务,将任何未提交的事务回退。(若是存在太多未提交的事务,此方式将会耗费很长时间终止和回退事务)
(3)直接关闭、卸载数据库,并终止实例。
3.Transactional(事务关闭方式)
命令:shutdown transactional
讲解:这种方式介于正常关闭方式跟当即关闭方式之间,响应时间会比较快,处理也将比较得当。执行过程以下:
(1)阻止任何用户创建新的链接,同时阻止当前链接的用户开始任何新的事务。
(2)等待全部未提交的活动事务提交完毕,而后当即断开用户的链接。
(3)直接关闭、卸载数据库,并终止实例。
4.Abort(终止关闭方式)
命令:shutdown abort
讲解:这是比较粗暴的一种关闭方式,当前面3种方式都没法关闭时,能够尝试使用终止方式来关闭数据库。可是以这种方式关闭数据库将会丢失一部份数据信息,当从新启动实例并打开数据库时,后台进程SMON会执行实例恢复操做。通常状况下,应当尽可能避免使用这种方式来关闭数据库。执行过程以下:
(1)阻止任何用户创建新的链接,同时阻止当前链接的用户开始任何新的事务。
(2)当即终止当前正在执行的SQL语句。
(3)任何未提交的事务均不被退名。
(4)直接断开全部用户的链接,关闭、卸载数据库,并终止实例。