Oracle除自带的DBCA可以创建数据库以外,还可以利用Oracle手动创建数据库,也是作为DBA人员必须要掌握的。
下面就介绍一下手动创建数据库的步骤:
1. 创建必要的相关目录
2. 创建初始化参数文件
3. 设置环境变量Oracle_sid
4 .创建口令文件
5. 启动数据库到nomount(实例)状态
6. 执行建库脚本
7. 执行catalog脚步本创建数据字典
8. 执行catproc创建package包
9. 执行pupbld
10. 由初始化参数文件创建spfile文件
11. 执行scott脚本创建scott模式
下面以创建一个名为“RAC1”的数据库为例
1. (
使用oracle用户)创建必要的相关目录
[oracle@bj db_1]$ mkdir -p oradata/rac1/
[oracle@bj db_1]$ cd $ORACLE_HOME
[oracle@bj db_1]$ pwd
/u01/app/oracle/product/10.2.0/db_1
[oracle@bj db_1]$ mkdir -p admin/rac1/
[oracle@bj db_1]$cd $ORACLE_HOME/admin/rac1/
[oracle@bj db_1]$mkdir udump bdump cdump pfile create
$ORACLE_HOME/admin/rac1/目录下的几个子目录主要用于存放数据库运行过程中的跟踪信息。
最重要的两上子目录是bdump和udump目录,bdump目录存放的是数据库动行过程中的各个后台进程的跟踪信息,
当中alert文件是警告文件,其文件名称为alert_rac1.log,当数据库出现问题时,首先就可以去查看此文件以找出原因,
手工创建过程中出现的各种问题往往也可以通过查看这个文件找到原因。Udump目录存放特定会话相关的跟踪信息
$ORACLE_BASE/oradata/rac1目录存放各种数据库文件,包括控制文件、数据文件、重做日志文件。
2. 创建初始化参数文件
数据库系统启动时须要用初始化参数文件的设置分配内存、启动必要的后台进程的。
因此,初始化参数文件创建的是否正确、参数设置是否正确关系着整个建库的“命运”。
创建初始化参数文件可以通过拷贝现在的初始化参数文件并将其做适当的修改即可,从而不必要用
手工去一句一句地写出来,因为初始化参数文件的结构体系基本上都是一样的。$ORACLE_HOME/dbs
下将初始化参数文件模板复制一份,
并将其改名为initRAC1.ora。接着用记事本的方式打开initRAC1.ora,修改以下的内容:
[oracle@bj rac1]$ cd $ORACLE_HOME/dbs
vi initRAC1.ora
*.db_name=RAC1
*.db_domain=""
*.control_files=("/u01/app/oracle/oradata/rac1/control01.ctl",
"/u01/app/oracle/oradata/rac1/control02.ctl",
"/u01/app/oracle/oradata/rac1/control03.ctl")
*.undo_management=AUTO
*.undo_tablespace=UNDOTBS
*.background_dump_dest=/u01/app/oracle/product/10.2.0/db_1/admin/rac1/bdump
*.core_dump_dest=/u01/app/oracle/product/10.2.0/db_1/admin/rac1/cdump
*.user_dump_dest=/u01/app/oracle/product/10.2.0/db_1/admin/rac1/udump
*.db_block_size=8192
*.fast_start_mttr_target=300
*.compatible='10.2.0.1.0'
*.nls_date_format='yyyy-mm-dd hh24:mi:ss'
RAC1.pga_aggregate_target=100M
RAC1.sga_target=400M
*.db_domain=""
*.control_files=("/u01/app/oracle/oradata/rac1/control01.ctl",
"/u01/app/oracle/oradata/rac1/control02.ctl",
"/u01/app/oracle/oradata/rac1/control03.ctl")
*.undo_management=AUTO
*.undo_tablespace=UNDOTBS
*.background_dump_dest=/u01/app/oracle/product/10.2.0/db_1/admin/rac1/bdump
*.core_dump_dest=/u01/app/oracle/product/10.2.0/db_1/admin/rac1/cdump
*.user_dump_dest=/u01/app/oracle/product/10.2.0/db_1/admin/rac1/udump
*.db_block_size=8192
*.fast_start_mttr_target=300
*.compatible='10.2.0.1.0'
*.nls_date_format='yyyy-mm-dd hh24:mi:ss'
RAC1.pga_aggregate_target=100M
RAC1.sga_target=400M
注:此刻,/u01/app/oracle/oradata/rac1/目录下没有任何文件
3. 设置环境变量Oracle_sid
$export ORACLE_SID=RAC1
4 .创建口令文件
$orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/pwdRAC1.ora password=oracle entries=2
orapwd是Oracle提供的创建口令文件的工具各称,file参数指定口令文件所在的目录和文件名称,
password参数指定sys用户的口令,entries参数指定数据库拥用DBA权限的用户的个数,当然还有一个force参数。
请注意,这里的命令要一行输入,中间不得换行,否则会出现不必要的错误。
口令文件是专门存放sys用户的口令,因为sys用户要负责建库、启动数据库、关闭数据库等特殊任务,把以sys用户的中令单独存放于口令文件中,
这样数据库末打开时也能进行口令验证。
5. 启动数据库到nomount(实例)状态
su - oracle
$sqlplus sys/oracle as sysdba
SQL>startup nomount
6. 执行建库脚本
执行建库脚本,首先要有建库的脚本。 得到一个符合自己要求的建库脚本有两种方法,一种方法是在自己的电脑上用DBCA来建,
接照它的提示一步步地去做,在做到第十二步的时候,请选择“生成建库脚本”,然后就大功告成,你就可以到相应的目录上去找
到那个脚本并适当地修它便可便用。另一种方法就是自己手工去写一份建库脚本,这也是这里要见意使用的方法,用记事本编辑如下
的内容,并将其保存为文件名任取而后缀名为(*.sql)的SQL脚本,这里保存到$ORACLE_HOME/admin/rac1/create文件名为create_datebase.sql。
[oracle@bj ~]$ cd $ORACLE_HOME/admin/rac1/create
[oracle@bj create]$ touch create_datebase.sql
[oracle@bj create]$ touch create_datebase.sql
[oracle@bj create]$ cat create_datebase.sql
spool dbcreate.log;
spool dbcreate.log;
CREATE DATABASE rac1
MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
DATAFILE
'/u01/app/oracle/oradata/rac1/system01.dbf' size 300M
REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL
sysaux DATAFILE
'/u01/app/oracle/oradata/rac1/sysaux01.dbf' size 120M
REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/u01/app/oracle/oradata/rac1/temp01.dbf' size 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL
UNDO TABLESPACE UNDOTBS DATAFILE '/u01/app/oracle/oradata/rac1/undotbs01.dbf' size 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/rac1/redo01.log') size 100M,GROUP 2 ('/u01/app/oracle/oradata/rac1/redo02.log') size 100M,GROUP 3 ('/u01/app/oracle/oradata/rac1/redo03.log') size 100M;
MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
DATAFILE
'/u01/app/oracle/oradata/rac1/system01.dbf' size 300M
REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL
sysaux DATAFILE
'/u01/app/oracle/oradata/rac1/sysaux01.dbf' size 120M
REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/u01/app/oracle/oradata/rac1/temp01.dbf' size 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL
UNDO TABLESPACE UNDOTBS DATAFILE '/u01/app/oracle/oradata/rac1/undotbs01.dbf' size 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/rac1/redo01.log') size 100M,GROUP 2 ('/u01/app/oracle/oradata/rac1/redo02.log') size 100M,GROUP 3 ('/u01/app/oracle/oradata/rac1/redo03.log') size 100M;
spool off
SQL> start $ORACLE_HOME/admin/rac1/create/create_datebase.sql
Database created.
Database created.
在执行create database 语句的同时,自动执行$ORACLE_HOME/rdbms/admin/sql.bsq脚本,创建SYSTEM表空间
和SYSTEM回退段、建立SYS和SYSTEM账号、建立数据字典基础表、建立数据字典索引、创建预定义角色等。
[oracle@bj rac1]$ pwd
/u01/app/oracle/oradata/rac1
[oracle@bj rac1]$ ll
total 963188
-rw-r----- 1 oracle oinstall 6832128 May 25 16:16 control01.ctl
-rw-r----- 1 oracle oinstall 6832128 May 25 16:16 control02.ctl
-rw-r----- 1 oracle oinstall 6832128 May 25 16:16 control03.ctl
-rw-r----- 1 oracle oinstall 104858112 May 25 16:15 redo01.log
-rw-r----- 1 oracle oinstall 104858112 May 25 16:13 redo02.log
-rw-r----- 1 oracle oinstall 104858112 May 25 16:13 redo03.log
-rw-r----- 1 oracle oinstall 125837312 May 25 16:15 sysaux01.dbf
-rw-r----- 1 oracle oinstall 314580992 May 25 16:15 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 May 25 16:14 temp01.dbf
-rw-r----- 1 oracle oinstall 209723392 May 25 16:15 undotbs01.dbf、、
看到,控制文件,redo日志,表空间等已经建立OK。
/u01/app/oracle/oradata/rac1
[oracle@bj rac1]$ ll
total 963188
-rw-r----- 1 oracle oinstall 6832128 May 25 16:16 control01.ctl
-rw-r----- 1 oracle oinstall 6832128 May 25 16:16 control02.ctl
-rw-r----- 1 oracle oinstall 6832128 May 25 16:16 control03.ctl
-rw-r----- 1 oracle oinstall 104858112 May 25 16:15 redo01.log
-rw-r----- 1 oracle oinstall 104858112 May 25 16:13 redo02.log
-rw-r----- 1 oracle oinstall 104858112 May 25 16:13 redo03.log
-rw-r----- 1 oracle oinstall 125837312 May 25 16:15 sysaux01.dbf
-rw-r----- 1 oracle oinstall 314580992 May 25 16:15 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 May 25 16:14 temp01.dbf
-rw-r----- 1 oracle oinstall 209723392 May 25 16:15 undotbs01.dbf、、
看到,控制文件,redo日志,表空间等已经建立OK。
7. 执行catalog脚步本创建数据字典
SQL>start $ORACLE_HOME/rdbms/admin/catalog.sql --用于创建数据字典视图,包括V$动态性能视图和它们的同义词,同时将授予PUBLIC角色对这些同义
8. 执行catproc创建package包
SQL>start $ORACLE_HOME/rdbms/admin/catproc.sql --用于建立对PL/SQL程序设计的支持
PL/SQL procedure successfully completed.
SQL>
SQL>
9. 执行pupbld
在执行pupbld之前要把当前用户(sys)转换成system,即以system账户连接数据库。因为此数据库是刚建的,所以system的口令是系统默认的口令,即manager。
你可以在数据库建好以后再来重新设置此账户的口令。
SQL>connect system/manager
SQL>start $ORACLE_HOME/sqlplus/admin/pupbld.sql
10. 由初始化参数文件创建spfile文件
[oracle@bj ~]$ sqlplus sys/oracle as sysdba
SQL>create spfile from pfile;
11. 执行scott脚本创建scott模式
SQL>start $ORACLE_HOME/rdbms/admin/scott.sql
如果没有该sql,请点击链接http://blog.csdn.net/bohai0409/article/details/26970037
12. 把数据库打开到正常状态
SQL>alter database open;
13.查看数据库的状态等信息,测试是否安装成功
SQL> select instance_name,status from v$instance;
INSTANCE_NAME
STATUS
---------------- ------------
RAC1
OPEN
TABLESPACE_NAME CONTENTS STATUS
------------------------------ --------- ---------
SYSTEM PERMANENT ONLINE
UNDOTBS UNDO ONLINE
SYSAUX PERMANENT ONLINE
TEMP TEMPORARY ONLINE
至此,整个数据库就已经建好了。接着就可以在此数据库上建立自己的账户和表空间以及数据库对象
另外. Windos手工建库与此类似,需要在第三与第四步操作之间新增一步创建实例的操作
创建实例(即创建后台服务)
C:/>oradim –new –sid RAC1
oradim是创建实例的工具程序名称,-new表明执行新建实例,-delete表明执行删掉实例,-sid指定实例的名称。
安装问题:
1,SQL> start $ORACLE_HOME/admin/rac1/create/create_datebase.sql
CREATE DATABASE rac1
ERROR at line 1: ORA-01092: ORACLE instance terminated. Disconnection forced
查看日志:
[oracle@bj bdump]$ cat /u01/app/oracle/product/10.2.0/db_1/admin/rac1/bdump/alert_RAC1.log
ORA-01119: error in creating database file '/opt/oracle/oradata/rac1/system01.dbf'
ORA-27040: file create error, unable to create file
Linux Error: 2: No such file or directory
目录错误,正确的是.u01/app/oradata/rac1/system01.dbf
2.Thread 1 opened at log sequence 1
Current log# 1 seq# 1 mem# 0: /u01/app/oracle/oradata/rac1/redo01.log
Successful open of redo thread 1
Sun May 25 15:59:51 2014
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
解决方案:
在初始化参数配置文件initRAC1.ora
加一句话*.fast_start_mttr_target=300
[oracle@bj rac1]$cd /u01/app/oracle/oradata/rac1
[oracle@bj rac1]$ rm -rf *
再次执行start $ORACLE_HOME/admin/rac1/create/create_datebase.sql
SQL> start $ORACLE_HOME/admin/rac1/create/create_datebase.sql
Database created.
----------------------------------------------------------
CREATE DATABASE rac1
ERROR at line 1: ORA-01092: ORACLE instance terminated. Disconnection forced
查看日志:
[oracle@bj bdump]$ cat /u01/app/oracle/product/10.2.0/db_1/admin/rac1/bdump/alert_RAC1.log
ORA-01119: error in creating database file '/opt/oracle/oradata/rac1/system01.dbf'
ORA-27040: file create error, unable to create file
Linux Error: 2: No such file or directory
目录错误,正确的是.u01/app/oradata/rac1/system01.dbf
2.Thread 1 opened at log sequence 1
Current log# 1 seq# 1 mem# 0: /u01/app/oracle/oradata/rac1/redo01.log
Successful open of redo thread 1
Sun May 25 15:59:51 2014
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
解决方案:
在初始化参数配置文件initRAC1.ora
加一句话*.fast_start_mttr_target=300
[oracle@bj rac1]$cd /u01/app/oracle/oradata/rac1
[oracle@bj rac1]$ rm -rf *
再次执行start $ORACLE_HOME/admin/rac1/create/create_datebase.sql
SQL> start $ORACLE_HOME/admin/rac1/create/create_datebase.sql
Database created.
----------------------------------------------------------
参考文档:http://blog.csdn.net/banpingzijy/article/details/17471993 --
半瓶子酱油