分类: Oracle
2008-04-23 11:21:31
不过现实中,我们可能想要指定很多其他的选项。下面我们来看看现实中创建Oracle数据库脚本更真实的例子:
|
详解创建的各阶段
当我们发布“startup nomount”的指令时,我们是让Oracle以一种不同于平常使用的方式启动。不同在哪里呢?我们让Oracle。其实,我们让Oracle只启动实例,而不安装数据库,也不打开数据库,并启动所有的后台进程,并为系统全局区域(SGA)分配内存。为什么不启动数据库?因为在现阶段我们还没有一个可以挂载的数据库,也就是以一个有效形式存在的数据文件集合。
当我们发出“create database”指令的时候,Oracle将创建系统表空间、sysaux表空间、undo表空间和临时表空间,并为该数据库设置字符集。也就是设置数据文件的头信息,表明我们想要创建本地管理表空间,还有就是设置归档或非归档模式。一旦这些都完成了,Oracle就会运行一个名为sql.bsq的神奇文件。建议大家看看这个文件的内容,会很有趣且很有用。这是Oracle的自举代码(bootstrapping code),可以供我们查看并了解其中内容。我们可以在$ORACLE_HOME/rdbms/adminsql.bsq目录中找到这个sql.bsq文件。注意,这个文件会随着版本的不同而有所改变,所以定期查看一下其中的变化很能说明一些问题。
这个运行之后,就是创建Oracle数据字典了。catalog.sql和catproc.sql只是在真正的数据字典上创建有用的视图以及每个Oracle数据库都需要有的各种存储过程、包和函数。
结论
手动创建数据库并不是一件只和命令行打交道的乏味单调的苦差事,它可以很有趣也可以很有意义。深入了解Oracle数据库创建的过程有助于你理解数据库的内部运作原理,让我们可以了解构成每个Oracle数据库方方面面的元素。在这个过程中,我们可以了解更多关于init.ora、Oracle所倚赖的自举脚本、数据字典的创建机制以及实例和数据库之间的区别等等重要的知识。