有段时间没有摸这个东西了,说起来也惭愧啊,现在的工作根本用不到甲骨文,但是我觉得这个东西以后还是很有用的,所以我觉得很有必要复习下了,下面我会就这个一话题做一个全面的复习计划,待续... ... ... ... ... ... ... ...
在Oracle中建库,通常有两种方法。一是使用Oracle的建库工具DBCA,这是一个图形界面工具,使用起来方便且很容易理解,因为它的界面友好、美观,而且提示也比较齐全。在Windows系统中,这个工具可以在Oracle程序组中打开(”开始”—“程序”—“ Oracle - OraDb10g_home1”—“ Configuration and Migration Tools”—“ Database Configuration Assistant”),也可以在命令行(”开始”—“运行”—“cmd”)工具中直接输入dbca来打开。另一种方法就是手工建库,下面我会一一举例说明。
第一:手工建库
手工建库比起使用DBCA建库来说,是比较麻烦的,但是如果我们学好了手工建库的话,就可以使我们更好地理解Oracle数据库的体系结构。手工建库需要经过几个步骤,每一个步骤都非常关键。它包括:
1、 创建必要的相关目录
2、 创建初始化参数文件
3、 设置环境变量Oracle_sid
4、 创建实例
5、 创建口令文件
6、 启动数据库到nomount(实例)状态
7、 执行建库脚本
8、 执行catalog脚本创建数据字典
9、 执行catproc创建package包
10、 执行pupbld
11、 由初始化参数文件创建spfile文件
12、 执行scott脚本创建scott模式
做完了以上的步骤之后就可以使用“SQL>alter database open;”打开数据库正常的使用了。下面,我将具体地把以上的几个步骤用实验展开来讲。
实验系统平台:Windows XP 数据库系统版本:Oracle Database 10G
Oracle的安装路径:D盘 创建的数据库名称:book
1、打开命令行工具,创建必要有相关目录
C:/>mkdir D:/oracle/product/10.2.0/admin/book
C:/>mkdir D:/oracle/product/10.2.0/admin/book/bdump
C:/>mkdir D:/oracle/product/10.2.0/admin/book/udump
C:/>mkdir D:/oracle/product/10.2.0/admin/book/cdump
C:/>mkdir D:/oracle/product/10.2.0/admin/book/pfile
C:/>mkdir D:/oracle/product/10.2.0/admin/book/create
C:/>mkdir D:/oracle/product/10.2.0/oradata/book
上面创建目录的过程也可以在Windows的图形界面中去创建。其中D:/oracle/product/10.2.0/admin/book目录下的几个子目录主要用于存放数据库运行过程中的跟踪信息。最重要的两个子目录是bdump和udump目录,bdump目录存放的是数据库运行过程中的各个后台进程的跟踪信息,当中alert文件是警告文件,其文件名称为alert_book.log,当数据库出现问题时,首先就可以去查看此文件以找出原因,手工创建过程中出现的各种问题往往也可以通过查看这个文件找到原因。udump目录存放和特定会话相关的跟踪信息。D:/oracle/product/10.2.0/oradata/book目录存放各种数据库文件,包括controlfile、datafile、logfile。
2、创建初始化参数文件
数据库系统启动时须要用初始化参数文件的设置分配内存、启动必要的后台进程的。因此,初始化参数文件创建的是否正确、参数设置是否正确关系着整个建库的“命运”。
创建初始化参数文件可以通过拷贝现有的初始化参数文件并将其做适当的修改即可,从而不必要用手工去一句一句地写出来,因为初始化参数文件的结构体系基本上都是一样的。在我们安装Oracle的时候,系统已经为我们安装了一个名为orcl的数据库,于是我们可以从它那里得到一份初始化参数文件。打开D:/oracle/product/10.2.0/admin/orcl/pfile,找到init.ora文件,把它拷贝到D:/oracle/product/10.2.0/bd_1/databse下,并将其改名为initbook.ora。接着用记事本的方式打开initbook.ora,修改以下的内容:
db_domain="" ------数据库域名
db_name=book
control_files=("D:/oracle/product/10.2.0/oradata/book/control01.ctl", "D:/oracle/product/10.2.0/oradata/book/control02.ctl", "D:/oracle/product/10.2.0/oradata/book/control03.ctl")
undo_management=AUTO ------Undo空间管理方式
undo_tablespace=UNDOTBS1 ------注意此处的“UNDOTBS1”要和建库脚步本中对应
background_dump_dest=D:/oracle/product/10.2.0/admin/book/bdump ------后台进程跟踪文件生成的位置
core_dump_dest=D:/oracle/product/10.2.0/admin/book/cdump
user_dump_dest=D:/oracle/product/10.2.0/admin/book/udump
3、打开命令行,设置环境变量oracle_sid
C:/>set oracle_sid=book
设置环境变量的目的地是在默认的情况下,指定命令行中所操作的数据库实例是book。
4、创建实例(即后台控制服务)
C:/>oradim –new –sid book
oradim是创建实例的工具程序名称,-new表明执行新建实例,-delete表明执行删掉实例,-sid指定实例的名称。
5、创建口令文件
C:/>orapwd file=D:/oracle/product/10.2.0/db_1/database/pwdbook.ora password=bookstore entries=5
orapwd是创建口令文件的工具程序名称,file参数指定口令文件所在的目录和文件名称,password参数指定sys用户的口令,entries参数指定数据库拥用DBA权限的用户的个数,当然还有一个force参数,表示是否强制覆盖。
请注意,这里的命令要一行输入,中间不得换行,否则会出现不必要的错误。
口令文件是专门存放sys用户的口令,因为sys用户要负责建库、启动数据库、关闭数据库等特殊任务,把以sys用户的口令单独存放于口令文件中,这样数据库未打开时也能进行口令验证。
6、启动数据库到nomount(实例)状态
C:/>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 12月 23 10:04:11 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>connect sys/bookstore as sysdba ---这里是用sys连接数据库
已连接到空闲例程
SQL>startup nomount
ORACLE 例程已经启动。
Total System Global Area 285212672 bytes
Fixed Size 1248552 bytes
Variable Size 71303896 bytes
Database Buffers 205520896 bytes
Redo Buffers 7139328 bytes
SQL>
7、执行建库脚本
执行建库脚本,首先要有建库的脚本。(去哪找建库脚本呢?我又没有!)不用着急,请接着往下看。
得到一个符合自己要求的建库脚本有两种方法,一种方法是在自己的电脑上用DBCA来建,接照它的提示一步步地去做,在做到第十二步的时候,请选择“生成建库脚本”,然后就大功告成,你就可以到相应的目录上去找到那个脚本并适当地修它便可便用。另一种方法就是自己手工去写一份建库脚本,这也是这里要见意使用的方法,用记事本编辑如下的内容,并将其保存为文件名任取而后缀名为(*.sql)的SQL脚本,这里保存到E盘根本录下且文件名称为book.sql。
Create database book
datafile 'D:/oracle/product/10.2.0/oradata/book/system01.dbf' size 300M reuse autoextend on next 10240K maxsize unlimited
extent management local
sysaux datafile 'D:/oracle/product/10.2.0/oradata/book/sysaux01.dbf'
size 120M reuse autoextend on next 10240K maxsize unlimited
default temporary tablespace temp
tempfile 'D:/oracle/product/10.2.0/oradata/book/temp01.dbf' size 20M reuse autoextend on next 640K maxsize unlimited
undo tablespace "UNDOTBS1" --请注意这里的undo表空间要和参数文件对应
datafile 'D:/oracle/product/10.2.0/oradata/book/undotbs01.dbf' size 200M reuse autoextend on next 5120K maxsize unlimited
logfile
group 1 ('D:/oracle/product/10.2.0/oradata/book/redo01.log') size 10240K,
group 2 ('D:/oracle/product/10.2.0/oradata/book/redo02.log') size 10240K,
group 3 ('D:/oracle/product/10.2.0/oradata/book/redo03.log') size 10240K
接着就执行刚建的建库脚本:
SQL>start E:/book.sql
8、执行catalog脚步本创建数据字典
SQL>start D:/oracle/product/10.2.0/db_1/RDBMS/ADMIN/catalog.sql
9、执行catproc创建package包
SQL>start D:/oracle/product/10.2.0/db_1/RDBMS/ADMIN/catproc.sql
10、执行pupbld
在执行pupbld之前要把当前用户(sys)转换成system,即以system账户连接数据库。因为此数据库是刚建的,所以system的口令是系统默认的口令,即manager。你可以在数据库建好以后再来重新设置此账户的口令。
SQL>connect system/manager
SQL>start D:/oracle/product/10.2.0/db_1/sqlplus/admin/pupbld.sql
如果这一步出错了,多半是因为权限的问题,你可以换和角色登陆,一般就可以登陆了
SQL>connect system/manager as sysdba
11、由初始化参数文件创建spfile文件
SQL>create spfile from pfile;
12、执行scott脚本创建scott模式
SQL>start D:/oracle/product/10.2.0/db_1/RDBMA/ADMIN/scott.sql
13、把数据库打开到正常状态
SQL>alter database open;
14、以scott连接到数据库(口令为tiger),测试新建数据库是否可以正常运行
至此,整个数据库就已经建好了。接着你就可以在这个数据库上做你的事情了。
第二:DBCA建库
1. 配置数据库选项
启动DBCA之后,就可以通过图形界面进行数据库各项参数的配置,下面对几个重要步骤进行一点说明。
在如图1所示的选择数据库模板界面中,可以选择使用模板来创建数据库或者通过自定义方式来创建。
图1 选择数据库模板
首先选择通过自定义方式创建数据库,在界面中选择“定制数据库”即可。定制数据库不包含数据文件,需要实时创建,使用模板则会包含已经创建好的数据文件。
单击“下一步”按钮,进入如图2所示的设置数据库标识界面,需要定义一个数据库名称和SID,SID在同一计算机上不能重复,用于唯一标识一个实例。
图2 设置数据库标识
单击“下一步”按钮,进入如图3所示的管理选项界面,选择缺省配置“使用Enterprise Manger配置数据库”复选框即可,选择了这个选项,创建数据库时会自动配置Oracle 10g基于Web方式的Database Control。
图3 管理选项
我们知道在Oracle 9i之前,数据库会为数据库用户指定缺省口令,SYS用户的缺省口令为change_on_install,SYSTEM的缺省口令为manager,但是由于很多用户经常忘记修改缺省口令,进而可能为数据库留下安全隐患,所以从Oracle 9i开始,Oracle要求用户在创建数据库时自行指定用户口令。因此在如图4所示的数据库身份证明界面中可以简单地为所有初始用户定义一个缺省口令。
图4 数据库身份证明
单击“下一步”按钮,进入如图5所示的存储选项界面,该界面用于选择数据库的存储机制,通常可以选择文件系统存储,从Oracle 10g开始Oracle引入了自动存储管理(Automatic Storage Management)的新特性,我们将会在后面章节中详细介绍这一新特性。
图5 存储选项
单击“下一步”按钮,进入如图6所示的指定数据库文件所在位置界面,数据库文件存储位置可以选择“使用Oracle管理的文件”选项,这实际上就是利用了Oracle 9i中引入的一个新特新OMF(Oracle Managed Files)。
图6 指定数据库文件所在位置
单击“下一步”按钮,进入如图7所示的恢复配置界面,该界面用于指定快速恢复区(Flash Recovery Area),这是Oracle 10g的一个新特性,用于简化用户的备份管理,快速恢复区可以是磁盘上的一个存储目录,也可以使用ASM存储,这里可以按照具体的需要设置;同时还可以在这个页面上选择是否启动数据库的归档模式。
图7 恢复配置
单击“下一步”按钮,进入如图8所示的选择数据库组件和定制脚本界面,Oracle的数据库组件有很多,为了简化和快速安装,可以去除大部分选项(这要根据需要进行选择)。
图8 选择数据库组件和定制脚本
单击“下一步”按钮,进入如图9所示的初始化参数界面,其中内存选项可以暂时接受数据库的初始推荐,这些参数可以在建库后再进行修改。
图9 设置初始化参数
注意数据块大小需要认真选择,如图10所示,一旦创建数据库之后,这个参数将不可修改(从Oracle 9i开始,Oracle支持在同一数据库中容纳不同block_size的表空间,但是初始定义的block_size将用于SYSTEM、UNDO等表空间,不可修改)。
图10 设置数据块大小
字符集部分也需要认真选择,在中文的Windows平台上,默认的字符集就是ZHS16GBK,如图11所示,可以不需要修改,但是在Linux/UNIX下,如果系统语言环境缺省不是中文,则这里需要根据需要进行调整。
图11 设置字符集
对于连接模式,可以选择默认的“专用服务器模式”选项,如图12所示。
图12 选择数据库连接模式
单击“下一步”按钮,进入如图13所示的数据库存储界面,给出了存储及文件信息,可以按照需要进行调整,通常选择默认设置即可。
图13 数据库存储
单击“下一步”按钮,进入如图14所示的页面,控制文件选项中定义了对于控制文件至关重要的几个参数,这些参数在此一旦确定,以后只有重建控制文件才能修改。
图14 控制文件选项
单击“下一步”按钮,进入如图15所示的创建选项界面,可以选择将此前的设置存储为一个数据库模板,并生成创建数据库的脚本,如果接受“创建数据库”的选项,接下来就可以进行数据库的创建了(此处仅选择生成了模板和创建脚本)。
图15 创建选项
单击“完成”按钮,则可以看到模板的摘要信息,如图16所示。
图16 模板摘要信息
单击“确定”按钮,进入如图17所示的界面,数据库完成了脚本生成工作。如果选择了创建数据库,此时将开始数据库创建工作。
图17 生成脚本
在DBCA的最后一个步骤,保存生成了创建数据库的脚本,通过手工执行这些脚本,可以在命令行完成数据库的创建工作,这可以使我们摆脱图形界面的困扰,特别是在一些不易于运行图形界面的环境。此外,很多时候通过DBCA创建数据库可能会遇到一些错误,这些错误在图形界面下可能不易判断,但是通过命令行则要容易定位得多。
最后执行刚才生成的脚本就可以了,位置目录:
C:/oracle/admin/book/scripts/book.bat
待续... ... ... ... ... ... ... ...