一、准备工作

1. 服务器信息

机器名   public-ip       private-ip     virtual-ip
testdb01    10.238.218.246    192.168.3.10    10.238.218.51
testdb02    10.238.218.236    192.168.3.11    10.238.218.25
机器名 public-ip private-ip virtual-ip
testdb01 10.238.218.246 192.168.3.10 10.238.218.51
testdb02 10.238.218.236 192.168.3.11 10.238.218.25

2. 系统磁盘规划

位置 用处 说明
asm-ocr ocr盘 大小至少为2G
asm-arch1 归档数据盘 用于存放归档日志等
asm-data1 数据文件盘 用于存放数据文件

3. 网络检查

检查网卡的编号是否一致、配置好的public-ip和private-ip是否能够ping通 /etc/hosts 参考配置如下:

127.0.0.1 localhost.localdomain localhost
#Public
10.238.218.246 testdb01
10.238.218.236 testdb02

#Private
192.168.3.10 testdb01-priv
192.168.3.11 testdb02-priv

#Virtual
10.238.218.51 testdb01-vip
10.238.218.25 testdb02-vip

#SCAN
10.238.218.29 rac-cluster-scan

4. 创建用户和组

在两台节点分别操作:

groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 asmadmin
groupadd -g 504 asmoper
groupadd -g 505 asmdba

useradd -u 501 -g oinstall -G dba,asmdba oracle
useradd -u 502 -g oinstall -G asmadmin,asmdba,asmoper,dba grid

执行检查: id oracle (检查所有节点的用户ID,对应的组ID是否都相同) id grid (检查所有节点的用户ID,对应的组ID是否都相同) id nobody (如果用户不存在需要新建nobody用户:usr/sbin/useradd nobody)

5. 创建ssh免密码

两种方法:第一种是使用工具ssh-copy-id,第二种是最原始的配置方法

5.1 使用工具ssh-copy-id

首先保证安装了
首先保证安装了包:openssh openssh-client

使用方法:
1.用 grid用户 和 oracle用户 生成ssh公钥和ssh私钥:
ssh-keygen -t rsa

2.传输
su - grid
ssh-copy-id -i ~/.ssh/id_rsa.pub grid@testdb01
ssh-copy-id -i ~/.ssh/id_rsa.pub grid@testdb02

su - oracle
ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@testdb01
ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@testdb02

注意:ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中

5.2 原始方法

1.每台服务器以grid/Oracle身份执行:
mkdir ~/.ssh
chmod 700 ~/.ssh
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa

2.testdb01节点以Oracle身份执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys testdb02:~/.ssh/authorized_keys

3.testdb02节点以Oracle身份执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys testdb01:~/.ssh/authorized_keys

5.3 做完之后必须验证

ssh testdb01 date
ssh testdb02 date
ssh testdb01-priv date
ssh testdb02-priv date

6. 创建目录

mkdir -p /u01/app/grid
chown -R grid:oinstall /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
chown -R grid:oinstall /u01/app/11.2.0/grid
mkdir -p /u01/app/oracle
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/

7. 配置环境变量

7.1 grid环境变量设置

ORACLE_SID=+ASM1; export ORACLE_SID
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME
ORACLE_PATH=/u01/app/oracle/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="YYYY-MON-DD HH24:MI:SS"; export NLS_DATE_FORMAT

PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/u01/app/common/oracle/bin
export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH

THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
umask 022

7.2 oracle用户换机变量

ORACLE_SID=rac1; export ORACLE_SID
ORACLE_HOSTNAME=testdb01; export ORACLE_HOSTNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="YYYY-MON-DD HH24:MI:SS"; export NLS_DATE_FORMAT

PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/u01/app/common/oracle/bin
export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH

THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
umask 022

8. 安装需要的系统包安装

配置本地源,然后用yum命令来安装

yum -y install compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-33 glibc-* glibc-*.i686 libXpm-*.i686 libXp.so.6 libXt.so.6 libXtst.so.6 libgcc_s.so.1  libXp libaio-devel numactl numactl-devel unixODBC unixODBC-devel binutils compat-db control-center gcc gcc-c++ glibc glibc-common glibc-devel compat-libf2c compat-libgcc libstdc++ libstdc++-devel make sysstat libaio compat-libstdc++ compat-libstdc++-33 glibc-headers kernel-headers libXp openmotif22 libgomp libXmu elfutils-libelf libaio-devel unixODBC unixODBC-devel libgcc compat-libstdc++ elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel compat-libcap1

