一:如何手工创建数据库
Oracle运行环境:CentOs4.5
Oracle版本:oracle9i
创建前提:oracle软件已经安装
1:确定数据库的名字
2:设置环境变量,可以建立一个文件,然后利用. ./mynewdb.env执行
例:
ORACLE_BASE=/U01
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=mynewdb;
ORACLE_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_NLS33 PATH
LD_LIBRARY_PATH
参数的说明:
ORACLE_BASE:
Specifies the directory at the top of the Oracle software. Example:
/u01/app/oracle
ORACLE_HOME:
Specifies the directory where the Oracle software is installed. The
OFArecommended value is $ORACLE_BASE/product/release. Example:
/u01/app/oracle/product/9.2 //安装Oracle产品的总目录,因为Oracle有很多软件
ORACLE_SID:
Specifies the instance name and must be unique for Oracle instances running
on
the same machine //可以参考我的另一篇日记什么是sid?
ORA_NLS33:
Required when creating a database with a character set other than US7ASCII.
Example:
$ORACLE_HOME/ocommon/nls/admin/data //字符集的时候需要用
PATH:
Specifies the directories that the operating system searches to find
executables, such as
SQL*Plus.
The Oracle9iexecutables are located in $ORACLE_HOME/binand needs to be
added
to the PATHvariable.
LD_LIBRARY_PATH:Specifies
the directories for the operating system and Oracle library
//Linux名,该环境变量主要用于指定查找共享库(库)时除了默认之外的其他路径。(该在默认路径之前查找)
3:建立初始化参数,可以利用已经存在的initSID.ora文件创建新的初始化文件,利用strings语句,例如:
strings
initSID.ora > initmynewdb.ora;
$vi initnewmydb.ora
(全局替换用:%s/xxx/yyy/g,或者去除其中的*.用:%s/*\.//g)
注意记得创建其中使用到的目录。cp –R xxx/ yyy,进入单个目录rm –f *
4:准备相对应的目录,否则在建立数据库的时候会出错
现在/u01/oradata下建立相对应的文件夹
mkdir mynewdb;
cd mynewdb;
mkdir archive;
在/u01/admin下
拷贝整个admin
cp –R denver/
mynewdb
注意要删除目录下原来残留的一些,进入单个目录rm –f *
注意:要在dbs目录下准备口令文件
orapwd
file=orapwmynewdb password=oracle entries=10;
5:运行create database脚本
SPOOL
dbcreate.log;
CREATE DATABASE
mynewdb
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
CONTROLFILE REUSE
ARCHIVELOG
LOGFILE
GROUP 1
('/u01/oradata/mynewdb/redo01.log') SIZE 100M,
GROUP 2
('/u01/oradata/mynewdb/redo02.log') SIZE 100M,
GROUP 3
('/u01/oradata/mynewdb/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET UTF8
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/u01/oradata/mynewdb/system01.dbf'
SIZE 325M REUSE
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE
'/u01/oradata/mynewdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE UNDOTBS1
DATAFILE
'/u01/oradata/mynewdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K
MAXSIZE UNLIMITED;
SPOOL OFF;附:如果文件已存在,不加reuse会报ORA-27038:所创建的文件已存在
查看错误在/U01/admin/mynewdb/bdump/alert_mynewdb.log
运行:tail –f
alert_mynewdb.log;
5:Run Scripts to
Build Data Dictionary Views
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/sqlplus/admin/pupbld.sql
附:@表示Run的意思,?表示是ORACLE_HOME的位置,他是个变量,应该是会随着ORACLE_HOME的变化而变化的,原文如图:
官方文档关于catalog.sql和catproc.sql的解释,这两个是必须安装的
catalog.sql:
Creates the data dictionary and public synonyms for
many of its views
GrantsPUBLICaccess to the synonyms
catproc.sql:
Runs all scripts required for, or used with PL/SQL
建议:执行脚本前可以SPOOL log1.log记录信息,因为执行脚本时可能会出错,查找错误可以直接在log1.log下/error查看是否有错误信息,或者cat log1.log | grep err | more;
总结:手工建立数据库过程中主要遇到的问题是对应的文件夹要设置对,还有相应的文件注意不要忘了在dbs目录下建立口令文件orapwSID,还有关于CREATE DATABASE这条sql语句,我是参考官方文档上的例子的,关于创建的语法官方文档上都有说明,而且写的也很详尽,除了这些,没遇到什么大的问题。