准备工作:
硬件配置要求
1 . 确定操作系统平台,64bit or 32bit。
查看系统平台
# uname -m
2 . 安装GI至少 1.5gb内存;安装GI和RAC数据库至少2.5GB内存
查看物理内存大小:
# grep MemTotal /proc/meminfo
3 . 置换区跟内存之间的关系 如下:
查看swap大小:
# grep SwapTotal /proc/meminfo
or
# free
4 . 1GB /tmp临时空间
查看临时空间大小:
# df -k /tmp
如果发现/tmp空间小于1G,设置TEMP和TMPDIR环境变量来指定这个文件系统上的临时目录。
Bourne, Bash, or Korn shell:
$ TEMP=/mount_point/tmp
$ TMPDIR=/mount_point/tmp
$ export TEMP TMPDIR
C shell:
% setenv TEMP /mount_point/tmp
% setenv TMPDIR /mount_point/tmp
5 . 至少4.5GB磁盘空间,用于安装GI软件。
6 . x86 Linux系统,至少4G磁盘空间,用于安装rac数据库软件。
7 . x86_64 Linux系统,至少4.6GB磁盘空间,用于安装rac数据库软件。
网络配置要求
1 . 至少2张网卡,一个公网一个私网
2 . 公网和私网网口名字在各个节点必须一致
3 . 公网必须支持TCP/IP传输协议。
4 . 私网必须支持UDP传输协议和TCP/IP传输协议(至少1GB速率)。
修改主机名(node1,node2都需要配置)
[root@node1 ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1.localdomain
GATEWAY=10.37.2.1
IP配置
[root@slave2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
UUID=684a1a37-17ff-4450-965a-22f1c5ff7594
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=00:0C:29:BE:F6:A5
IPADDR=192.168.52.170
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"
IP规划(node1,node2都需要配置)
如果使用/etc/hosts解析scan的话,需要在/etc/hosts中指定scan名和对应的VIP地址(scan vip与scan名一对一)。
如果使用DNS解析scan的话(最多可以指定3个scan vip对应同一个scan 名字),需要在集群每个节点的/etc/resolv.conf中配置对应的DNS解析服务器。
oracle也支持GNS(Grid Naming Service)解析,但是必须在同一个网段才能解析,不建议采用这个方式。
使用GNS(Grid Naming Service)解析方式:
使用DNS解析方式(推荐方式):
这里演示使用本地hosts解析方式:
[root@slave2 ~]# vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#node1
10.37.2.170 node1.localdomain node1
192.168.52.170 node1-pri.localdomain node1-pri
10.37.2.174 node1-vip.localdomain node1-vip
#node2
10.37.2.171 node2.localdomain node2
192.168.52.171 node2-pri.localdomain node2-pri
10.37.2.173 node2-vip.localdomain node2-vip
#sacn-ip
10.37.2.175 rac-scan.localdomain rac-scan
配置内核参数(node1,node2都需要配置)
[root@node1 ~]# echo '
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
'>> /etc/sysctl.conf
用户资源配置
1 . 为了提升性能,需要在grid,oracle用户环境变量设置资源限制
[root@node1 ~]# echo '
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
' >> /etc/security/limits.conf
创建用户(node1,node2都需要配置)
# /usr/sbin/groupadd -g 1000 oinstall
# /usr/sbin/groupadd -g 1100 asmadmin
# /usr/sbin/groupadd -g 1200 dba
# /usr/sbin/groupadd -g 1201 oper
# /usr/sbin/groupadd -g 1300 asmdba
# /usr/sbin/groupadd -g 1301 asmoper
useradd -u 5001 -g oinstall -G dba,asmdba,oper -d /home/oracle oracle
useradd -u 5002 -g oinstall -G dba,asmdba,asmadmin,asmoper,asmdba -d /home/grid grid
[root@node1 ~]# passwd grid
[root@node1 ~]# passwd oracle
看到这里是不是有懵,需要设置这么多组,关于用户组的具备分工和权限这里简单说明一下:
oinstall : 这个组是GI何数据库软件用者组。
数据库组:
1 .OSDBA用户组(一般是dba)
安装oracle数据库软件必须要创建这个用户组,这个用户组定义操作系统用户拥有数据库管理员权限(sysdba权限)。在asm实例,如果没有创建osdba,osoper和osasm组,那么osdba组成员必须有sysoper和sysasm权限,这个组在Oracle代码示例中被称为dba。如果您不指定一个单独的组作为OSASM组,那么您定义的OSDBA组也默认为OSASM组。
要指定除了默认的dba组之外的组名称,则必须选择高级安装类型来安装软件。
OSDBA组的成员以前被授予了Oracle ASM实例的SYSASM特权,可以安装和卸载磁盘组。如果不同的操作系统组被指定为OSDBA和OSASM组,则在11gr2被移除。如果同一个组用于OSDBA和OSASM,则保留。
2 . Oracle 数据库OSOPER组(一般都是oper)
这是个可选组。如果您想要一个独立的操作系统用户组拥有部分数据库管理权限,则可以使用osoper。osdba用户默认具有osoper所有的权限。
要使用OSOPER组创建一个比默认dba组更少的权限的数据库管理员组,那么您必须选择高级安装类型来安装软件。
ASM组:
SYSASM是一种新的系统特权,可以将Oracle ASM存储管理特权从SYSDBA分离出来。在ASM 11gr2(11.2),数据库OSDBA组成员没有授予SYSASM权限。
3 . ASM组(一般是asmadmin)
这是一个必需的组。创建一个单独的组作为管理Oracle ASM和Oracle数据库。如oracle文档所述,操作系统组成员被授于一个称为OSASM组的权限,在oracle代码实例则称为asmadmin。
OSASM组成员可以通过操作系统认证以SYSASM角色使用sql命令去连接asm实例。sysasm角色可以管理磁盘组,但是不能访问RDMS。
4 . ASM 数据库管理组(ASM的OSDBA权限,一般是asmdba)
ASM数据库管理组成员可以从oracle asm读写文件。安装GI和数据库软件必须在这个组里面,另外所有需要访问ASM的OSDBA成员也需要在这个组里面。可以启动/关闭实例,挂载/卸载 ASM磁盘组。
5 . ASM操作组(ASM的OSOPER权限,一般是asmoper)
这是个可选组。oracle asm部分管理权限,如:启动关闭asm实例。OSASM组成员默认具有asmoper的所有权限。
asmoper组成员权限比asmadmin权限小,这个组只有在高级安装才有。
如果您想有OSOPER,那么GI必须是这个组的成员。
设置用户环境变量(node1,node2都需要配置)
shell配置
确定当前shell环境
$ echo $SHELL
Bash shell (bash):
$ vi .bash_profile
Bourne shell (sh) or Korn shell (ksh):
$ vi .profile
C shell (csh or tcsh):
% vi .login
2 . 每个节点执行:
echo 'session required pam_limits.so ' >>/etc/pam.d/login
3 . 配置shell变量 ,包括oracel,grid用户
For the Bourne, Bash, or Korn shell, add lines similar to the following to the /etc/profile file (or the file on SUSE systems)/etc/profile.local
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
For the C shell (csh or tcsh), on Red Hat, OEL, or Asianux, add the following lines to the /etc/csh.login file. On SUSE systems add the lines to /etc/csh.login.local:
if ( $USER == "oracle" || $USER == "grid" ) then
limit maxproc 16384
limit descriptors 65536
endif
4 .
oracle用户
[root@node1 ~]# vi /home/oracle/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export PS1="[\u@\H\$]"
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=node1.localdomain
export ORACLE_SID=jhdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_UNQNAME=devdb
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
grid用户
[root@node1 ~]# vi /home/grid/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export PS1="[\u@\H\$]"
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_TERM=xterm
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
umask 022
启用用户默认shell环境变量:
Bash shell:
$ . ./.bash_profile
Bourne, Bash, or Korn shell:
$ . ./.profile
C shell:
% source ./.login
提示
PS1有那些配置,或者说PS1里头都能配置些命令提示符的什么东西:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
设置目录权限(node1,node2都需要配置)
mkdir -p /u01/app/11.2.0/grid
chown -R grid:oinstall /u01
mkdir /u01/app/oracle
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
配置ssh对等性(node1,node2都需要配置)
[oracle@node2$]ssh-keygen -t rsa
[oracle@node2$]ssh-keygen -t dsa
[oracle@node2$]cat ~/.ssh/*.pub >>~/.ssh/aythorized_keys
[oracle@node2$]su - grid
[grid@node2$]ssh-keygen -t rsa
[grid@node2$]ssh-keygen -t dsa
[grid@node2$]cat ~/.ssh/*.pub >>~/.ssh/authorized_keys
[grid@node2$]scp ~/.ssh/authorized_keys node1:/home/grid/.ssh/keys
[oracle@node1$]ssh-keygen -t rsa
[oracle@node1$]ssh-keygen -t dsa
[oracle@node1$]cat ~/.ssh/*.pub >>~/.ssh/aythorized_keys
[oracle@node1$]su - grid
[grid@node1$]ssh-keygen -t rsa
[grid@node1$]ssh-keygen -t dsa
[grid@node1$]cat ~/.ssh/*.pub >>~/.ssh/authorized_keys
[grid@node1$]cat ~/.ssh/keys >>~/.ssh/authorized_keys
[grid@node1$]scp ~/.ssh/authorized_keys node2:/home/grid/.ssh/authorized_keys
[oracle@node1$]ssh node1.localdomain date
[oracle@node1$]ssh node1 date
[oracle@node1$]ssh node1-pri date
[oracle@node1$]ssh node1-pri.localdomain date
[oracle@node1$]ssh node2.localdomain date
[oracle@node1$]ssh node2 date
[oracle@node1$]ssh node2-pri date
[oracle@node1$]ssh node2-pri.localdomain date
##如果没有scp这个命令,就要‘ yum -y install openssh-clients.x86_64’
在做了ssh对等性之后,修改oracle,grid用户系统密码和修改/etc/hosts ip地址,对等性仍然有效。
DNS配置(可选性配置):
对于使用/etc/hosts做IP解析就不需要配置dns/gns。
如果配置有多个scan-ip 最好还是配置上dns,多个sacn-ip绑定同一个域名,用户通过scan-ip域名来连接数据库。
1.软件包:
bind-9.3.6-4.Pl.el5_4.2.x86_64.rpm
bind-chroot-9.3.6-4.Pl.el5_4.2.x86_64.rpm
caching-nameserver-9.3.6-4.Pl.el5_4.2.x86_64.rpm
2.配置/var/named/chroot/etc/named.conf文件
由拷贝而来
cp -p named.caching-nameserver.conf named.conf
把 127.0.0.1 改成 “ any; ”允许所有的ip去访问
3.配置ZONE文件
修改/var/named/chroot/etc/named.rfrc1912.zons文件
主要目的是为了能正确解析SCAN-IP,
正向zone文件
zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};
# scan
192.168.56.140 rac.scan.localdomain rac-scan
反向zone文件
zone "56.168.192.in-addr.arpa" IN{
type master;
file "56.168.192.in-addr.arpa";
allow-update { none; };
};
配置正反向解析数据库文件:
/var/named/chroot/var/named
正向解析数据库文件 localdomain.zone
rac-scan IN A 192.168.56.140
反向解析数据库文件 cp -p named.local 56.168.192.in-addr.arpa
140 IN PTR rac-scan.localdomain.
启动DNS服务器 /etc/init.d/named start
校验
rac1:
配置 /etc/resolv.conf
search localdomain
nameserver 192.168.56.120
rac2:
配置 /etc/resolv.conf
search localdomain
nameserver 192.168.56.120
验证 nslookup rac-scan、nslookup rac-scan.localdomain nslookup 10.37.4.173
centos 6 DNS配置:
1:yum -y install bind-chroot.x86_64 bind.x86_64
2: vi /etc/named.conf
把 127.0.0.1 、localhost 改成 any
反向解析
zone "4.37.10.in-addr.arpa" IN {
type master;
file "4.37.10.in-addr.arpa.zone";
allow-update { none; };
};
正向解析
zone "localdomain" IN {
type master;