Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3387772
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类: LINUX

2008-08-02 15:09:00

一 创建数据库的步骤

创建一个可使用的数据库共需要六步来完成:其中三步用于创建数据库,其余三步用于设置数据库,让它可以使用。

1) 设置操作系统环境变量 ORACLE_HOME、ORACLE_SID、PATH 和 LD_LIBRARY_PATH。

2) 编辑/创建 initsid.ora 参数文件。

3) 在 SQL*Plus 中执行 CREATE DATABASE 命令。

4) 运行所需的 catalog.sql 和 catproc.sql 脚本。

5) 运行 pupbld.sql 脚本。

6) 创建用户数据的表空间以及数据库所需的任何其它表空间





二 设置环境

在创建数据库之前,必须配置 UNIX 环境,并且必须已安装了 Oracle9i Server。

必须设置四个环境变量:ORACLE_HOME、ORACLE_SID、PATH、LD_LIBRARY_PATH。



ORACLE_HOME 是安装 Oracle9i Server 的顶级目录的完整路径。ORACLE_HOME 目录应该由安装 Oracle9i Server 的人员提供,通常是 UNIX 管理员或 DBA。



ORACLE_SID 是给数据库例程分配的、可由用户定义的名称。操作系统使用 ORACLE_SID(系统标识符)来区分在同一台计算机上运行的各个数据库例程。



PATH 指定操作系统查找可执行程序(如 SQL*Plus)时要搜索的路径。Oracle9i 可执行程序位于 $ORACLE_HOME/bin 目录下,需要添加到 PATH 变量中。



LD_LIBRARY_PATH 定义所需库文件的存储目录。



示例

Bourne 或 Korn shell:

$ ORACLE_HOME=/u01/oracle9i/product/9.0.1; export ORACLE_HOME

$ ORACLE_SID=testdb; export ORACLE_SID

$ PATH=/usr/bin:/usr/ccs/bin:$ORACLE_HOME/bin; export PATH

$ LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib; export LD_LIBRARY_PATH



C shell:

% setenv ORACLE_HOME /u01/oracle9i/product/9.0.1

% setenv ORACLE_SID testdb

% setenv PATH $PATH:$ORACLE_HOME/bin

% setenv LD_LIBRARY_PATH /usr/lib:$ORACLE_HOME/lib



三 编辑/创建 initsid.ora

每次数据库启动时,都会读取 initsid.ora 文件(可由用户配置的文本文件)。该文件中的参数将对数据库设置进行初始化。initsid.ora 文件中的参数设置不仅在启动时影响数据库,而且还影响数据库的创建方式。在创建数据库之前,必须先配置 initsid.ora 文件。

在安装 Oracle9i Server 时,就会将一个示例 init.ora 文件存放在 $ORACLE_HOME/dbs 中。将该文件作为备份文件保存,不要修改该文件;创建该文件的一个副本,并包含 ORACLE_SID 的名称。

示例

$ cd $ORACLE_HOME/dbs

$ cp init.ora inittestdb.ora

示例 init.ora 文件中有很多注释,这些注释包含有关参数设置的建议。

initsid.ora 中的参数不需要按顺序列出,如果多次列出某个参数,则使用该参数的最后一个设置。Oracle9i Reference 中建议将参数按字母顺序列出以免重复。

应该对某些参数进行配置,其中包括 db_name、control_files、background_dump_dest、user_dump_dest、core_dump_dest 和 undo_management。

将参数 background_dump_dest、user_dump_dest 和 core_dump_dest 设置为存放跟踪文件的完整路径位置:

• core_dump_dest 包含数据库生成的核心转储

• user_dump_dest 包含用户跟踪文件

• background_dump_dest 包含后台进程的跟踪文件和 alert.log。

db_name 是数据库的名称,其用途与 ORACLE_SID 不同。ORACLE_SID 是用于指定数据库例程的名称。db_name 和 ORACLE_SID 在多数情况下是相同的,但这并不是必需的。initsid.ora 中的 db_name 必须与创建数据库时 CREATE DATABASE 命令中使用的数据库名称相同(区分大小写)。

control_files 初始化参数为数据库指定每个控制文件的完整路径和文件名。在创建数据库时,它指定必须创建的控制文件。

undo_management 初始化参数确定是由 Oracle 服务器自动处理还原数据,还是由 DBA 手动处理还原数据。在初始化文件中将 undo_management 设置为 AUTO。

附录 A 结尾附有一个示例 inittestdb.ora 文件。



四 创建数据库

在设置环境并配置 initsid.ora 后,就可以创建数据库了。Oracle 数据库是通过执行 CREATE DATABASE 命令创建的。CREATE DATABASE 命令指定了日志文件的数量和位置、SYSTEM 表空间、UNDO 表空间和 TEMP 表空间的位置和大小,以及数据库使用的字符集(这并不是一个详尽的列表)。

可使用 Oracle 实用程序 SQL*Plus 创建数据库。UNIX 的 SQL*Plus 可执行程序是 sqlplus。

在创建数据库时,Oracle9i 服务器仅识别 SYS 用户和 SYSDBA 角色。要创建数据库,必须以用户 SYS 和角色 SYSDBA 的身份连接到 SQL*Plus。可以使用以下两种方法之一完成该操作。



1.如果连接 SQL*Plus 的 UNIX 用户是管理员组的成员(在 Oracle9i Server 安装期间定义),则使用以下语法:

$ sqlplus '/ as sysdba '

或者

$ sqlplus /nolog

SQL> connect / as sysdba

