手工创建数据库的用户必须具有SYSDBA的权限,通过以下步骤实现数据库的创建工作。
1、确定新建Oracle数据库的全局数据库名和实例名(SID)
在执行Create Database命令之前,首先需要确定新建数据库的全局数据库名和实例名(SID)。在Windows
NT/2000环境下,全局数据库名和实例名(SID)必须在初始化参数文件中设定,主要包括instance_name(数据库实例名SID),db_domain(数据库域名)和db_name(数据库名)三个参数描述。
2、确定DBA认证方式
在执行Create
Datatbase命令之前,用户必须以SYSDBA的用户身份连接到数据库上,由于SYSDBA用户认证方是的特殊性,Oracle需要知道DBA的认证方式。在初始化参数文件中指定DBA认证方式,参数为REMOTE_LOGIN_PASSWORDFILE。
3、创建初始化参数文件
在ORACLE执行Create
Database命令创建数据库时,Oracle会自动读取初始化文件并根据初始化文件的内容创建Oracle数据库的逻辑结构、物理结构等。因此,初始化文件对于创建数据库是非常重要的,它是创建数据库的依据。
在Windows
NT/2000环境下,Oracle规定初始化文件保存在ORACLE_HOME\Database目录中(例:D:\oracle\ora92),文件名为init.ora。文件的内容可以根据Oracle提供的标准参数文件,并在此基础上修改为相应的参数值即可。
下面是一个初始化参数文件的例子,文件名为initoradb03.ora。
#Cache and I/O
DB_BLOCK_SIZE=4096
DB_CACHE_SIZE=20971520
#Cursors and Libray Cache
CURSOR_SHARING=SIMILAR
OPEN_CURSORS=300
#Diagnostics and Statistics
BACKGROUND_DUMP_DEST=d:\oracle\admin\oradb03\bdump
CORE_DUMP_DEST=d:\oracle\admin\oradb03\cdump
TIMED_STATISTICS=TRUE
USER_DUMP_DEST=d:\oracle\admin\oradb03\udump
#Control File Configuration
CONTROL_FILES=(“d:\oracle\oradata\oradb03\control01.ctl”,
“d:\oracle\oradata\oradb03\control02.ctl”,
“d:\oracle\oradata\oradb03\control03.ctl”)
#Archive
LOG_ARCHIVE_DEST_1=’LOCATION=d:\oracle\oradata\oradb03\archive’
LOG_ARCHIVE_FORMAT=%t_%s.dbf
LOG_ARCHIVE_START=TRUE
#Shared Server
DISPATCHERS=”(PROTOCOL=TCP)(SER=MODOSE)”,”(PROTOCOL=TCP)(PRE=oracle.aurora,server.SgiopServer)”,(PROTOCOL=TCP)
#Miscellaneous
COMPATIBLE=9.2.0
DB_NAME=oradb03
#Distributed,Replication and Snapshot
DB_DOMAN=at.com
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
#Network Registration
INSTANCE_NAME=oradb03
#Pools
JAVA_POOL_SIZE=31457280
LARGE_POOL_SIZE=1048576
SHARED_POOL_SIZE=52428800
#Processes and Session
PROCESSES=150
#Redo Log and Recovery
FAST_START_MTTR_TARGET=300
#Resource Manager
RESOURCE_MANAGER_PLAN=SYSTEM_PLAN
#Sort,Hash Joins,Bitmap Indexes
SORT_AREA_SIZE=524288
#Automatic Undo Management
UNDO_MANAGEMANT=AUTO
UNDO_TABLESPACE=undotbs
4、启动Oracle
首先启动SQL*Plus,然后以SYSDBA用户身份登录Oracle 9i
C>SQLPLUS /NOLOG
SQL>CONNECT /AS SYSDBA
然后执行STARTUP命令,将Oracle启动到NOMOUNT状态:
SQL〉STARTUP NOMOUNT;
在NOMOUNT状态下,Oracle只是建立了SGA区以及后台进程,为创建新数据库做好了准备。
5、执行CREATE DATABASE命令,创建新的数据库
Oracle在执行该命令时,会根据命令的不同创建新数据库的各个组成部分,主要包括:数据文件,控制文件,日志文件,数据字典,SYSTEM、UNDOTBS和TEMPTBS1表空间,数据库字符集。
下面是一条创建名为oradb03新数据库的CREATE DATABSE命令:
CREATE DATABSE oradb03
LOGFILE GROUP 1(‘d:\oracle\oradata\oradb03\redo01.log’)SIZE
100M.
GROUP 2(‘d:\oracle\oradata\oradb03\redo02.log’)SIZE 100M,
GROUP 3(‘d:\oracle\oradata\oradb03\redo03.log’)SIZE 100M
MAXLOGFILES 5
MAXLOGHISTORY 1
MAXLOGMEMBER 5
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
DATAFILE ‘d:\oracle\oradata\oradb03\system01.dbf’SIZE 325M
REUSE
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temptbs1
TEMPFILE ‘d:\oracle\oradata\oradb03\temp01.dbf’
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE ‘d:\oracle\oradata\oradb03\undotbs01.dbf’
SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED;
6、创建附加的表空间
为了更加有效地使用和管理Oracle9i数据库,最好还要创建一些附加的表空间,如USERS表空间和INDEX表空间等,下面两条命令可以分别创建这两个表空间:CREATE
TABLESPACE users LOGGING
DATAFILE ‘d:\oracle\oradata\oradb03\users01.dbf’
SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
CREATE TABLESPACE indx LOGGING
DATAFILE ‘d:\oracle\oradata\oradb03\indx01.dbf’
SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
7、在SQL*PLUS中运行Oracle提供的脚本可以创建Oracle数据字典视图。
SQL>@$ORACLE_HOME\RDBMS\ADMIN\CATALOG.SQL
SQL>@$ORACLE_HOME\RDBMS\ADMIN\CATPROC.SQL
CATALOG.SQL脚本可以创建数据字典视图,包括动态性能视图和他们的同义词,同时授予PUBLIC角色访问这些同义词的权限。CATPROC.SQL脚本可以使Oracle支持脚本程序使用PL/SQL。
8、创建服务器端初始化参数文件(SPFILE)
执行完上一步时,新的数据库的创建工作已经完成,Oracle可以正常使用了。但是,Oracle9i建议Oracle的初始化参数文件最好使用服务器端初始化参数文件(SPFILE)启动数据库。
下面是创建SPFILE文件的命令:
CREATE SPFILE =‘d:\oracle\ora92\databse\spfileoradb03.ora’FROM
PFILE=’d:\oracle\ora92\databse\initoradb03.ora’;
最后,在SQL*PLUS中启动新建数据库。
SQL〉SHUTDOWN
SQL〉CONNECT SYS/password@oradb03 AS SYSDBA
SQL>STARTUP
启动成功后,手工创建数据库完成。