Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103759632
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-23 11:21:31

作者: 小灵 出处: 
 

不过现实中,我们可能想要指定很多其他的选项。下面我们来看看现实中创建Oracle数据库脚本更真实的例子:

connect / as sysdba;
startup nomount;
CREATE DATABASE "dbj"
DATAFILE
'/u01/oradata/sysdbj01.dbf' size 500M
SYSAUX DATAFILE
'/u01/oradata/auxdbj01.dbf' size 500M
UNDO TABLESPACE dbjundo DATAFILE
'/u01/oradata/unddbj01.dbf' size 250M
LOGFILE
'/u02/oradata/rdodbj01.dbf' size 10M,
'/u02/oradata/rdodbj02.dbf' size 10M
CHARACTER SET "WE8ISO8859P1"
NATIONAL CHARACTER SET "UTF8"
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE mytemp TEMPFILE
'/u01/oradata/tmpdbj01.dbf' SIZE 500M
NOARCHIVELOG
MAXDATAFILES 1000
MAXLOGFILES 10;
# create the rest of the data dictionary
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql

详解创建的各阶段

当我们发布“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所倚赖的自举脚本、数据字典的创建机制以及实例和数据库之间的区别等等重要的知识。

阅读(555) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~