数据库的启动和关闭是最容易出现故障的地方。
参考这篇文件 :Oracle 停机维护
一、系统权限
sysdba、sysoper是数据库中的两个超级权限,启动和关闭数据库需要这两个权限,sysdba权限包括:
1.启动、关闭数据库;
2.修改数据库,包括打开、装载、备份、修改字符集等;
3.创建数据库;
4.删除数据库;
等等。
二、数据库启动过程
oracle数据库启动经历3个阶段:启动实例(start an instance)、装载数据库(mount the database)、打开数据库(open the database)。
1.启动实例(start an instance)
Oracle会读取一个参数文件(或者是PFILE、或者是SPFILE),Oracle根据参数文件中的参数,分配一片内存区域(SGA),然后启动一系列的后台进程(数据库写入进程、日志写入进程、检查点进程、系统监控进程、进程监控进程、归档进程等),内存和进程就组成了所谓的实例。每一个进程都有自己的名字(SID)。实例启动完毕,数据库还没有跟实例关联,数据库处于NOMOUNT状态,数据库还不可访问。
PFILE是文本文件,SPFILE是二进制文件。它们的内容相同,只是格式不一样。oracle推荐使用SPFILE。
SPFILE存放在:%oracle_home%\database路径下,默认名字是spfile$oracle_sid.ora。
2.装载数据库(mount the database)
Oracle根据参数文件的参数找到控制文件(Control File),从控制文件中获得数据文件(datafile)和重做日志文件(redo log file)的名字及位置。此时,实例与数据库已经关联起来,数据库处于mount阶段,但是,普通用户还是访问不了数据库。这个阶段主要是用于数据库的维护(如恢复数据库等)
3.打开数据库(open the database)
Oracle打开数据文件和重做日志文件,这个时候数据库可以使用,普通用户可以登录数据库。
以上三个步骤可以逐步打开,即
1.启动到nomount状态
--startup nomount;
2.启动到mount状态
--startup mount;
3.打开数据库
--alter database open;
三、数据库关闭
oracle数据库关闭的四种方式有abort、immediate、normal、transactional。
1.IMMEDIATE方式使用频率最高的方式,最安全的方式。
2.ABORT方式是最快的方式,也是最不安全的方式。
3.NORMAL方式不是很常用,也是最慢的方式,可能一直都关闭不了。
4.TRANSACTIONAL方式不会使得客户端的数据丢失。关闭过程比较慢。