Oracle数据库的启动分为三个状态nomount,mount,open,三个状态需要的文件了spfile,controlfile,datafile,log file。第一次看eygle的《循序渐进》的第一章就是手工创建数据库解析。当时由于是5个月前刚接触oracle,很多东西都不会很理解,现在这几天又好好看了下,期间我也手工创建数据库一两次,晒下其中的有些注意的地方。
1 首先我们先做点准备工作吧,oracle软件肯定需要安装的吧,然后数据库文件的储存目录
Mkdir oracle_baseadminsfadump
Mkdir oracle_baseadminsfbdump 准备用于存储警告日志文件和后台跟踪日志
Mkdir oracle_baseadminsfcdump
Mkdir oracle_baseadminsfudump 准备用于存储用户跟踪日志
Mkdir oracle-baseoradatasf 准备存储数据文件 日志文件 控制文件
2 数据库是由实例来访问的,首先需要我们利用oradim工具来创建一个数据库实例
C:>Oradim -new -sid sf
数据库实例sf的服务已经注册到windows services中去,此时实例并不是os上面的提示的创建成功,实例在nomount创建成功启动需要sga和后台进程。
3 但是此时实例是已经创建完毕了,但是如何启动实例了,首先我们需要sys用户连入未启动的数据库实例,这个时候是需要sys用户密码验证文件,利用工具orapwd来创建
C:>Orapwd file=oracle_homedatabaseorapwsf. Entries=2 password=oracle
上述的entries是sys指定的最大用户数。因为数据库实例未启动,普通用户无法连入此时sys用户可以通过密码验证文件来启动数据库,就需要密码验证文件。
4 实例创建已经完成,密码验证文件也已经生成,但是此时由于没有spfile或者pfile参数文件,我们只能
C:>Set oracle_sid=sf
指定oracle_sid,让操作系统可以通过oracle_sid来启动数据库对应的后台进程
C:>sqlplus sys/oracle as sysdba;
此时是无法startup nomount的了。
此时我们可以手工创建一个pfile。
Mkdir oracle_homedatabaseinitsf.ora
此时我们创建了一个pfile参数文件或者cp一个别的实例pfile来修改,不过还是手工创建吧,pfile文件中在我以前的nomount状态数据库详解中记载到pfile文件中只需要一个参数就能启动数据库,那就是db_name=sf,我们在pfile默认参数下创建一个只有一个db_name参数的pfile文件。
Sql>startup nomount
数据库实例此时已经可以启动了,此时我们已经只用了上面三步就把一个只安装oracle软件的机器成功的创建了数据库实例并启动到nomount状态。
5 nomount状态是oracle实例启动过程,此时数据库分配sga和oracle后台进程,此时我们并没有涉及到控制文件和数据文件 日志文件中物理文件的创建,接下来我们需要执行建库脚本。
create database sf
datafile 'd:oracleproduct
default temporary tablespace temp tempfile 'd:oracleproduct
undo tablespace "undotb" datafile 'd:oracleproduct
sysaux datafile 'd:oracleproduct
logfile group 1 ('d:oracleproduct
group 2 ('d:oracleproduct
group 3 ('d:oracleproduct
今天早上我运行此脚本,出现很多次的失败,由于是oracle10G,我在上述脚本中
default temporary tablespace temp tempfile 'd:oracleproduct
pfile文件:
db_name=sf
control_files=("D:oracleproduct
undo_management='AUTO'
undo_tablespace='undotb'
后面的undo的两个参数,经过测试在建库成功后是即使删除上述undo两个参数数据库都能从nomout mount open,等于如果pfile中只有db_name参数,数据库是无法mount状态的,需要pfile来指定controlfile。
(由于此pfile中没有设置background_dump_dest,user_dump_dest等用于存放后台日志 警告日志 用户跟踪日志,默认的都存储在oracle_homerdbmstrace下了,最好还是指定上述参数吧跟踪日志存储在在开头的指定的目录中,方便查看)
6 用catalog.sql创建数据字典
start d:oracleproduct
7 用catproc.sql创建系统包
start d:oracle]product
8执行pupbld.sql
connect system/manager
start d:oracleproduct
9 重新关闭数据库并打开
shutdown immediate
startup nomount
alter database mount
alter database open
关于上述的6,7,8脚本由于内容较多,个人没有过多分析里面的脚本,个人觉得有些有些oracle的东西刚开始接触第一次不是一下子就弄明白的,需要反复的查看复习。例如这篇原创笔记大概5个月前我是绝对写不出来的,而且看eygle的书基本上是90%以上完全不懂,现在回过头来看里面的手工建库虽然有点复杂,但是自己确实能理清楚了,而且还能有点自己的想法!学习就是一个反复的过程!坚持!
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1053687/ ,如需转载,请注明出处,否则将追究法律责任。