Oracle数据库实例的启动和关闭
启动Oracle实例
Oracle实例启动过程中,一共有4种状态,按时间先后分别是Shutdown à Nomount à Mount à Open。
Shutdown:数据库处于完全关闭状态,没有分配SGA,没有后台进程,完全无法使用;
Shutdown à Nomount:使用命令startup nomount可以将数据库实例启动,进入到nomount状态,此时会分配SGA,启动后台进程,并且Oracle会把参数文件中的内容写入到Alert文件中,如果中间出了什么问题,可以查看Alert文件。这个时候还没有数据库被关联到内存结构和后台进程,所以不能提供服务;
Nomount à Mount:可以直接使用命令startup mount从shutdown状态进入到mount,也可以使用alter database mount从nomount状态进入到mount状态。这个过程中,实例会打开参数文件中指定的控制文件,获取数据文件,重做日志文件的位置。这个时候数据库是关闭状态,只有dba可以访问,进行一些维护工作;
Mount à Open:可以直接使用命令startup命令进入open状态,也可以使用alter database open从mount进入到open状态,这个过程中,实例会打开控制文件中指定的数据文件和重做日志文件。如果没有找到数据文件或重做日志文件,oracle会报错。此时数据库就可以对外提供服务了。
启动数据库实例的完整命令是:
Startup [force][restrict][nomount][migrate][quiet] [pfile=]
[mount [exclusive] x | open
]
比较重要的参数如下:
Force:强制启动。是指上一次数据库实例的关闭没有彻底,在内存中残留有一些内容。Force选项就把以前的内容全部删除,完全重新开始;
Restrict:受限模式,只有具有特定权限(restricted session)的用户才能连接上去。常用于dba维护数据库时使用。(mount状态下可运行的命令有限)。也可以将数据库从正常状态切换到受限模式:alter system enable restricted session;
Read-only:只读模式。只允许在数据库中执行查询操作。
关闭Oracle实例
Oracle实例关闭过程中,有3个过程:close database à unmount a database à shutdown an instance。
Cloase database:将SGA中的内容写到数据文件和重做日志文件。然后Oracle数据库关闭所有在线数据文件和日志文件。此时一般用户无法访问了。此时控制文件还处于打开状态;
Unmount a database:将控制文件关闭掉。但是实例还是存在;
Shutdown an instance:杀死进程,释放内存,彻底关闭数据库实例。
关闭数据库实例的shutdown有四个选项:abort,immediate,transactional,normal。他们在关闭数据库的行为如下:
选项 A I T N
允许新的连接: 否 否 否 否
等待当前用户会话断开: 否 否 否 是
等待当前事务结束: 否 否 是 是
强制检查点: 否 是 是 是
上表清晰也简洁的指出了各个选项的不同行为:
Abort选项会强制断开当前连接的会话和结束当前事务,也不执行检查点,是最为粗暴的方式,一般不要使用,除非数据库无法关闭了;
Immediate:这是最常用的方式。断开所有会话,结束事务,但是会执行检查点,也就是未完成的事务会被回滚;
Transactional:这个选项会等待尚未提交的事务完成(提交或回滚)之后才关闭实例;
Normal:是最为温和的方式,会等待所有用户会话结束,事务完成之后再关闭。
Startup force和shutdown abort这两种方式,缓存中的内容并未被写到数据文件中,未提交的事务也没有回滚,会在数据库实例再次启动时再恢复数据,回滚未提交事务,启动时所花的时间会稍微长一些。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14969361/viewspace-545581/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14969361/viewspace-545581/