1.安装前准备:
- 操作系统:RHEL6.5
- 存储:华为,已配置多路径
- 业务网卡,心跳网卡绑定,并通过冗余测试
- YUM源配置
- BASH/SSL漏洞补丁
2.检查系统要求
A.LINUX版本
cat /etc/issue
B.内存(至少1G)
grep MemTotal /proc/meminfo
C.SWAP分区
当内存为2.5GB-16GB时,Swap等于系统内存大小。
当内存大于16GB时,Swap等于16GB即可。
D.TMP空间
df -h /tmp
lvcreate -L 2G -n lv_tmp vg_temp
mount /dev/vg_temp/lv_tmp /tmp
df -h /tmp
E.检查补丁包
# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat
binutils-2.20.51.0.2-5.36.el6.x86_64
compat-libcap1-1.10-1.x86_64
compat-libstdc++-33-3.2.3-69.el6.x86_64
gcc-4.4.7-4.el6.x86_64
gcc-c++-4.4.7-4.el6.x86_64
glibc-2.12-1.132.el6.x86_64
glibc-2.12-1.132.el6.i686
glibc-devel-2.12-1.132.el6.x86_64
ksh-20120801-10.el6.x86_64
libgcc-4.4.7-4.el6.x86_64
libgcc-4.4.7-4.el6.i686
libstdc++-4.4.7-4.el6.x86_64
libstdc++-devel-4.4.7-4.el6.x86_64
libaio-0.3.107-10.el6.x86_64
libaio-devel-0.3.107-10.el6.x86_64
make-3.81-20.el6.x86_64
sysstat-9.0.4-22.el6.x86_64
F.禁用防火墙
service iptables status
service iptables stop
chkconfig iptables off
G. 关闭SELinux
#vi /etc/selinux/config
将文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0
注:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
getenforce/setenforce查看和设置SELinux的当前工作模式
H.核心参数调整
vim /etc/sysctl.conf
# Oracle install config
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 270853791744 --设置为物理内存大小(B)
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 = 1048576
2.设置/etc/hosts:
要求:
私有IP地址必需与公网分离,两个节点可互相访问可以ping通,必须在 /etc/hosts里有;
虚拟IP地址同公网IP地址是一个网段的,如果有DNS就注册在DNS中,如果没有DNS就写在/etc/hosts文件里;
公网IP地址,是主机真正的IP地址,主机管理员预先分配,如果有DNS就注册在DNS中,如果没有DNS就写在/etc/hosts文件里),并且保证写入每个客户系统中的hosts文件。
在各个节点的网卡配置必须相同,例如:第一个节点公共IP是用bind0,那么其他节点也得用bind0
3.建立oracle、grid用户和dba组:
创建组
/usr/sbin/groupadd -g 1000 oinstall
/usr/sbin/groupadd -g 1020 asmadmin
/usr/sbin/groupadd -g 1021 asmdba
/usr/sbin/groupadd -g 1022 asmoper
/usr/sbin/groupadd -g 1031 dba
/usr/sbin/groupadd -g 1032 oper
创建用户
/usr/sbin/useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba -u 1100 grid
/usr/sbin/useradd -g oinstall -G dba,asmdba,oper -u 1101 oracle
4.设置系统限制:
--在每个节点上执行相同操作
im /etc/security/limits.conf
SETTING for ORACLE
racle soft nproc 2047
racle hard nproc 16384
racle soft nofile 4096
racle hard nofile 65536
racle soft stack 10240
racle hard stack 32768
rid soft nproc 2047
grid hard nproc 16384
grid soft nofile 4096
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
5.建立GRID及RAC安装目录:
--分别在2个节点建立以下目录
mkdir -p /oracle/app/11.2.0/grid
mkdir -p /oracle/app/grid
mkdir -p /oracle/app/oracle
chown -R grid:oinstall /oracle
chown grid:oinstall /oracle/app/11.2.0/grid
chown grid:oinstall /oracle/app/grid
chown oracle:oinstall /oracle/app/oracle
chmod -R 775 /oracle/
6.设置NTP服务:
分别在2个节点设置NTP服务
vim /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 202.106.5.193 prefer
server 172.16.66.92
restrict 202.106.5.193
restrict 172.16.66.92
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
vim /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
修改完这两个文件,就可以启动服务了。
rpm -q ntp
ntp-4.2.6p5-1.el6.x86_64
service ntpd start
可以通过下面两条命令查看ntp服务的状态是否正常:
ntpq -p
ntpstat
7.设置用户的环境变量:
grid用户:
# vim ~/.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 ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/app/11.2.0/grid
export ORACLE_SID=+ASM2
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
export TMOUT=0
oracle用户:
#vim ~/.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 ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=test
export LANG=en_US.UTF-8
export NLS_LANG=american_america.ZHS16GBK
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin:/home/oracle/run
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export GI_HOME=/oracle/app/11.2.0/grid
export PATH=${PATH}:$GI_HOME/bin
export ORA_NLS10=$GI_HOME/nls/data
umask 022
export TMOUT=0
8.配置UDEV:
以下操作需要2个节点都执行:
# cd /etc/udev/rules.d
# vim 99-oracle-asmdevices.rules
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="364862761000560eb82f364f700000014", NAME="asmdisk001", OWNER="grid", GROUP="asmadmin", MODE="0660"
其中RESULT的值为磁盘的UUID
获取磁盘UUID的命令如下:
# scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
建议使用脚本将所有磁盘的UUID输出到x.log,然后使用列编辑搞定所有asm磁盘
./test.sh > x.log
执行并核对完99-oracle-asmdevices.rules后,便可以执行命令启动udev了:
# ./sbin/start_udev
# ls -al /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Aug 7 14:57 /dev/asmdisk001
9.安装cvudisk包
# cd $INSTALL_MEDIA/grid/rpm/
## CVUQDISK_GRP=oinstall;export CVUQDISK_GRP --可以在此处自定义安装用户组
# rpm -ivh cvuqdisk-1.0.9-1.rpm
Preparing... ########################################### [100%]
Using default group oinstall to install package
1:cvuqdisk ########################################### [100%]
10.配置SSH互信
# cp $INSTALL_MEDIA/grid/sshsetup/sshUserSetup.sh /home/grid
# cd /home/grid
# chown grid:oinstall sshUserSetup.sh
# su - grid
$ ./sshUserSetup.sh -user grid -hosts "test1 test1-priv test2 test2-priv" -advanced -noPromptPassphrase
$ date;ssh test2 date; ssh test1-priv date; ssh test2-priv date
# cp $INSTALL_MEDIA/grid/sshsetup/sshUserSetup.sh /home/oracle
# cd /home/oracle
# chown oracle:oinstall sshUserSetup.sh
# su - oracle
$ ./sshUserSetup.sh -user oracle -hosts "test1 test1-priv test2 test2-priv" -advanced -noPromptPassphrase
$ ./date;ssh test date; ssh test1-priv date; ssh test2-priv date
11.运行GI的安装前检查
# su - grid
$ cd $INSTALL_MEDIA/grid/
$ ./runcluvfy.sh stage -pre crsinst -n test1,test2 -fixup -verbose
12.安装GI软件
# su - grid
$ cd $INSTALL_MEDIA/grid
$ ./runInstaller
后面的就略了,不想贴图...累...
13.安装Database软件
# su - oracle
$ cd $INSTALL_MEDIA/database/
$ ./runcluvfy.sh stage -pre dbcfg -n test1,test2
后面同略,点点点的操作请自己琢磨着选。
PS:官方建议GI和Database都把中文语言包装上去,以后可能会用到。
14.Opatch补丁更新
首先需要替换更新/u01/app/11.2.0/grid/和$ORACLE_HOME下的OPatch文件,记得停crs。
然后执行以下程序:
root用户执行:
# /oracle/app/11.2.0/grid/crs/install/rootcrs.pl -unlock
grid用户执行:
$ /oracle/app/11.2.0/grid/OPatch/opatch napply -oh /oracle/app/11.2.0/grid -local /oracle/app/11.2.0/grid/OPatch/20996923/20831122
$ /oracle/app/11.2.0/grid/OPatch/opatch napply -oh /oracle/app/11.2.0/grid -local /oracle/app/11.2.0/grid/OPatch/20996923/20299019
$ /oracle/app/11.2.0/grid/OPatch/opatch apply -oh /oracle/app/11.2.0/grid -local /oracle/app/11.2.0/grid/OPatch/20996923/20760982
oracle用户执行:
$ /oracle/app/11.2.0/grid/OPatch/20996923/20831122/custom/server/20831122/custom/scripts/prepatch.sh -dbhome /oracle/app/oracle/product/11.2.0/dbhome_1
$ /oracle/app/oracle/product/11.2.0/dbhome_1/OPatch/opatch napply -oh /oracle/app/oracle/product/11.2.0/dbhome_1 -local /oracle/app/11.2.0/grid/OPatch/20996923/20831122/custom/server/20831122
$ /oracle/app/oracle/product/11.2.0/dbhome_1/OPatch/opatch apply -oh /oracle/app/oracle/product/11.2.0/dbhome_1 -local /oracle/app/11.2.0/grid/OPatch/20996923/20760982
$ /oracle/app/11.2.0/grid/OPatch/20996923/20831122/custom/server/20831122/custom/scripts/postpatch.sh -dbhome /oracle/app/oracle/product/11.2.0/dbhome_1
root用户执行:
# /oracle/app/11.2.0/grid/rdbms/install/rootadd_rdbms.sh
# /oracle/app/11.2.0/grid/crs/install/rootcrs.pl -patch
安装完成后运行一下命令检查版本是否更新:
$ opatch lsinventory
Oracle Interim Patch Installer version 11.2.0.3.11
Copyright (c) 2015, Oracle Corporation. All rights reserved.
15.ASM参数设置
alter diskgroup DATA set attribute 'disk_repair_time'='2400h';
alter diskgroup ARCH set attribute 'disk_repair_time'='2400h';
alter diskgroup OCRDG set attribute 'disk_repair_time'='2400h';
alter system set asm_diskgroups='DATA','ARCH' SCOPE=SPFILE sid='*';
alter system set memoey_max_target=4096M scope=spfile;
alter system set memoey_target=4096M scope=spfile;
16.创建数据库
此处也略了...大家懂得。
: