作者: (*)
硬件情况:
IBM
H85主机两台,各有1个CPU,内存各为
软件情况:
操作系统: IBM-AIX 4.3.3 64-bit
使用IBM HACMP CASCADE
打IBM 有关HACMP 和AIX 的补丁
数据库系统:ORACLE
本地硬盘作成一个vg :rootvg,容量为
两台主机的swap区
SYSTEM表空间数据文件
TOOLS表空间数据文件
USERS表空间数据文件
RBS表空间数据文件
INDX表空间数据文件
TEMP表空间数据文件
控制文件 共三个
日志文件
TRACE文件的存放位置默认放在本地盘上。
备用系统数据库laybbak的数据占用的vg为datavg2,并建立两个lv,分别为datavg2_lv01,datavg1_lv02,分别对应文件系统u02(
SYSTEM表空间数据文件
TOOLS表空间数据文件
USERS表空间数据文件
RBS表空间数据文件
INDX表空间数据文件
TEMP表空间数据文件
控制文件 共三个
日志文件
TRACE文件的存放位置默认放在本地盘上。
1) 创建组dba,及其所属用户oracle,dba为其主组。用户的工作目录为“/oracle”,uid=1001 gid=1001;主备机保持一致。以下操作在主机上。
2) 编辑oracle用户的.profile,定义下列oracle使用的环境变量:
ORACLE_BASE=/oracle/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/
ORACLE_SID=layb(A机)/(B机)
ORACLE_TERM=vt100
ORACLE_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
NLS_LANG=american_america.zhs16gbk
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib
LIBPATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin:/usr/local/bin
DISPLAY=172.16.25.1:0.0
JAVA_HOME=/usr/jdk_base
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM
export ORACLE_NLS33 NLS_LANG LD_LIBRARY_PATH LIPPATH
export PATH DISPLAY JAVA_HOME
umask 022
3)检查IBM HACMP是否已成功启动;
4) 安装Oracle数据库系统,放入第一张光盘并且MOUNT CDROM
mount -rv cdrfs /dev/cd0/cdrom
5)以root身份进入/cdrom目录
运行命令
sh rootpre.sh
xhost +
使用命令”su – oracle”进入oracle用户身份,进入/cdrom目录,在主机上运行oracle安装程序runInstaller”,安装“Oracle 8i Enterprise Edtion
6)检查各安装log文件,确认安装成功。
7)以oracle身份执行dbassist开始建立数据库layb,选择“create a database”,选择“Custom”选择“OLTP”,输入并发用户数目“
shared_pool_size=256000000
db_block_buffer=50000
log_buffer=1638400
process=512
db_block_size=4096
选择保存建库脚本,名字为createlayb.sh。
8)在$ORACLE_HOME/assistants/dbca目录下产生createlayb.sh, laybrun.sh, laybrun1.sh, laybrun2.sh和laybalterTablespace.sh脚本文件。
9)分别执行脚本建库laybprun.sh,laybrun1.sh,laybrun2.sh,laybalterTablespace.sh建立数据库layb。
10)使用7)~9)的方法建立数据库laybbak。
11)运行netca命令配置net8 listener.ora & tnsnames.ora。
12)在两个节点的/oracle目录下建立.rhosts 文件,保证cluster各接点的“user equivalence”, rcp,rlogin时不需口令。
13)使用root的身份修改/etc目录下的文件services,在最后添加如下内容:
listener_main 1521/tcp #Net8 listener for layb
listener_bak 1522/tcp #Net8 listener for bak
将修改过的文件services拷贝到备机上。
14) 由于作双机结构,必须以oracle身份使用RCP命令做ORACLE用户$HOME/目录的全拷贝,同时,应注意在第二节点中,执行/cdrom/rootpre.sh脚本,/etc目录下ora*文件(共两个)的复制。
15)编辑listener.ora和tnsnames.ora。
LISTENER.ORA 文件如下:
# LISTENER.ORA Network Configuration File:
/oracle/app/oracle/product/
# Generated by Oracle configuration tools.
LISTENER_MAIN =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = layb1_service)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
SID_LIST_LISTENER_MAIN =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/app/oracle/product/
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = layb)
(ORACLE_HOME = /oracle/app/oracle/product/
)
)
LISTENER_BAK =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = layb2_service)(PORT = 1522))
)
)
)
SID_LIST_LISTENER_BAK =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/app/oracle/product/
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = laybbak)
(ORACLE_HOME = /oracle/app/oracle/product/
)
)
TNSNAMES.ORA 文件如下:
#TNSNAMES.ORA
Configuration File:/oracle/app/oracle/product/
# Generated by Oracle configuration tools.
layb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = layb1_service)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = layb)
)
)
laybbak =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = layb2_service)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = laybbak)
)
)
16) ORACLE数据库的启动和关闭由IBM AIX HACMP CASCADE的启动和关闭脚本负责。
其中hastartmain和hastopmain(/etc目录下)负责数据库layb的启动和关闭。。所以手工建立数据库启动脚本startdbmain和数据库关闭脚本shutdowndbmain(在/etc下),并拷贝到备机上的相应目录下。
附各脚本内容:
hastartmain脚本内容:
su - oracle -c startdbmain (root用户以oracle用户的身份执行脚本startdbmain)
hastopmain脚本内容:
su - oracle -c shutdowndbmain (root用户以oracle用户的身份执行脚本shutdowndbmain)
startdbmain脚本内容:
export ORACLE_SID=layb
/oracle/app/oracle/product/
connect internal
startup
exit
EOF
lsnrctl start listener_main
shutdowndbmain脚本内容
export ORACLE_SID=layb
lsnrctl stop listener_main
/oracle/app/oracle/product/
connect internal
shutdown normal
EOF
其中hastartbak和hastopbak(/etc目录下)负责数据库laybbak的启动和关闭。。所以手工建立数据库启动脚本startdbbak和数据库关闭脚本shutdowndbbak(在/etc下),并拷贝到备机上的相应目录下。
附各脚本内容:
hastartbak脚本内容:
su - oracle -c startdbbak (root用户以oracle用户的身份执行脚本startdbbak)
hastopbak脚本内容:
su - oracle -c shutdowndbbak (root用户以oracle用户的身份执行脚本shutdowndbbak)
startdbbak脚本内容:
export ORACLE_SID=laybbak
/oracle/app/oracle/product/
connect internal
startup
exit
EOF
lsnrctl start listener_bak
shutdowndbbak脚本内容
export ORACLE_SID=laybbak
lsnrctl stop listener_bak
/oracle/app/oracle/product/
connect internal
shutdown normal
EOF
注:
IBM HA操作: smit clstart smit clstop 分别为启动、关闭IBM HA
Varyonvg datavg varyoffvg datavg 分别为启动、关闭磁盘柜的vg
正常情况下主数据库layb及其监听程序运行在A机上,备用数据库laybbak及其监听程序运行在B机上。
1) 如果A机当机,主数据库layb及其监听程序会自动切换到B机,B机运行主数据库layb及其监听程序和备用数据库laybbak及其监听程序。
2) 如果A机恢复运行,主数据库layb及其监听程序会自动被A机接管。
3) 如果B机当机,备用数据库laybbak及其监听程序会自动切换到A机,A机运行主数据库layb及其监听程序和备用数据库laybbak及其监听程序。
4) 如果B机恢复运行,备用数据库laybbak及其监听程序会自动被B机接管。
*** *** *** *** ***
本文作者请与epub@itpub.net联系, 以便确认署名.