注意:蓝色字体为创建数据库过程中要执行的各种命令。红色为在实践中可能需要修改的内容及提示。绿色字体为用到的文件中内容。
手工建库比起使用DBCA建库来说,是比较麻烦的,但是如果我们学好了手工建库的话,就可以使我们更好地理解Oracle数据库的体系结构。
下面,我将具体地把以上的几个步骤用实验展开来讲。
Oracle的安装路径:D盘 创建的数据库名称:sm
(下文中关于路径及数据名称请在试验中相应修改)
1、打开命令行工具,创建必要有相关目录
C:\>mkdir D:\oracle\product\10.2.0\admin\sm
C:\>mkdir D:\oracle\product\10.2.0\admin\sm\bdump
C:\>mkdir D:\oracle\product\10.2.0\admin\sm\udump
C:\>mkdir D:\oracle\product\10.2.0\admin\sm\cdump
C:\>mkdir D:\oracle\product\10.2.0\admin\sm\pfile
C:\>mkdir D:\oracle\product\10.2.0\admin\sm\create
C:\>mkdir D:\oracle\product\10.2.0\oradata\sm
上面创建目录的过程也可以在Windows的图形界面中去创建。其中:
D:\oracle\product\10.2.0\admin\sm目录下的几个子目录主要用于存放数据库运行过程中的跟踪信息。最重要的两上子目录是bdump和udump目录,bdump目录存放的是数据库动行过程中的各个后台进程的跟踪信息,当中alert文件是警告文件,其文件名称为alert_sm.log,当数据库出现问题时,首先就可以去查看此文件以找出原因,手工创建过程中出现的各种问题往往也可以通过查看这个文件找到原因。Udump目录存放和特定会话相关的跟踪信息。
D:\oracle\product\10.2.0\oradata\sm目录存放各种数据库文件,包括控制文件、数据文件、重做日志文件。
2、创建初始化参数文件
数据库系统启动时须要用初始化参数文件的设置分配内存、启动必要的后台进程的。因此,初始化参数文件创建的是否正确、参数设置是否正确关系着整个建库的“命运”。
创建初始化参数文件可以通过拷贝现在的初始化参数文件并将其做适当的修改即可,从而不必要用手工去一句一句地写出来,因为初始化参数文件的结构体系基本上都是一样的。在我们安装Oracle的时候,系统已经为我们安装了一个名为orcl的数据库,于是我们可以从它那里得到一份初始化参数文件。打开D:\oracle\product\10.1.0\admin\orcl\pfile,找到init.ora开头文件,把它拷贝到D:\oracle\product\10.1.0\bd_1\databse下,并将其改名为initsm.ora。
注意:不是拷贝到其它路径。启动实例时会去database目录下寻找初始化文件。使用dbca生产的数据库仅仅在database目录下生成一个导航性的init文件,真正的信息存储在其他位置。
接着用记事本的方式打开initsm.ora,修改以下的内容:
db_domain=""
db_name=sm
control_files=("D:\oracle\product\10.2.0\oradata\sm\control01.ctl", "D:\oracle\product\10.2.0\oradata\sm\control02.ctl", "D:\oracle\product\10.2.0\oradata\sm\control03.ctl")
undo_management=AUTO
undo_tablespace=UNDOTBS1
――注意此处的“UNDOTBS1”要和建库脚步本中对应
background_dump_dest=D:\oracle\product\10.2.0\admin\sm\bdump
core_dump_dest=D:\oracle\product\10.2.0\admin\sm\cdump
user_dump_dest=D:\oracle\product\10.2.0\admin\sm\udump
3、打开命令行,设置环境变量oracle_sid
C:\>set oracle_sid=sm
设置环境变量的目地是在默认的情况下,指定命令行中所操作的数据库实例是sm。
4、创建实例(即后台控制服务)
C:\>oradim –new –sid sm
oradim是创建实例的工具程序名称,-new表明执行新建实例,-delete表明执行删掉实例,-sid指定实例的名称。
5、创建口令文件
C:\>orapwd file=D:\oracle\product\10.1.0\db_1\database\pwdsm.ora password=smstore entries=2
orapwd是创建口令文件的工肯程序各称,file参数指定口令文件所在的目录和文件名称,password参数指定sys用户的口令,entries参数指定数据库拥用DBA权限的用户的个数,当然还有一个force参数,相信您不指即明,这里就不再细述。
请注意,这里的命令要一行输入,中间不得换行,否则会出现不必要的错误。
口令文件是专门存放sys用户的口令,因为sys用户要负责建库、启动数据库、关闭数据库等特殊任务,把以sys用户的中令单独存放于口令文件中,这样数据库末打开时也能进行口令验证。
6、启动数据库到nomount(实例)状态
C:\>sqlplus /nolog
SQL>connect sys/smstore as sysdba
---这里是用sys连接数据库
已连接到空闲例程
SQL>startup nomount
ORACLE 例程已经启动。
Total System Global Area 319888364bytes
Fixed Size 453612bytes
Variable Size 209715200bytes
Database Buffers 109051904bytes
Redo Buffers 667648bytes
SQL>
7、执行建库脚本
用记事本编辑如下的内容,并将其保存为文件名任取而后缀名为(*.sql)的SQL脚本,这里保存到E盘根本录下且文件名称为sm.sql。
Create database sm
datafile 'D:\oracle\product\10.1.0\oradata\sm\system01.dbf' size 300M reuse autoextend on next 10240K maxsize unlimited
extent management local
sysaux datafile 'D:\oracle\product\10.1.0\oradata\sm\sysaux01.dbf'
size 120M reuse autoextend on next 10240K maxsize unlimited
default temporary tablespace temp
tempfile 'D:\oracle\product\10.1.0\oradata\sm\temp01.dbf' size 20M reuse autoextend on next 640K maxsize unlimited
undo tablespace UNDOTBS1
datafile 'D:\oracle\product\10.1.0\oradata\sm\undotbs01.dbf' size 200M reuse autoextend on next 5120K maxsize unlimited
logfile
group 1 ('D:\oracle\product\10.1.0\oradata\sm\redo01.log') size 10240K,
group 2 ('D:\oracle\product\10.1.0\oradata\sm\redo02.log') size 10240K,
group 3 ('D:\oracle\product\10.1.0\oradata\sm\redo03.log') size 10240K
接着就执行刚建的建库脚本:
SQL>start E:\sm.sql 或者SQL>run E:\sm.sql
8、执行catalog脚本创建数据字典
SQL>start c:\oracle\product\10.2.0\db_1\rdbms\admin\catalog.sql
9、执行catproc创建package包
SQL>start D:\oracle\product\10.1.0\db_1\rdbms\admin\catproc.sql
10、执行pupbld
PUPBLD.SQL没有执行,它的作用是为SQL*PLUS服务。当在SQL*PLUS中以普通用户身份连接和使用数据库时,工具本身需要使用PRODUCT PROFILE的表和视图,我们需要登录system用户执行该SQL。
在执行pupbld之前要把当前用户(sys)转换成system,即以system账户连接数据库。因为此数据库是刚建的,所以system的口令是系统默认的口令,即manager。你可以在数据库建好以后再来重新设置此账户的口令。
SQL>connect system/manager
SQL>start D:\oracle\product\10.1.0\db_1\sqlplus\admin\pupbld.sql
11、由初始化参数文件创建spfile文件
SQL> create spfile from pfile='C:\oracle\product\10.2.0\db_1\database\initsm.ora';
12、执行scott脚本创建scott模式
SQL>start D:\oracle\product\10.1.0\db_1\rdbms\admin\scott.sql
13、用以下命令测试数据库创建是否完成
SQL>select * from scott.emp;
如果能够看到雇员信息正确显示,就说明数据库建立已完成
14、配置OEM,使得能够通过浏览器管理和控制数据库
CD C:\oracle\product\10.2.0\db_1\bin
Set oracle_sid=book
emca –repos recreate
emca –config dbcontrol db