Oracle数据库提供了几种不一样的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不一样的功能。数据库
1、启动和关闭Oracle数据库spa
要启动和关闭数据库,必需要以具备Oracle 管理员权限的用户登录,一般也就是以具备SYSDBA权限的用户登录。通常咱们经常使用INTERNAL用户来启动和关闭数据库(INTERNAL用户其实是SYS用户以SYSDBA链接的同义词)。Oracle数据库的新版本将逐步淘汰INTERNAL这个内部用户,因此咱们最好仍是设置DBA用户具备SYSDBA权限。日志
2、数据库的启动(STARTUP)orm
启动一个数据库须要三个步骤:进程
1、 建立一个Oracle实例(非安装阶段)事务
2、 由实例安装数据库(安装阶段)内存
3、 打开数据库(打开阶段)ci
在Startup命令中,能够经过不一样的选项来控制数据库的不一样启动步骤。产品
1、STARTUP NOMOUNTit
NOMOUNT选项仅仅建立一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据Oracle_SID设置,不必定要与打开的数据库名称相同。当实例打开后,系统将显示一个SGA内存结构和大小的列表,以下所示:
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 35431692 bytes
Fixed Size 70924 bytes
Variable Size 18505728 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
2、STARTUP MOUNT
该命令建立实例而且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和重做日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操做中使用,如对数据文件的改名、改变重做日志以及打开归档方式等。在这种打开方式下,除了能够看到SGA系统列表之外,系统还会给出"数据库装载完毕"的提示。
3、STARTUP
该命令完成建立实例、安装实例和打开数据库的全部三个步骤。此时数据库使数据文件和重做日志文件在线,一般还会请求一个或者是多个回滚段。这时系统除了能够看到前面Startup Mount方式下的全部提示外,还会给出一个"数据库已经打开"的提示。此时,数据库系统处于正常工做状态,能够接受用户请求。
若是采用STARTUP NOMOUNT或者是STARTUP MOUNT的数据库打开命令方式,必须采用ALTER DATABASE命令来执行打开数据库的操做。例如,若是你以STARTUP NOMOUNT方式打开数据库,也就是说实例已经建立,可是数据库没有安装和打开。这是必须运行下面的两条命令,数据库才能正确启动。
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
而若是以STARTUP MOUNT方式启动数据库,只须要运行下面一条命令便可以打开数据库: ALTER DATABASE OPEN.
4、其余打开方式
除了前面介绍的三种数据库打开方式选项外,还有另外其余的一些选项。
(1) STARTUP RESTRICT
这种方式下,数据库将被成功打开,但仅仅容许一些特权用户(具备DBA角色的用户)才可使用数据库。这种方式经常使用来对数据库进行维护,如数据的导入/导出操做时不但愿有其余用户链接到数据库操做数据。
(2) STARTUP FORCE
该命令实际上是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库遇到问题不能关闭数据库时采用。
(3) ALTER DATABASE OPEN READ ONLY;
该命令在建立实例以及安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库能够采用这种方式打开。
数据库打开分为三个阶段 :
1- nomount : 做用—维护数据库系统文件,
2- mount:做用—维护用户文件,
3- open:做用:进行数据访问,对数据作增、删、改、查
3、数据库的关闭(SHUTDOWN)
对于数据库的关闭,有四种不一样的关闭选项,下面对其进行一一介绍。
1、SHUTDOWN NORMAL
这是数据库关闭SHUTDOWN命令的确省选项。也就是说若是你发出SHUTDOWN这样的命令,也便是SHUTDOWN NORNAL的意思。发出该命令后,任何新的链接都将再不容许链接到数据库。在数据库关闭以前,Oracle将等待目前链接的全部用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时不须要进行任何的实例恢复。但须要注意一点的是,采用这种方式,也许关闭一个数据库须要几天时间,也许更长。
2、SHUTDOWN IMMEDIATE
这是咱们经常使用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。
当前正在被Oracle处理的SQL语句当即中断,系统中任何没有提交的事务所有回滚。若是系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也须要一段时间(该事务回滚时间)。系统不等待链接到数据库的全部用户退出系统,强行回滚当前全部的活动事务,而后断开全部的链接用户。
3、SHUTDOWN TRANSACTIONAL
该选项仅在Oracle 8i后才可使用。该命令经常使用来计划关闭数据库,它使当前链接到系统且正在活动的事务执行完毕,运行该命令后,任何新的链接和事务都是不容许的。在全部活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE一样的方式关闭数据库。
4、SHUTDOWN ABORT
这是关闭数据库的最后一招,也是在没有任何办法关闭数据库的状况下才不得不采用的方式,通常不要采用。若是下列状况出现时能够考虑采用这种方式关闭数据库。
1、 数据库处于一种非正常工做状态,不能用shutdown normal或者shutdown immediate这样的命令关闭数据库;
2、 须要当即关闭数据库;
3、 在启动数据库实例时遇到问题;
全部正在运行的SQL语句都将当即停止。全部未提交的事务将不回滚。Oracle也不等待目前链接到数据库的用户退出系统。下一次启动数据库时须要实例恢复,所以,下一次启动可能比平时须要更多的时间。
表1能够清楚地看到上述四种不一样关闭数据库的区别和联系。
表1 Shutdown数据库不一样方式对比表
关闭方式 A I T N
容许新的链接 × × × ×
等待直到当前会话停止 × × × √
等待直到当前事务停止 × × √ √
强制CheckPoint,关闭全部文件 × √ √ √
其中:A-Abort I-Immediate T-Transaction N-Nornal
若是你的数据库出现问题:
1- shutdown abort;
2- startup;
3- shutdown immediate;
staru