您当前的位置:数据库学习网SQL数据库教程 → 文章内容

手工创建oracle9i数据库

作者:佚名  来源:本站整理  发布时间:2007-8-29 8:25:30

操作系统:winxp

数据库: Oracle 9i R2 (9.2.0.1)
安装路径: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 9.2.0.1.0 - Production on 星期五 8月 24 07:53:23 2007

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 9.2.0.1.0 - Production on 星期五 8月 24 08:06:08 2007

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建立的时候有更大的灵活性。

  • 上一篇文章:SQL Server 索引策略
  • 下一篇文章:oracle 10g 闪回功能