2. 如果连接 SQL*Plus 的 UNIX 用户不是管理员组的成员,则管理员必须创建数据库的口令文件,并且必须使用在口令文件中给 SYS 分配的口令。以下语法假定在口令文件中给 SYS 分配的口令是 oracle。

$ sqlplus 'sys/change_on_install as sysdba'

或者

$ sqlplus /nolog

SQL> connect sys/change_on_install as sysbda



创建和执行 SQL 语句的步骤是:

1.创建一个包含 CREATE DATABASE 命令的 SQL 脚本。(附录 A 的结尾附有一个创建数据库的示例脚本。)

2.使用上面所示的两种方法之一,以 SYS AS SYSDBA 的身份连接到 SQL*Plus。

3.在 NOMOUNT 模式下启动数据库。

4.执行 SQL 脚本。





示例

% sqlplus 'sys/change_on_install as sysdba'

SQL> startup nomount

ORACLE instance started.

Total System Global Area 21790532 bytes

Fixed Size 278340 bytes

Variable Size 16777216 bytes

Database Buffers 4194304 bytes

Redo Buffers 540672 bytes

SQL> @crdbtestdb.sql

SQL> CREATE DATABASE testdb

2 LOGFILE

3 GROUP 1 ('$HOME/ORADATA/testdb/redolog_testdb_01.rdo') SIZE 10M,

4 GROUP 2 ('$HOME/ORADATA/testdb/redolog_testdb_02.rdo') SIZE 10M

5 DATAFILE '$HOME/ORADATA/testdb/system_01_testdb.dbf' SIZE 100M

6 AUTOEXTEND ON NEXT 5M MAXSIZE 150M

7 DEFAULT TEMPORARY TABLESPACE temp

8 TEMPFILE '$HOME/ORADATA/testdb/temp_testdb_01.dbf' SIZE 15M

9 AUTOEXTEND ON NEXT 5M MAXSIZE 30M

10 CHARACTER SET WE8ISO8859P1

11 NATIONAL CHARACTER SET AL16UTF16

12 ;

Statement processed.



五 运行脚本

必须在创建数据库之后运行脚本 catalog.sql 和 catproc.sql,这两个脚本位于 $ORACLE_HOME/rdbms/admin 目录中。catalog.sql 脚本用于创建数据字典视图;catproc.sql 用于创建使用 PL/SQL 所需的程序包和过程。

必须以 SYS 的身份运行这两个脚本。在创建脚本之前,确保数据库已打开。

示例

% sqlplus /nolog

SQL> CONNECT / AS SYSDBA

SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql

SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql

在系统不忙的时候,运行这两个脚本总共需要 35 到 65 分钟。

在运行这些脚本后,验证对象是否有效。以下查询可返回所有无效的对象。

SQL> SELECT owner,object_name,object_type

2 FROM dba_objects

3 WHERE status = 'INVALID'

4 ORDER BY owner,object_type,object_name;



运行 pupbld.sql

pupbld.sql 脚本用于创建 “产品用户配置文件” (Product User Profile) 表以及相关的过程,该脚本位于 $ORACLE_HOME/sqlplus/admin 目录中。运行此脚本还可在每次用户连接到 SQL*Plus 时防止生成警告消息。必须以用户 SYSTEM 的身份运行此脚本。

$ sqlplus system/manager

SQL> @$ORACLE_HOME/sqlplus/admin/pupbld.sql



创建表空间

创建安装所需的其它表空间。

在数据库的安装过程中,通常创建以下表空间:

• users 用户数据

• tools 用户 SYSTEM 创建的对象(可选)

应该创建这两个表空间。

示例

SQL> create tablespace USERS

2 datafile '$HOME/ORADATA/testdb/users_testdb_01.dbf' SIZE 25M

3 PERMANENT

4 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K

5 SEGMENT SPACE MANAGEMENT auto;



六 小结

• 设置 ORACLE_HOME、 ORACLE_SID、PATH 和 LD_LIBRARY_PATH。

• 编辑 initsid.ora。

• 执行 CREATE DATABASE 命令。

• 运行 catalog.sql 和 catproc.sql 脚本。

• 运行 pupbld.sql 脚本。

• 创建数据库所需的表空间。



示例 inittestdb.ora

background_dump_dest=$HOME/ADMIN/BDUMP

compatible=9.0.0

control_files=$HOME/ORADATA/testdb/ctrl_01_sid.ctl

core_dump_dest=$HOME/ADMIN/CDUMP

db_block_size=4096

db_cache_size=4M

db_domain=world

db_name=testdb

global_names=TRUE

instance_name=testdb

max_dump_file_size=10240

remote_login_passwordfile=exclusive

service_names=testdb

shared_pool_size=8M

undo_management=AUTO

user_dump_dest=$HOME/ADMIN/UDUMP



创建数据库的示例脚本

CREATE DATABASE testdb

LOGFILE

GROUP 1 ('$HOME/ORADATA/testdb/redolog_testdb_01.rdo') SIZE 10M,

GROUP 2 ('$HOME/ORADATA/testdb/redolog_testdb_01.rdo') SIZE 10M

DATAFILE '$HOME/ORADATA/testdb/system_testdb_01.dbf' SIZE 100M

AUTOEXTEND ON NEXT 5M MAXSIZE 150M

DEFAULT TEMPORARY TABLESPACE temp

TEMPFILE '$HOME/ORADATA/testdb/temp_testdb_01.dbf' SIZE 15M

AUTOEXTEND ON NEXT 5M MAXSIZE 30M

CHARACTER SET ZHS16CGB231280

NATIONAL CHARACTER SET AL16UTF16
阅读(1040) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~