9. 配置内核参数

9.1 编辑/etc/sysctl.conf

kernel.shmall = 16777216 #单位是页
kernel.shmmax = 125829120 # 单位是byte
kernel.shmmni = 4096
kernel.sem = 1000 143420 100 142
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=1048576
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr=1048576

执行 sysctl -p立即生效

9.2 编辑/etc/security/limits.conf

grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 65536
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536

9.3 编辑/etc/pam.d/login

session    required     /lib64/security/pam_limits.so

10. 配置共享磁盘

提供两种方式的参考: 第一种是直接fdisk磁盘后,拿到/dev/xda1之类的盘,然后利用udev绑定raw 第二种是生产常用的获取固定的wwid来绑定udev设备

10.1 方法1:直接raw

在2个节点上做如下操作:

1.修改/etc/udev/rules.d/60-raw.rules 文件
添加如下内容:
ACTION=="add", KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb4",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add",KERNEL=="raw[1-3]", OWNER="grid", GROUP="oinstall", MODE="660"
ACTION=="add",KERNEL=="raw4", OWNER="oracle", GROUP="oinstall", MODE="660"

2.重启服务:
[root@rac1 ~]# start_udev
Starting udev: [ OK ]

3.查看raw设备:
[root@rac1 ~]# ls -lrt /dev/raw
total 0
crw-rw---- 1 oracle oinstall 162, 1 Sep 8 03:18 raw1
crw-rw---- 1 oracle oinstall 162, 3 Sep 8 03:18 raw2
crw-rw---- 1 oracle oinstall 162, 2 Sep 8 03:18 raw3
crw-rw---- 1 oracle oinstall 162, 2 Sep 8 03:18 raw4
crw-rw---- 1 oracle oinstall 162, 2 Sep 8 03:18 raw5
crw-rw---- 1 oracle oinstall 162, 2 Sep 8 03:18 raw6

10.2 方法2:用wwid来绑定设备

[root@vrh6 dev]# echo "options=--whitelisted --replace-whitespace"  >> /etc/scsi_id.config
[root@vrh6 dev]# for i in b c d e f ;
> do
> echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""      >> /etc/udev/rules.d/99-oracle-asmdevices.rules
> done
[root@vrh6 dev]#

[root@vrh6 dev]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB09cadb31-cfbea255", NAME="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB5f097069-59efb82f", NAME="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB4e1a81c0-20478bc4", NAME="asm-diskd", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VBdcce9285-b13c5a27", NAME="asm-diske", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB82effe1a-dbca7dff", NAME="asm-diskf", OWNER="grid", GROUP="asmadmin", MODE="0660"

[root@vrh6 dev]# /sbin/start_udev
Starting udev:                                             [  OK  ]

[root@vrh6 dev]# ls -l asm*
brw-rw----. 1 grid asmadmin 8, 16 Jun 30 09:34 asm-diskb
brw-rw----. 1 grid asmadmin 8, 32 Jun 30 09:34 asm-diskc
brw-rw----. 1 grid asmadmin 8, 48 Jun 30 09:34 asm-diskd
brw-rw----. 1 grid asmadmin 8, 64 Jun 30 09:34 asm-diske
brw-rw----. 1 grid asmadmin 8, 80 Jun 30 09:34 asm-diskf

10.3 一个实际的例子作为参考:

10.3.1 查看设备信息

# multipath –ll
mpathe (14f504e46494c4552356c626256732d466464302d6450647a) dm-8 OPNFILER,VIRTUAL-DISK
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 16:0:0:0 sdg 8:96 active ready running
mpathd (14f504e46494c45524e46337547362d48506c372d71596558) dm-7 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 14:0:0:0 sde 8:64 active ready running
mpathc (14f504e46494c455263456c7146562d47564e772d794b6757) dm-6 OPNFILER,VIRTUAL-DISK
size=100G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 11:0:0:0 sdb 8:16 active ready running
mpathb (14f504e46494c4552626b705754662d41456c642d5970694d) dm-5 OPNFILER,VIRTUAL-DISK
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 13:0:0:0 sdd 8:48 active ready running
mpathg (14f504e46494c455246584a5474542d436c486a2d47463230) dm-13 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 15:0:0:0 sdf 8:80 active ready running
mpathf (14f504e46494c45524731506e45522d374f58672d4c644354) dm-9 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 12:0:0:0 sdc 8:32 active ready running

