前言
-----------------------------------------------------------------------
以下介绍一种方法在UNIX环境下创建第二个数据库实例(基于ORACLE7,ORACLE8环境下,处理基本相同)。为了更好的理解以下步骤,推荐阅读以下资料
--ORACLE管理员指南:第二章(创建数据库)
--SQL语言参考手册:创建数据库命令部分
设置UNIX环境
-----------------------------------------------------------------------
在创建数据库实例时,ORACLE会检查UNIX环境变量,确定要创建什么实例。
因此,必须在创建第二个数据库实例前设置好你的数据库实例名字;即设置好以下变量:
ORACLE_SID - 设为你的新的ORACLE实例的名字
ORACLE_HOME - 设置为ORACLE安装的完全路径
PATH - 必须包含$ORACLE_HOME/bin这个搜索路径
可以在UNIX SHELL环境下,用以下命令设置:
对于sh(bash):ORACLE_SID XXX;export ORACLE_SID
对于csh :setenv ORACLE_SID XXX
检查变量是否正确,用以下命令:
echo $ORACLE_SID(回车)
系统将显示新的ORACLE_SID环境变量。
警告:不设置新的ORACLE_SID,直接执行以下步骤,将会覆盖掉你原有的数据库实例及其数据、数据文件!请慎重、仔细!
创建第二个数据库实例
-----------------------------------------------------------------------
这种方法是在SQL*DBA下,通过输入CREATE DATABASE命令来实现。
这种方法比较灵活,例如:你可以指定MAXDATAFILES(最大数据文件数)参数,可以指定SYSTEM表空间使用多个数据文件,等等。当然,手工操作,失误的可能性就相对大一些。在添加时,不会自动创建LOG来记录你所指定的创建参数。
详细步骤:
1. 设置UNIX环境变量(详细步骤方法如上所述)。假设新的SID为"SID2"。
2. 为新的实例创建一个新的INITSID2.ORA文件,可以通过COPY一份标准的INIT文件来实现
% cp $ORACLE_HOME/dbs/init.ora $ORACLE_HOME/dbs/initSID2.ora
3. 修改initSID2.ora,将db_name参数改为新的SID名称;
原语句:db_name=DEFAULT 新语句: db_name=SID2
4. 用命令行方式启动SQLDBA:
svrmgrl
5. 连接上新的实例,用NOMOUNT参数启动实例:
SVRMGR> connect internal
Connected.
SVRMGR> startup nomount
ORACLE instance started.
SVRMGR>
6. 参阅SQL语法手册中"CREATE DATABASE"的命令,编写创建命令。
语法:
CREATE DATABASE [database]
[CONTROLFILE REUSE]
[LOGFILE [GROUP integer] filespec [, [GROUP integer] filespec] ...]
[MAXLOGFILES integer ]
[MAXLOGMEMBERS integer]
[MAXLOGHISTORY integer]
[DATAFILE filespec [, filespec] ...]
[MAXDATAFILES integer]
[MAXINSTANCES integer]
[ARCHIVELOG | NOARCHIVELOG]
[EXCLUSIVE]
[CHARACTER SET charset]
例如:
SVRMGR> create database SID2
2> logfile group 1 ('oracle_home/dbs/log1SID2.dbf') size 500K,
3> group 2 ('oracle_home/dbs/log2SID2.dbf') size 500K
4> datafile 'oracle_home/dbs/dbsSID2.dbf' size 20M
5> maxdatafiles 50;
7. 执行完成以上语句后,立刻巡行$ORACLE_HOME/rdbms/admin目录下的catalog.sql 脚本。这个脚本必须用INTERNAL用户或者SYS用户来执行。
注意:如果安装了一些其他产品,catproc.sql脚本也必须要执行。建议都 执行一下。
SVRMGR>@$ORACLE_HOME/rdbms/admin/catalog.sql
SVRMGR>@$ORACLE_HOME/rdbms/admin/catproc.sql
8. 执行完成后,SYSTEM表空间和SYSTEM回滚段都已经存在了。然而,在其他表空间创建之前,必须先在SYSEM表空间上创建并激活第二回滚段。
创建回滚段的语法如下:
CREATE ROLLBACK SEGMENT 回滚段名称
TABLESPACE SYSTEM
STORAGE (...);
激活回滚段的语法如下:
ALTER ROLLBACK SEGMENT 回滚段名称 ONLINE;
9. 至此数据库实例创建已经基本完成,你需要再创建一些用户表空间来使用。这就要根据你的实际应用自行决定了。
10. 修改/etc/oratab文件,添加上新的实例的记录。这个文件用来在启动主机时自动启动数据库。
以上步骤可以完成创建一个数据库实例的过程。此外,你也可以利用ORACLE提供的一些工具来实现,例如:在ORACLE 8i下的$ORACLE_HOME/bin/dbassist.