创建数据库的方法无非两种:
一个是使用oracle的建库工具dbca,这是一个图形界面工具,而且使用起来也方便且容易理解
另一种方法就是手工建库,这也就是我们今天要讨论的内容
手工建库比起使用dbca建库来说,是比较麻烦的,但是如果我们学好了手工建库的话,就可以使我们更好的理解oracle数据库的体系结构。
在Oracle Database Administrator's Guide中,将手工建库的步骤分为了一下几个:
Step 1: Specify an Instance Identifier (SID)
Step 2: Ensure That the Required Environment Variables Are Set
Step 3: Choose a Database Administrator Authentication Method
Step 4: Create the Initialization Parameter File
Step 5: (Windows Only) Create an Instance
Step 6: Connect to the Instance
Step 7: Create a Server Parameter File
Step 8: Start the Instance
Step 9: Issue the CREATE DATABASE Statement
Step 10: Create Additional Tablespaces
Step 11: Run Scripts to Build Data Dictionary Views
Step 12: Run Scripts to Install Additional Options (Optional)
Step 13: Back Up the Database.
Step 14: (Optional) Enable Automatic Instance Startup
其实,如果我们的标准是创建一个能够正常使用的数据库的话,我们只需要前11个步骤就足够了,不过如果希望你对新建的数据库能有更高要求的话另讲。
在本次讨论中,我们并不严格按照oracle的文档推荐的步骤来进行测试,但是大致的步骤都是相同的
本次测试环境:
操作系统:Windows 7旗舰版,32bit,4GB RAM
Oracle数据库版本:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
实例名:TESTENV
数据文件位置:F:\oradata\TESTENV
ORACLE安装位置:E:\app\Mai\
第一步:指定一个oracle的实例标示符,即ORACLE_SID,并检查设置是否生效
set ORACLE_SID=TESTENV
或者直接在systempropertiesadvanced中的环境变量中新建oracle_sid用户变量
第二步:创建密码文件
orapwd file=E:\app\Mai\product\11.1.0\db_1\database\pwdTESTENV.ora password=oracle entries=2
第三步:创建oracle服务(仅仅在windows中需要)
oradim -new -sid TESTENV
第四步:创建必要的目录
E:\app\Mai\admin\TESTENV\adump
E:\app\Mai\admin\TESTENV\bdump
E:\app\Mai\admin\TESTENV\cdump
E:\app\Mai\admin\TESTENV\udump
E:\app\Mai\admin\TESTENV\pfile
F:\oradata\TESTENV
第五步:创建初始化参数文件
编辑一个文本文件,名称为initTESTENV.ora,内容如下:
db_name='TESTENV'
memory_target=512M
processes = 150
audit_file_dest='E:\app\Mai\admin\TESTENV\adump'
*.audit_trail='db'
core_dump_dest='E:\app\Mai\admin\TESTENV\cdump'
db_block_size=8192
db_domain=''
db_recovery_file_dest='E:\app\Mai\flash_recovery_area'
db_recovery_file_dest_size=1G
diagnostic_dest='E:\app\Mai\'
dispatchers='(PROTOCOL=TCP) (SERVICE=TESTENV)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = ('F:\oradata\TESTENV\CONTROL01.CTL','F:\oradata\TESTENV\CONTROL02.CTL','F:\oradata\TESTENV\CONTROL03.CTL')
compatible ='11.1.0'
编辑完成后,将该文件放置到E:\app\Mai\product\11.1.0\db_1\database\目录下
第六步:启动实例
CMD> sqlplus / as sysdba
SQL> startup nomount;
SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL> startup nomount;
第七步:创建数据库
编写数据库创建脚本如下:
create database TESTENV
user sys identified by oracle
user system identified by oracle
logfile
group 1 ('F:\oradata\TESTENV\redo01.log') size 50M,
group 2 ('F:\oradata\TESTENV\redo02.log') size 50M,
group 3 ('F:\oradata\TESTENV\redo03.log') size 50M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
datafile 'F:\oradata\TESTENV\system01.dbf' size 300M reuse extent management local
sysaux datafile 'F:\oradata\TESTENV\sysaux01.dbf' size 50M
default temporary tablespace temp tempfile 'F:\oradata\TESTENV\temp01.dbf' size 20m reuse
undo tablespace undotbs1 datafile 'F:\oradata\TESTENV\undotbs01.dbf' size 200M reuse autoextend on maxsize unlimited;
注意:
这里的undo tablespace的名字必须和你在初始化参数文件中写的名称是一致的!
第八步:执行必要的脚本来创建数据库的相关数据字典和数据库视图:
SQL> @E:\app\Mai\product\11.1.0\db_1\RDBMS\ADMIN\catalog.sql
SQL> @E:\app\Mai\product\11.1.0\db_1\RDBMS\ADMIN\catproc.sql
SQL> conn system/oracle
SQL> @E:\app\Mai\product\11.1.0\db_1\sqlplus\admin\pupbld.sql
第九步:创建系统默认表空间
SQL> create tablespace users datafile 'F:\oradata\TESTENV\users01.dbf' size 100M autoextend on next 50M;
SQL> alter database default tablespace users;
至此,手工创建数据库完成