关于数据库启动和停止我们如果有所经验,总认为只有一句命令罢了。可是命令后面的的操作过程,如果量化形容,我看见过一本书用了100多页专门讲这个。我们只是讲一点点而已。
我们眼里的数据库启动情况。
详细的过程。从网上盗的图。
1、shutdown->nomount
这个过程中,sql plus做了一件事,启动实例,使实例的状态变成started。我们所要关注的一件事在startup nomount的过程中,数据库加载了一个文件。我们先查一下spfile。
为了验证,数据库会加载这个文件,我们把这个文件挪走。
为什么我们挪走的是spfileteid.ora而提示的确是initteid.ora,为什么?我们现在先创建这个文件。
我们再把spfile挪走。启动
启动到nomount成功。也就是说spfile和pfile只要存在一个,实例都是可以启动的。两者有什么区别?spfile内容截图:
明显非纯文本文件,有乱码。pfile文件内容:
pfile是我们根据spfile创建的,意味着其实两者有着相同的作用,简单点说:动态参数修改以后会直接写入spfile之中,而不要像pfile一样,手动修改文本文档。spfile的修改:参数的种类分为:Database参数、system参数、session参数。其实我们更要搞懂的是静态参数和动态参数,它决定了我们该怎么修改。
为什么会出现上面的场景。我们先得从静态属性和动态属性开始。静态属性不能直接修改,需要修改以后,重启服务器。动态属性可以直接修改,修改以后不需要重启服务器。我们在说说scope的几个值:spfile、memory、both。不难理解,一个修改到spfile里面,一个在内存中生效,最后那个就是两者都同时修改(不加参数的情况下如此)。静态参数先修改到spfile中,再重启生效,动态可以直接两边生效。create pfile from spfile;
create pfile from memory;
create spfile from pfile;
create spfile from memory;我们稍微总结一下,这个过程可以说是系统通过pfile或者spfile把数据库的实例启动了。2、nomount->mount从shutdown到nomount,我们使用了spfile或者pfile。在pfile里面有这么句。我们可以通过这一句定位到控制文件。
这样我们就把Database改到mount状态。我们再说说,这一过程,发生了什么?简单点说:加载控制文件。我们再说说控制文件什么作用。a.数据库名称以及数据库创建时间b.所有数据文件和重做日志文件的名称和位置。c.表空间信息。d.offline数据文件信息。e.重做日志及归档日志信息等等,不说了。我们只要知道很多信息就好,这些分别信息代表什么,看得懂的就说一下,看不懂的就算了。这个状态的转变主要就是加载控制文件。3、mount->open根据控制文件的信息,加载数据库文件,加载日志文件,从而打开数据库。
关闭记住几条命令就行了。
normal:不允许新连接;等待当前session结束;等待当前的事务结束;强制检查点并关闭文件。
transactional:不允许新连接;不等待当前session结束;等待当前的事务结束;强制检查点并关闭文件。
immediate:不允许新连接;不等待当前session结束;不等待当前的事务结束;强制检查点并关闭文件。
abort:不允许新连接;不等待当前session结束;不等待当前的事务结束;不强制检查点并关闭文件。
启动需要了解的是几个状态,了解几个文件,特别是spfile和pfile的关系。以及参数的设置,控制文件的作用。关闭要记住后两条命令。最后献上一篇很详细的文章。Oracle 数据库实例启动关闭过程 :http://blog.csdn.net/robinson_0612/article/details/5542983