<?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上手工创建数据库顺利完成!
感谢您的阅读!
转载于:https://blog.51cto.com/ministorager/132242