在RAC安装过程中涉及多个用户,多种工具,这里列出常见命令提示符:
#
UNIX的SHELL提示符,表示root用户的登录
$
UNIX的SHELL提示符,表示oracl用户或grid用户的登录
安装RAC是一个比较耗时,并且容易出错的过程。最重要的阶段是安装前的准备,准备工作越充分,安装就会越顺利。在这个阶段对硬件、软件进行一系列的配置,如配置存储、网络、参数、权限等步骤繁多,环环相扣,一样都不能马虎。在项目实施期间,数据库工程师往往是后出场的角色,前面有系统工程师安装好操作系统,安装所需的包,调通网络。存储工程师划分好磁盘柜,安装多路径软件,接下来才能开始安装Oracle数据库。有些必要的包最好在安装前和其他工程师沟通好,按照版本要求安装,以免在安装Oracle数据库时发现缺东少西的十分麻烦。
AIX的操作系统无法再虚拟机下安装,没接触过AIX操作系统的同学会感觉陌生。其实和Linux相比安装方法是大同小异,或者说没有差异,只是在前期的配置有些不同,具体细节在下文中会有所体现。
系统配置
1号机主机名 | cjscora01 |
2号机主机名 | cjscora02 |
1号机IP及虚拟IP | 10.157.140.1 10.157.140.3 |
2号机IP及虚拟IP | 10.157.140.2 10.157.140.4 |
SCAN IP | 10.157.140.5 |
数据库安装配置
|
|
ORACLE_BASE |
grid: /oracle/app/grid oracle:/oracle/app/oracle |
ORACLE_HOME |
grid: /oracle/app/11.2.0/grid oracle: /oracle/app/oracle/11.2.0/db |
ORACLE_SERVICE_NAME |
eicdb |
数据文件路径 |
+DATA |
Oracle管理员帐户口令 |
oracle |
数据库组件 |
全选 |
标准数据库功能 |
全选 |
初始化参数: Memory size |
160G |
数据库参数: db_block_size character set(字符集) |
8k ZHS16GBK |
是否使用归档方式运行数据库 |
是 |
如果使用归档方式运行数据库,归档路径位置 |
+ARCH |
安装过程
一、每个节点的硬件要求:
1、内存:至少4GB。此次实施的服务器为IBM780,内存配置为192GB
#/usr/sbin/lsattr –E –l sys0 –a realmem
MemTotal: 201326592 kB
2、交换分区:分配24GB
#/usr/sbin/lsps -a
SwapTotal: 25165824 kB
注意:所有节点的CPU主频、内存大小应该大致相当,这样当在做节点间切换时,两个节点的处理能力不会有较大差异。本次项目项目采用的服务器为IBM780,内存192GB,32颗CPU,配置比较不错。
二、操作系统要求:
1、系统包要求
AIX 6.1 required packages:
bos.adt.base
bos.adt.lib
bos.adt.libm
bos.perf.libperfstat 6.1.2.1 or later
bos.perf.perfstat
bos.perf.proctools
rsct.basic.rte (For RAC configurations only)
rsct.compat.clients.rte (For RAC configurations only)
xlC.aix61.rte:10.1.0.0 or later
gpfs.base 3.2.1.8 or later (Only for RAC)
APARs for AIX 6.1:
IZ41855
IZ51456
IZ52319
IZ97457
IZ89165
注意:为了通过SSH在两个节点间建立对等关系,需要在每个节点上安装以下软件。
.bash
.openssl
.openssh
2、tmp分区
[root@db1 /]# df –k
至少1GB
3、系统版本
[root@db1 /]# oslevel -s
6100-05-11-1140
注意:首选的操作系统版本一定是最稳定的而不一定是最新的。本次操作系统采用了比较保守的6100-05-11-1140
,本次安装系统的IBM工程师经验丰富,推荐我们采用了这个版本。
4、系统内核参数
smitty chgsys
Maximum number of processes available to a single user [16384]
注意:该参数的默认值偏小,在高并发的生产环境下,session数和process数都比较高,在图形安装页面时如果只是把process调高而相对应的该参数没有及时调整会报出一个警告。
5、建用户和组,配置环境变量
mkgroup -'A' id='1000' adms='root' oinstall
mkgroup -'A' id='1020' adms='root' asmadmin
mkgroup -'A' id='1021' adms='root' asmdba
mkgroup -'A' id='1022' adms='root' asmoper
mkgroup -'A' id='1031' adms='root' dba
mkgroup -'A' id='1032' adms='root' oper
mkuser id='1001' pgrp='oinstall' groups='dba,asmdba,asmadmin,oper'
home='/home/oracle' oracle
mkuser id='1002' pgrp='oinstall'
groups='asmadmin,asmdba,asmoper,oper,dba' home='/home/grid' grid
passwd grid
passwd oracle
分别用grid和oracle用户登陆一次,修改密码。
给grid、oracle用户授权
检查权限
# /usr/bin/lsuser -a capabilities grid
/usr/bin/lsuser -a capabilities oracle
授权命令如下:
/usr/bin/chuser
capabilities=CAP_NUMA_ATTACH,CAP_BYPASS_RAC_VMM,CAP_PROPAGATE grid
/usr/bin/chuser capabilities=CAP_NUMA_ATTACH,CAP_BYPASS_RAC_VMM,CAP_PROPAGATE
oracle
6、Grid用户环境变量设置如下:
节点1
umask 022
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_BASE=/oracle/app/grid; export ORACLE_BASE
ORACLE_HOME=/oracle/app/11.2.0/grid; export
ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH; export PATH
节点2
umask 022
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_SID=+ASM2; export ORACLE_SID
ORACLE_BASE=/oracle/app/grid; export ORACLE_BASE
ORACLE_HOME=/oracle/grid; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH; export PATH
7、Oracle用户环境变量设置如下:
节点1
umask 022
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/11.2.0/db; export
ORACLE_HOME
ORACLE_SID= oradb1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
节点2
umask 022
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/11.2.0/db; export
ORACLE_HOME
ORACLE_SID= oradb2; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
8、设置shell限制
vi /etc/security/limits.conf
文件中加入
default:
fsize = -1
core = 2097151
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1
stack_hard = -1
grid :
core = -1
oracle :
core = -1
注意:针对grid用户和oracle用户,需要分别设置它们在SHELL中对资源的使用情况,如对CPU、内存、数据段等。为了保证数据库能够运行,需要这些资源的限制取消,也就是-1,或者设置为Oracle推荐的值。
9、检查Core File Creation是否启用
用如下命令检查是否enable
lsattr -El sys0 -a fullcore
fullcore false Enable full CORE dump True
1. Set the ulimit setting for core dumps to unlimited:
# ulimit -c unlimited
2. Set the ulimit setting for core files to unlimited:
# ulimit -f unlimited
10、创建相应目录
# mkdir -p /oracle/app/oracle/11.2.0/db
# mkdir -p /oracle/app/grid/
# mkdir -p /oracle/grid
# mkdir -p /oracle/app/oraInventory
# chown -R oracle:oinstall /oracle/app/oracle
# chown -R grid:oinstall /oracle/grid
# chown -R grid:oinstall /oracle/app/grid
# chown -R grid:oinstall /oracle/app/oraInventory
# chmod -R 775 /oracle/
11、删除ntp服务,使用oracle时间同步器
# stopsrc -s xntpd
# mv /etc/ntp.conf /etc/ntp.conf.org
注意:RAC集群在运行的过程中要求各节点的时钟进行同步。常用的同步方法有两种,一种是利用操作系统提供的NTP服务;另一种是用Oracle提供的集群时间同步软件。此次项目采用第二种方式。为了避免冲突,将/etc/ntp.conf文件改名,使其失效。
12、网络参数调整
检查参数
/usr/sbin/no -a | fgrep
ephemeral
tcp_ephemeral_low = 32768
tcp_ephemeral_high = 65535
udp_ephemeral_low = 32768
udp_ephemeral_high = 65535
修改参数如下
/usr/sbin/no -p -o tcp_ephemeral_low=9000 -o
tcp_ephemeral_high=65500
/usr/sbin/no -p -o udp_ephemeral_low=9000 -o
udp_ephemeral_high=65500
13、其他参数调整
检查系统知否运行在compatibility mode
lsattr -E -l sys0 -a pre520tune
如果返回 pre520tune enable Pre-520 tuning compatibility mode True
则系统运行在compatibility mode
修改参数方法如下:
# no -o parameter_name=value
在/etc/rc.net文件中添加
if [ -f /usr/sbin/no ] ; then
/usr/sbin/no -o udp_sendspace=65536
/usr/sbin/no -o udp_recvspace=655360
/usr/sbin/no -o tcp_sendspace=65536
/usr/sbin/no -o tcp_recvspace=65536
/usr/sbin/no -o rfc1323=1
/usr/sbin/no -o sb_max=4194304
/usr/sbin/no -o ipqmaxlen=512
fi
如果上述命令的执行结果为:
pre520tune disable Pre-520 tuning compatibility mode True,系统未运行在compatibility mode
修改参数方法如下:
/usr/sbin/no -r -o ipqmaxlen=512
/usr/sbin/no -p -o rfc1323=1
/usr/sbin/no -p -o sb_max=4194304
/usr/sbin/no -p -o tcp_recvspace=65536
/usr/sbin/no -p -o tcp_sendspace=65536
/usr/sbin/no -p -o udp_recvspace=655360
/usr/sbin/no -p -o udp_sendspace=65536
三、配置节点间互信关系
1、修改/etc/hosts加入下面内容:
vi /etc/hosts
127.0.0.1
loopback localhost # loopback
(lo0) name/address
10.157.140.1 cjscora01
10.157.140.3 cjscora01-vip
192.168.150.1 cjscora01-priv
10.157.140.2 cjscora02
10.157.140.4 cjscora02-vip
192.168.150.2 cjscora02-priv
10.157.140.5 cjscora-scan
2、配置用户等效性
这部分操作是传统的做法,在oracle11g R2版本后我们可以省去这部分手工操作,在图形化安装集群软件的过程中配置,只需点点鼠标就可完成所有的工作。
配置grid用户等效性
在节点一执行下命令:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ /usr/bin/ssh-keygen -t rsa
$ /usr/bin/ssh-keygen -t dsa
$ touch ~/.ssh/authorized_keys
$ ssh cjscora01 cat /home/grid/.ssh/id_rsa.pub >>
authorized_keys
$ ssh cjscora01 cat /home/grid/.ssh/id_dsa.pub >>
authorized_keys
$ ssh cjscora02 cat /home/grid/.ssh/id_rsa.pub >>
authorized_keys
$ ssh cjscora02 cat /home/grid/.ssh/id_dsa.pub >>
authorized_keys
$chmod 600 ~/.ssh/authorized_keys
$ exec /usr/bin/ssh-agent $SHELL
$ /usr/bin/ssh-add
$ scp authorized_keys cjscora02:/home/grid/.ssh --将grid密钥拷贝到节点二
$ ssh cjscora01 date
$ ssh cjscora02 date
$ ssh cjscora01-priv date
$ ssh cjscora02-priv date
配置oracle用户等效性
在节点一执行下面命令创建oracle密钥:
$
mkdir ~/.ssh
$
chmod 700 ~/.ssh
$
/usr/bin/ssh-keygen -t rsa
$
/usr/bin/ssh-keygen -t dsa
$
touch ~/.ssh/authorized_keys
$
ssh cjscora01 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
$
ssh cjscora01 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
$
ssh cjscora02 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
$
ssh cjscora02 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
$chmod
600 ~/.ssh/authorized_keys
$
exec /usr/bin/ssh-agent $SHELL
$
/usr/bin/ssh-add
$
scp authorized_keys cjscora02:/home/oracle/.ssh --将oracle密钥拷贝到节点二
$
ssh cjscora01 date
$
ssh cjscora02 date
$ ssh cjscora01-priv date
$ ssh cjscora02-priv date
四、配置ASM磁盘
--须通过下面的步骤确认磁盘可用且一致,两节点都执行
1、检查磁盘数量
/usr/sbin/lspv
| grep -i none
hdisk4 none None
hdisk5 none None
hdisk6 none None
hdisk7 none None
……
hdisk315 none None
2、给磁盘分配pv id
外部存储设备中的同一块硬盘在不同节点上的名称可能会不同。同一个硬盘在节点一中的名称可能是hdisk4,在节点二中的名称可能是hdisk5.虽然ASM实例能正确识别这样的硬盘,但对于管理员来说可能会产生歧义。不管怎样,这块硬盘有一个不变的属性是PVID,无论在节点一还是节点二下都是一样的。通过下面的命令可以产生硬盘的PVID
chdev
-l hdisk4 -a pv=yes
chdev
-l hdisk5 -a pv=yes
chdev
-l hdisk6 -a pv=yes
chdev
-l hdisk7 -a pv=yes
……
chdev
-l hdisk100 -a pv=yes
3、检查pv id是否在两个节点间一一对应
cjscora01#lspv
hdisk4 00f76fa9f361157b None
hdisk5 00f76fa9f36116a5 None
hdisk6 00f76fa9f36117d0 None
hdisk7 00f76fa9f3611901 None
……
hdisk315 00f76fb4f3612dce None
cjscora02# lspv
hdisk4 00f76fa9f361157b None
hdisk5 00f76fa9f36116a5 None
hdisk6 00f76fa9f36117d0 None
hdisk7 00f76fa9f3611901 None
……
Hdisk315 00f76fb4f3612dce None
4、修改磁盘权限
本项目使用ASM,需要指定ASM磁盘中所要包含的磁盘,并保证grid用户有对这些磁盘的写权限
#
chown grid:asmadmin /dev/rhdiskn --修改磁盘属组命令示例
chown
grid:asmadmin /dev/rhdisk4
chown
grid:asmadmin /dev/rhdisk5
chown
grid:asmadmin /dev/rhdisk6
chown
grid:asmadmin /dev/rhdisk7
……
chown
grid:asmadmin /dev/rhdisk315
#
chmod 660 /dev/rhdiskn
--修改磁盘权限命令示例
chmod
660 /dev/rhdisk4
chmod
660 /dev/rhdisk5
chmod
660 /dev/rhdisk6
chmod
660 /dev/rhdisk7
……
chmod
660 /dev/rhdisk315
5、检查磁盘属性
有些型号的存储设别具有reserve_lock或者reserve_policy属性,这两个属性的存在会阻止多个节点对存储设备进行并行读写,所以在安装集群软件之前应该对其属性进行修改。
lsattr
-E -l hdisk4 |grep reserve_
lsattr
-E -l hdisk5 |grep reserve_
lsattr
-E -l hdisk6 |grep reserve_
lsattr
-E -l hdisk7 |grep reserve_
……
lsattr
-E -l hdisk315 |grep reserve_
6、设置磁盘属性为reserve_lock=no或reserve_policy=no_reserve
chdev
-l hdiskn -a [ reserve_lock=no | reserve_policy=no_reserve ]
chdev
-l hdisk4 –a reserve_policy=no_reserve
chdev
-l hdisk5 –a reserve_policy=no_reserve
chdev
-l hdisk6 –a reserve_policy=no_reserve
chdev
-l hdisk7 –a reserve_policy=no_reserve
……
chdev
-l hdisk100–a reserve_policy=no_reserve
7、清除磁盘pvid
通过PVID可以在不同节点中对比、确认同一块硬盘,但是在安装集群软件之前应该在每个节点上将PVID清除掉,否则在安装过程中可能会出现错误。
chdev
-l hdisk4 -a pv=clear