<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Oracle 9i下手动创建可以使用的数据库

参考资料:Oracle 9i 联机文档

作者邮箱:[email]ministorager@gmail.com[/email]

平台描述:

这篇文档我所使用的是Linux(Centos 4.5/Oracle 9i)

我已经安装了Oracle9i并已经创建了一个database

已经创建好的database:instance_name=db2  oracle_sid=db2

即将手工创建的数据库会用到我已经创建好的db2这个数据库的一些内容,仔细看!

Step01>

首先我要检查一下磁盘空间是否足够再创建一个数据库!

使用命令:df  -h(在操作系统上执行这个命令,相信大家都会了)

设置Oracle的环境变量,这里我写了一个脚本:bbk.env

脚本内容如下:

ORACLE_BASE=/u01

ORACLE_HOME=$ORACLE_BASE/oracle

ORACLE_SID=bbk

ORACLE_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

PATH=$ORACLE_HOME/bin:$PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_NLS33 PATH LD_LIBRARY_PATH

执行这个脚本之前给它执行权限:chmod  +x   bbk.env

执行脚本:. ./bbk.env (注意这里是点空格点斜杠)

检查环境变量:

命令:env  |  grep  ORA

仔细看一下当前的环境变量里的各项是否是你脚本里所设置的,尤其是Oracle_sid,它在这里的值应该是ORACLE_SID=BBK,而不是系统默认(我已经创建的那个)的db2

Step02>

创建口令文件:

命令是:orapwd file=orapwbbk password=oracle entries=10

仔细检查一下,是否创建了这个口令文件!

Step03>

创建初始化参数文件:

这里我有三种方法>

1>我可以用Oracle默认的init.ora进修修改,由于这个文件的最后修改日期很老,是针对8i的数据库设计的初始化参数文件,修改起来很麻烦,容易出错,这里不建议使用这个!

2>我把我已经创建好的db2这个数据库的初始化参数文件借用了一下,进行了一下修改!

3>你还可以找一个DBA高手,跟他要一份它的数据库参数文件来自己借鉴修改一下!

这里我采用的是第二种方法,修改操作如下:

执行os命令:strings spfiledb2.ora > initbbk.ora

编辑拷贝生成的参数文件:vim initbbk.ora

在vim编辑模式执行替换动作,你要一个一个的修改也可以!

:%s/db2/bbk/g (这里把参数文件中包含db2的字符创全部换成bbk)

保存退出!

因为参数文件中有的目录在os上并不存在,所以我们需要,对应参数文件创建相应的目录!

创建目录如下:

Os命令:cd $ORACLE_BASE/oradata/

 mkdir  bbk

 cd  $ORACLE_BASE/oradata/bbk

 mkdir  archive

 cd  $ORACLE_BASE/admin

 mkdir  bbk

 cd  $ORACLE_BASE/admin/bbk

 mkdir  bdump 

 mkdir  cdump 

 mkdir  create

 mkdir  pfile

         mkdir  udump 

到这里对应参数文件里的相应目录创建完毕!

接下来,登陆sqlplus创建spfile

命令:sqlplus   /nolog

      conn  /  as   sysdba

      create spfile from pfile

仔细检查是否创建成功!

Step04>

启动并连接instance

命令:sqlplus  /nolog

      conn  /  as  sysdba

      startup  nomount(这里仅仅启动instance分配SGA)

接下来,执行创建数据库的脚本:bbk.sql

脚本内容如下:

spool dbcreatebbk.log

