创建数据库
可以运行dbca用图形界面来创建,也可以用命令行来创建.
因为以前没有创建过集群下的数据库,因此我用图形界面来创建脚本,修改后用命令行来创建.
先确认ORACM和GSD已经启动:
$ ps -ef grep oracm
root 3056 1 0 10:50 pts/1 00:00:00 oracm
root 3057 3056 0 10:50 pts/1 00:00:00 oracm
root 3059 3057 0 10:50 pts/1 00:00:00 oracm
root 3060 3057 0 10:50 pts/1 00:00:00 oracm
root 3061 3057 0 10:50 pts/1 00:00:00 oracm
root 3062 3057 0 10:50 pts/1 00:00:00 oracm
root 3063 3057 0 10:50 pts/1 00:00:00 oracm
root 3064 3057 0 10:50 pts/1 00:00:00 oracm
root 3065 3057 0 10:50 pts/1 00:00:00 oracm
root 3338 3057 0 11:36 pts/1 00:00:00 oracm
root 3362 3057 0 11:36 pts/1 00:00:00 oracm
Oracle 3482 2932 0 11:38 pts/1 00:00:00 grep oracm
$ gsdctl stat
GSD is running on the local node
然后运行dbca启动数据库配置助手.
在欢迎画面中,选择Oracle cluster database, 然后一路继续就可以了.
在最后的总结画面上,可以选择创建数据库,也可以选择创建脚本.我选择了创建脚本.
手工修改脚本为自己想要的样子,然后跟非集群环境一样手工创建数据库.数据文件使用本地治理,不用数据字典治理.并创建缺省的撤消表空间(undo tablespace)和临时表空间.
注重:
根据我的经验,SGA太小,在创建数据字典的时候会失败,因此SGA可以大一些.但因为是集群,需要启动多个instance,所以在数据字典创建完以后,即catalog.sql,catproc.sql,catclust.sql运行完以后,需要将SGA改小一点.
修改init.ora文件,并拷贝到$ORACLE_HOME/dbs下,改名字为initrac.ora.
我是一个instance对应一个listener.也可以一个listener响应多个instnce.
其余参数可以自己根据自己的情况进行设置,以下是cluster的参数:
undo_management=AUTO
undo_retention=10800
cluster_database=true
cluster_database_instances=5
rac1.instance_name=rac1
rac1.instance_number=1
rac1.local_listener=lsnr1
rac1.thread=1
rac1.undo_tablespace=UNDOTBS1
rac2.instance_name=rac2
rac2.instance_number=2
rac2.local_listener=lsnr2
rac2.thread=2
rac2.undo_tablespace=UNDOTBS2
rac3.instance_name=rac3
rac3.instance_number=3
rac3.local_listener=lsnr3
rac3.thread=3
rac3.undo_tablespace=UNDOTBS3
假如要多个instance都由一个listener来响应,则改以下两行:
rac2.local_listener=lsnr1
rac3.local_listener=lsnr1
注重:
尽管数据库名字叫rac,但启动的实例名字不能叫rac.我将ORACLE_SID分别设置成了rac1,rac2,rac3.
然后启动第一个实例,创建数据库:
$ eXPort ORACLE_SID=rac1
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.4.0???j? - ProdUCtion on Fri Nov 21 13:43:22 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL conn / as sysdba;
Connected to an idle instance.
SQL startup pfile=/u01/app/oracle/product/9.2.0.4.0/dbs/initrac.ora;
ORACLE instance started.
Total System Global Area 38867968 bytes
Fixed Size 451584 bytes
Variable Size 33554432 bytes
Database Buffers 4194304 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL
创建数据库的命令:
CREATE DATABASE rac
MAXINSTANCES 32
MAXLOGHISTORY 100
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
DATAFILE '/u02/oradata/rac/rac/system01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE 1000M
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u02/oradata/rac/rac/temp01.dbf' SIZE 40M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE 1000M
UNDO TABLESPACE "UNDOTBS1" DATAFILE '/u02/oradata/rac/rac/undotbs01.dbf' SIZE 50M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE 1000M
CHARACTER SET ZHS16GBK
LOGFILE GROUP 1 ('/u02/oradata/rac/rac/redo01.log') SIZE 10M REUSE,
GROUP 2 ('/u02/oradata/rac/rac/redo02.log') SIZE 10M REUSE,
GROUP 3 ('/u02/oradata/rac/rac/redo03.log') SIZE 10M REUSE;
然后创建数据字典.
以sysdba身份运行:
SQL @?
/rdbms/admin/catalog.sql;
SQL @?/rdbms/admin/catproc.sql;
SQL @?/rdbms/admin/catclust.sql;
以system身份运行:
SQL @?/sqlplus/admin/pupbld.sql;