Chinaunix首页 | 论坛 | 博客
  • 博客访问: 963708
  • 博文数量: 335
  • 博客积分: 10287
  • 博客等级: 上将
  • 技术积分: 3300
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-08 15:29
文章分类

全部博文(335)

文章存档

2015年(4)

2014年(15)

2013年(17)

2012年(11)

2011年(12)

2010年(96)

2009年(27)

2008年(34)

2007年(43)

2006年(39)

2005年(37)

我的朋友

分类: Oracle

2007-08-20 15:42:09

  创建数据库

在设置环境并配置 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_SIDPATH 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

阅读(1201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~