操作系统:winxp
数据库: Oracle 9i R2 (
安装路径:d:\oracle\ora92
数据库实例:orcl92
数据库全局名称:orcl92
一、 手工创建相关目录
这些目录是新建数据库的一些必要的文件夹之类,比如初始化参数文件夹,udump文件夹,数据文件文件夹等等,下面列出的是一个最基本的目录表
d:\oracle\admin\orcl92\arch\
d:\oracle\admin\orcl92\bdump\
d:\oracle\admin\orcl92\create\
d:\oracle\admin\orcl92\pfile\
d:\oracle\admin\orcl92\udump\
d:\oracle\oradata\orcl92\
注意:建立以上前4个文件夹比较简单的方法是,将D:\Oracle\Ora92\ADMIN文件夹下面的sample文件直接拷贝到d:\oracle\admin\下,然后修改为你要建立的数据库的名称即可。数据文件文件夹就一个文件夹,创建过程比较简单。
二、 手工创建数据库初始化参数文件
你可以手工创建一个数据库初始化参数文件,也可以从其他已有数据库中拷贝一个初始化文件然后稍加修改即可。
其中需要修改的初始化文件中的参数只要有:
db_name = "orcl92"
db_domain = ""
instance_name = orcl92
service_names = orcl92
control_files = (………………………………)
background_dump_dest =
utl_file_dir =
还有undo_tablespace参数,此处未指定,后面会报错(见创建部分)
还有其他一些与路径有关系的参数。由于初始化参数文件比较大就不详细列举了。
将修改后的参数文件保存为initorcl92.ora,保存到:D:\oracle\ora92\database\
(或将参数文件保存在D:\oracle\admin\orcl92\pfile中,启动时候需要指定pfile)
三、 安装实例并创建密码文件
此时使用orcl92登录数据库,会出现错误,因为还没有创建该实例或服务。需要使用oradim创建手工启动实例,并修改为自动启动:
C:\Documents and Settings\IBM>set oracle_sid=orcl92
C:\Documents and Settings\IBM>sqlplus "/ as sysdba"
SQL*Plus: Release
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-12560: TNS: 协议适配器错误
请输入用户名:
C:\Documents and Settings\IBM>oradim
ORADIM: <command> [options]。 请参阅手册。
请输入以下命令之一:
通过指定以下参数创建例程:
-NEW -SID sid | -SRVC service [-INTPWD password] [-MAXUSERS number] [-STARTMODE a|m] [-PFILE file] [-TIMEOUT secs]
通过指定以下参数编辑例程:
-EDIT -SID sid [-NEWSID sid] [-INTPWD passwd] [-STARTMODE a|m] [-PFILE file] [-SHUTMODE a|i|n] [-SHUTTYPE srvc|inst]
通过指定以下参数删除例程:
-DELETE -SID sid | -SRVC service name
通过指定以下参数启动服务和例程:
-STARTUP -SID sid [-USRPWD password] [-STARTTYPE srvc|inst|srvc,inst] [-PFILE filename]
通过指定以下参数关闭服务和例程:
-SHUTDOWN -SID sid [-USRPWD password] [-SHUTTYPE srvc|inst|srvc,inst] [-SHUTMODE a | i | n]
通过指定以下参数查询帮助: -? | -h | -help
您为 -NEW 命令输入了无效的选项
C:\Documents and Settings\IBM>oradim -new -sid orcl92 -startmode m -pfile D:\oracle\ora92\database\initorcl92.ora
C:\Documents and Settings\IBM>
此时在服务中可以看到该实例对应的服务,启动方式为手动。
C:\Documents and Settings\IBM>oradim -edit -sid orcl92 -startmode a
C:\Documents and Settings\IBM>
此时再查询服务列表,该服务已经变成自动启动。
创建密码文件
C:\Documents and Settings\IBM>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users>
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.
C:\Documents and Settings\IBM>orapwd file=D:\oracle\ora92\database\pwdorcl92.ora password=test92 entries=5
C:\Documents and Settings\IBM>
此时已经可以连接到该例程
C:\Documents and Settings\IBM>set oracle_sid=orcl92
C:\Documents and Settings\IBM>sqlplus "/as sysdba"
SQL*Plus: Release
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已连接到空闲例程。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL>
四、 创建数据库
创建数据库的脚本:D:\Oracle\Ora92\RDBMS\ADMIN\BUILD_DB.SQL。
这个文件里面需要进行修改以满足新的数据库要求,但部分脚本是oracle8i的,并不适合oracle9i,不需要执行。
SQL> create database orcl92
2 controlfile reuse
3 logfile ''D:\oracle\oradata\orcl92\redo01.log'' size 10M reuse,
4 ''D:\oracle\oradata\orcl92\redo02.log'' size 10M reuse,
5 ''D:\oracle\oradata\orcl92\redo03.log'' size 10M reuse,
6 ''D:\oracle\oradata\orcl92\redo04.log'' size 10M reuse
7 datafile ''D:\oracle\oradata\orcl92\system01.dbf'' size 100M reuse autoextend on
8 next 10M maxsize 500M
9 character set zhs16gbk;
create database orcl92
*
ERROR 位于第 1 行:
ORA-01092: ORACLE 例程终止。强行断开连接
检查警告日志文件:
create database orcl92
controlfile reuse
logfile ''D:\oracle\oradata\orcl92\redo01.log'' size 10M reuse,
''D:\oracle\oradata\orcl92\redo02.log'' size 10M reuse,
''D:\oracle\oradata\orcl92\redo03.log'' size 10M reuse,
''D:\oracle\oradata\orcl92\redo04.log'' size 10M reuse
datafile ''D:\oracle\oradata\orcl92\system01.dbf'' size 100M reuse autoextend on
next 10M maxsize 500M
character set zhs16gbk
Fri Aug 24 10:51:46 2007
Database mounted in Exclusive Mode.
Fri Aug 24 10:51:48 2007
Successful mount of redo thread 1, with mount id 2434139073.
Assigning activation ID 2434139073 (0x911603c1)
Thread 1 opened at log sequence 1
Current log# 1 seq# 1 mem# 0: D:\ORACLE\ORADATA\ORCL92\REDO01.LOG
Successful open of redo thread 1.
Fri Aug 24 10:51:48 2007
WARNING: Default passwords for SYS and SYSTEM will be used.
Fri Aug 24 10:51:48 2007
SMON: enabling cache recovery
Please change the passwords.
Fri Aug 24 10:51:48 2007
ARC1: Media recovery disabled
Fri Aug 24 10:51:49 2007
Errors in file d:\oracle\admin\orcl92\udump\orcl92_ora_3312.trc:
ORA-01501: CREATE DATABASE ??
ORA-30045: ??????????
检查orcl92_ora_3312.trc文件:
Instance name: orcl92
Redo thread mounted by this instance: 1
Oracle process number: 14
Windows thread id: 3312, image: ORACLE.EXE
*** SESSION ID:(11.1) 2007-08-24 10:51:48.000
ORA-01501: CREATE DATABASE ??
ORA-30045: ??????????
查询ORA-01501错误
ORA-01501 CREATE DATABASE failed
Cause: An error occurred during CREATE DATABASE.
Action: See accompanying errors.
查询ORA-30045错误
ORA-30045 No undo tablespace name specified
Cause: If Create Database has the datafile clause, then undo tablespace name has to be specified, unless using OMF.
Action: Specify the undo tablespace name.
使用DBCA删除该数据库,重新创建。同时修改创建数据库脚本,增加UNDO表空间,修改初始化参数文件,*.undo_tablespace=''UNDOTBS92''
SQL> create database orcl92
2 controlfile reuse
3 logfile ''D:\oracle\oradata\orcl92\redo01.log'' size 10M reuse,
4 ''D:\oracle\oradata\orcl92\redo02.log'' size 10M reuse,
5 ''D:\oracle\oradata\orcl92\redo03.log'' size 10M reuse,
6 ''D:\oracle\oradata\orcl92\redo04.log'' size 10M reuse
7 datafile ''D:\oracle\oradata\orcl92\system01.dbf'' size 500M reuse autoextend on
8 next 10M maxsize 1000M
9 undo tablespace undotbs92 datafile ''D:\Oracle\oradata\orcl92\undotbs92.dbf'' size 10m
10 character set zhs16gbk;
数据库已创建。
SQL> create tablespace users
2 datafile ''D:\oracle\oradata\orcl92\users01.dbf'' size 10M reuse autoextend on
3 next 10M maxsize 20M;
表空间已创建。
SQL> create temporary tablespace temp
2 tempfile ''D:\oracle\oradata\orcl92\temp01.dbf'' size 10M reuse autoextend on
3 next 10M maxsize 20M;
表空间已创建。
SQL> alter user system temporary tablespace temp;
用户已更改。
SQL> alter user system default tablespace users;
用户已更改。
SQL>
五、 创建数据字典
此时所有v$xxx类型的视图已经建立,但其他类型的数据字典需要手工创建(例如,dba_data_files, dba_tablespaces…)。
数据字典包:catalog.sql
Pl/sql程序包:catproc.sql
数据复制支持软件包:catproc.sql
Initjvm.sql
Pupbld.sql
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl92
SQL> select * from user_tables;
select * from user_tables
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
SQL>start D:\oracle\ora92\rdbms\admin\ catalog.sql
…
SQL>start D:\oracle\ora92\rdbms\admin\ catproc.sql
…
总结:经过以上五步就可以完成手工建立数据库。手工建立数据库比用dbca建立的时候有更大的灵活性。