10.3.2 获取设备号

# /sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/dm-1

10.3.3 配置设备名

采用下面的命令,添加到想要的udev的文件中,具体文件名见下面:

KERNEL=="dm-*", PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="$uid",NAME:="asm-ocr" OWNER:="grid", GROUP:="asmadmin" ,MODE="0660"

10.3.4 参考一个配置好的文件

# cat /etc/udev/rules.d/99-oracle-asmdisk.rules

KERNEL=="dm-*", PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="$UID",NAME:="asm-ocr" OWNER:="grid", GROUP:="asmadmin" ,MODE="0660"
KERNEL=="dm-*", PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="$UID",NAME:="asm-arch1" OWNER:="grid", GROUP:="asmadmin" ,MODE="0660"
KERNEL=="dm-*", PROGRAM="scsi_id --page=0x83 --whitelisted--device=/dev/%k",RESULT=="$UID",NAME:="asm-data1" OWNER:="grid", GROUP:="asmadmin" ,MODE="0660"

11. cvu验证

用grid用户执行:
$ ./runcluvfy.sh stage -pre crsinst -n testdb01,testdb02 -fixup -verbose

二、RAC安装

1. GI的安装

2. Oracle的安装

三、打补丁

下载最新的PSU补丁11.2.0.4.8,GI补丁p21523375_112040_Linux-x86-64.zip 和数据库补丁p21352635_112040_Linux-x86-64.zip, opatch为p6880880_112000_Linux-x86-64.zip

打补丁步骤:

  1. 升级opatch
  2. 升级GI
  3. 升级数据库

1. 升级opatch:

mv OPatch OPatch.bak
unzip p6880880_112000_Linux-x86-64.zip -d /u01/app/11.2.0/grid
chown -R grid:oinstall OPatch

2. GI打补丁:

2.1 检查opatch的版本

$ /u01/app/11.2.0/grid/OPatch/opatch version

2.2 检查 Inventory有效性:

$ /u01/app/11.2.0/grid/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

2.3 生成ocm.rsp文件

用root用户在/u01/app/11.2.0/grid/OPatch/ocm/bin/下,用emocmrsp生成ocm.rsp文件(该文件会生成在当前目录) 将生成的ocm.rsp放到/u01/app/11.2.0/grid/OPatch/ocm/bin/目录下

2.4 解压patch文件,给成grid的权限

2.5 用root用户执行如下

# /u01/app/11.2.0/grid/OPatch/opatch auto /softdb/psu/21523375/ -oh /u01/app/11.2.0/grid -ocmrf /u01/app/11.2.0/grid/OPatch/ocm/bin/ocm.rsp

2.6 在第二个节点也执行【三、四、五】步骤

2.7 检查GI的打补丁情况

$ /u01/app/11.2.0/grid/OPatch/opatch lsinventory

3. 数据库打补丁:

3.1 更新opatch的版本

[root@dbtest1 psu]# cd /u01/app/oracle/product/11.2.0/db_1/
[root@dbtest1 db_1]# mv OPatch OPatch.bak

[root@dbtest1 db_1]# cd /softdb/psu/
[root@dbtest1 psu]# unzip p6880880_112000_Linux-x86-64.zip -d /u01/app/oracle/product/11.2.0/db_1
[root@dbtest1 psu]# chown -R oracle:oinstall /u01/app/oracle/product/11.2.0/db_1/OPatch

/u01/app/oracle/product/11.2.0/db_1/OPatch/opatch version

3.2 检查 Inventory有效性:

$ /u01/app/oracle/product/11.2.0/db_1/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

3.3 apply补丁

1.unzip p20299013_112040_<platform>.zip
cd 20299013
opatch prereq CheckConflictAgainstOHWithDetail -ph ./

2.停数据库,停监听器,停em(emctl stop dbconsole)
用ps -ef | grep ora来检查是否还有遗留的进程,grid的不用管

3.unzip p20299013_112040_<platform>.zip
cd 20299013
opatch apply

以上操作只需在一个节点执行即可。会有提示,先local再remote。

4.
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT

5.
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql

3.4 检查打的补丁

/u01/app/oracle/product/11.2.0/db_1/OPatch/opatch lsinventory

四、创建实例

五、常用命令

参看:11gRAC常用命令

Copyright © suredandan 2018 all right reserved,powered by GitbookUpdateTime: 2020-04-09 15:36:00

results matching ""

    No results matching ""