CREATE DATABASE "bbk"

        MAXDATAFILES 500

        MAXINSTANCES 8

        MAXLOGFILES  32

        CHARACTER SET "UTF8"

        NATIONAL CHARACTER SET AL16UTF16

        ARCHIVELOG

        DATAFILE

                '/u01/oradata/bbk/system01.dbf' size 300M

        EXTENT MANAGEMENT LOCAL

        DEFAULT TEMPORARY TABLESPACE temp TEMPFILE 

        '/u01/oradata/bbk/tempts01.dbf' size 100M EXTENT MANAGEMENT LOCAL

        UNDO TABLESPACE "UNDOTBS1"

        DATAFILE '/u01/oradata/bbk/undotbs01.dbf' size 200M

        LOGFILE

        GROUP 1 (

        '/u01/oradata/bbk/redo01a.rdo',

        '/u01/oradata/bbk/redo01b.rdo'

        ) SIZE 100M,

        GROUP 2 (

        '/u01/oradata/bbk/redo02a.rdo',

        '/u01/oradata/bbk/redo02b.rdo'

        ) SIZE 100M,

        GROUP 3 (

        '/u01/oradata/bbk/redo03a.rdo',

        '/u01/oradata/bbk/redo03b.rdo'

        ) SIZE 100M

        ;

spool off

这里说明一下:

spool dbcreatebbk.log

把创建数据库的过程信息放到这个日志文件里,可以查看数据库创建时的出错信息,可以用来排错!

你还可以监控警告日志文件,看数据库的创建过程是否报错!

命令:tail  -f  $ORACLE_BASE/admin/bbk/bdump/alert_bbk.log

接下来,执行创建数据库脚本:

SQL>@$ORACLE_HOME/dbs/bbk.sql

这里要等待几分钟,创建完毕!

这个时候检查一下,os上是否已经创建了相关的文件

查看的目录:

ls $ORACLE_BASE/oradata/bbk/

ls $ORACLE_BASE/admin/bbk/

查看后相应的数据文件和dump文件已经创建!

这个时候我们已经创建完bbk这个数据库,但我们不可能把自己的数据放到系统表空间里,所以我创建了一个用户表空间,创建命令我写成了脚本:usertablespace.sql

脚本内容如下:

spool usertablespace.log

        CREATE TABLESPACE "mytbs"

        DATAFILE

        '/u01/oradata/bbk/mytbs01.dbf' SIZE 100M EXTENT MANAGEMENT LOCAL

        ;

spool off

执行脚本:

SQL>@$ORACLE_HOME/dbs/usertablespace.sql

创建完毕,检查oradta下是否已经创建了这个用户表空间!

Step05>

接下来,我要在创建的数据库中加入数据字典信息!

执行内容和命令:

@?/rdbms/admin/catalog.sql

@?/rdbms/admin/catproc.sql

@?/sqlplus/admin/pupbld.sql

SQL>spool logcatalog.log

SQL>@?/rdbms/admin/catalog.sql

SQL>spool logcataproc.log

SQL>@?/rdbms/admin/catproc.sql

SQL>spool logpupbld.log

SQL>@?/sqlplus/admin/pupbld.sql

注意:这里的?表示 $ORACLE_HOME

在执行上面的脚本中,会出现一些警告信息,例如表不存在,视图不存在,这都是正常的,因为Oracle在创建一个表之前要先删除这个表,如果没有这个表就会出现这些警告信息!

在rdbms这个目录下还有很多脚本,你可以根据你的需要执行这些脚本,增加一些新的功能!

以上脚本执行完毕后:

关闭instance

命令:shutdown immediate(这里并没有打开数据库,所以就相当于是关闭instance)

然后退出sqlplus,再登陆进来启动测试!

命令:sqlplus /nolog

      conn / as sysdba

      startup

数据库启动后进行测试是否正常工作!

测试命令:

Select * from dual;

查看数据字典是否可以用!

Select * from dba_tables;

创建一个表,插入数据,看是否能查看到!

create table test(id integer,name char(10));

Insert into test values(0,'ministorager');

commit;

select * from test;

查看新创建数据库的实例名和数据库名!

select instance_name from v$instance;

select dbid,name from v$database;

查看是否归档状态!

archive log list

select archiver from v$instance;

select log_mode from v$database;

Oracle9i上手工创建数据库顺利完成!

感谢您的阅读!