DBA之路—数据库启动与关闭过程
1、启动过程
oracle启动的四个状态
-
shutdown、就是数据库关闭状态。
-
nomount模式
#启动instance ,读取参数文件、分配sga空间启动后台进程,打开alter日志和其他trace文件 startup nomount #该模式下只会创建实例并不加载数据库,oracle仅为实力加载内存结构和服务进程。不打开任何数据文件。 #只可以访问sga相关的数据字典视图。因为只有sga启动了 #用途 #创建新的数据库(不是数据库实例) #重建控制文件
-
mount、
#进行数据库实例的加载,但是此时数据库还是处于关闭状态。一般是数据库控制文件的加载,但是因为此时数据库是关闭的所以用户无法对数据文件和重做日志进行读写. startup mount #此状态下只能访问数据字典关联的视图和sga关联的视图,THREAD、VCONTROLFILE、VDATABASE、VDATAFILE、V$LOGFILE #用途 #重新命令redo重做日志文件 #增删改查重做日志文件名称 #执行数据库完全恢复操作 #更改和操作归当模式和日志
-
open。
startup #数据库已经完全启动
oracle额外还有一个强制启动模式
startup force
#在上面四种命令无效,且不知道处于什么状态下使用,不推荐
针对不同模式支持alter语句进行切换
select status from v$instance;#查看状态
alter database mount; #open nomount
2、数据库关闭过程
oracle关闭的四种过程:
-
normal
shutdown normal#正常关闭数据库 #阻止任何用户建立新的连接,注意是新的链接 #等待当前正在连接的用户主动断开连接,全部连接断掉后立刻关闭同时卸载数据库,终止实例
-
immediate
shutdown immediate#直接关闭数据库终止实例 #强制断开所有连接,终止当前所有事物,未进行commit的会回退(未提交事务过多会影响关闭时间)
-
transactional
shutdown transactional#不影响当前进行事务的关闭 #阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。 #等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。 #直接关闭、卸载数据库,并终止实例。
-
abort
shutdown abort#强制关闭操作,会造成一部分数据丢失 #阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。 #立即终止当前正在执行的SQL语句。 #任何未提交的事务均不被退名。 #直接断开所有用户的连接,关闭、卸载数据库,并终止实例。 #此状态下关闭的数据库实例在被重新打开时smon进程会尝试进行实例恢复操作来减少损失