最近几天测试机上的数据库在停止时候一直卡在那里.我是使用shutdown immediate停止数据库的.
从网上找了篇文章,里面提到在shutdown之前先用alter system checkpoint命令保存一下检查点.为什么这个操作有效呢?
我再次去网上查找alter system checkpoint的作用,了解到这个命令是显式地让oracle数据库执行一个检查点,保证所有已提交的事务生成的变动都被写入磁盘上的数据文件.
而且从这篇文章(http://space.itpub.net/94384/viewspace-684442)来看,在数据库停库前,如果没有执行alter system checkpoint,会导致cache中的信息没有及时写入controlfile.
于是我猜想,是否在数据库停止时候,后台会做数据同步的工作呢,即将cache中的数据同步到磁盘上,写入对应的数据文件中.
至少solaris系统就是这么做的.如果意外断电,重启系统后很有可能要执行fsck去修复文件数据不一致的问题.