千家信息网

rhel7.4安装oracle 11G 11.2.0.4.0 RAC

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,一、操作系统red hat 7.4oracle数据库版本11.2.0.4oracle grid版本11.2.0.4对应的文件p13390677_112040_Linux-x86-64_1of7.zip
千家信息网最后更新 2024年11月27日rhel7.4安装oracle 11G 11.2.0.4.0 RAC

一、操作系统

red hat 7.4
oracle数据库版本
11.2.0.4
oracle grid版本
11.2.0.4
对应的文件
p13390677_112040_Linux-x86-64_1of7.zip - database software
p13390677_112040_Linux-x86-64_2of7.zip - database software
p13390677_112040_Linux-x86-64_3of7.zip - grid software

IP地址规划:
DNS server:192.168.1.168
db node1:192.168.1.212 public
192.168.1.213 VIP
10.0.1.2 private
db node2:192.168.1.214 public
192.168.1.215 VIP
10.0.1.3 private
scan: 192.168.1.216

二、基本配置

1、修改主机名称:
vi /etc/hostname配置文件

hostnamectl set-hostname <计算机名>
A: redhat-212
B: redhat-214

2、动态IP修改为静态IP
cd /etc/sysconfig/network-scripts/
BOOTPROTO="static" #dhcp改为static

3、修改两个rac节点网卡配置:
节点1:

cat /etc/sysconfig/network-scripts/ifcfg-ens192 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=noIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens192UUID=2a2b7809-26ac-4fc6-95d0-124c7348171aDEVICE=ens192ONBOOT=yesIPADDR=192.168.1.212PREFIX=24
cat /etc/sysconfig/network-scripts/ifcfg-ens224 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens224UUID=6da67cdc-933c-4bfe-a3b1-2896175be86bDEVICE=ens224ONBOOT=yesIPADDR=10.0.1.2PREFIX=24

节点2:

cat /etc/sysconfig/network-scripts/ifcfg-ens192 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens192UUID=aeead365-1e33-41c3-b0e9-b147c4a2e688DEVICE=ens192ONBOOT=yesIPADDR=10.0.1.3PREFIX=24
cat /etc/sysconfig/network-scripts/ifcfg-ens224TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=noIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens224UUID=e4fe8fed-6e97-43b4-aec6-80ce42588eadDEVICE=ens224ONBOOT=yesIPADDR=192.168.1.214PREFIX=24

#vim /etc/resolv.conf
nameserver 218.2.2.2

分别重启一下网卡:
systemctl restart network.service

禁用该可预测命名规则。对于这一点,你可以在启动时传递"net.ifnames=0 biosdevname=0 "的内核参数。这是通过编辑/etc/default/grub并加入"net.ifnames=0 biosdevname=0 "到GRUBCMDLINELINUX变量来实现的。

cat /etc/default/grubGRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"GRUB_DISABLE_RECOVERY="true"

3、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

4、关闭selinux
#vim /etc/selinux/config
修改文件
SELINUX=disabled
临时关闭
#setenforce 0

5、内部DNS解析两个rac节点:
NODE1:

vim /etc/hosts   127.0.0.1这一行修改一下名字racdb1,末尾添加如下:127.0.0.1   racdb1 localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.216  cluster clusterscan192.168.1.212  redhat-212192.168.1.214  redhat-214192.168.1.213  redhat-212-vip192.168.1.215  redhat-214-vip10.0.1.2       raca-priv10.0.1.3       racb-priv

NODE2:

vim /etc/hosts   127.0.0.1这一行修改一下名字racdb2,末尾添加如下127.0.0.1   racdb2 localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.216  cluster clusterscan192.168.1.212  redhat-212192.168.1.214  redhat-214192.168.1.213  redhat-212-vip192.168.1.215  redhat-214-vip10.0.1.2       raca-priv10.0.1.3       racb-priv

三、openfiler来划分存储空间

这个软件挺好用的,在vmware环境下安装,其实就是个linux系统,我们创建vmdisk就行了。配置登陆一个网页https://ip:446
在网络存储服务器 (openfiler1) 上执行以下安装。
在两个 Oracle RAC 节点上进行网络配置之后,下一步是将 Openfiler 软件安装到网络存储服务器 (openfiler1)。稍后会将网络存储服务器配置为 iSCSI 存储设备,以满足 Oracle Clusterware 和 Oracle RAC 的所有共享存储需求。
安装 Openfiler步骤可参考oracle官网:
http://www.oracle.com/technetwork/cn/articles/hunter-rac11gr2-iscsi-083834-zhs.html

1、使用 Openfiler 配置 iSCSI 卷
OpenFiler设置 iSCSI / 逻辑卷卷名卷描述
racdb-crs1 racdb-ASM CRS Volume 1
racdb-crs2 racdb-ASM CRS Volume 2
racdb-crs3 racdb-ASM CRS Volume 3
racdb-data1 racdb-ASM Data Volume 1
racdb-data2 racdb-ASM Data Volume 2
racdb-data3 racdb-ASM Data Volume 3
racdb-fra1 racdb-ASM FRA Volume 1
racdb-fra2 racdb-ASM FRA Volume 2
racdb-fra3 racdb-ASM FRA Volume 3

2、ISCSI路径名称命名
iqn.2006-01.com.openfiler:racdb.crs1
iqn.2006-01.com.openfiler:racdb.crs2
iqn.2006-01.com.openfiler:racdb.crs3
iqn.2006-01.com.openfiler:racdb.data1
iqn.2006-01.com.openfiler:racdb.data2
iqn.2006-01.com.openfiler:racdb.data3
iqn.2006-01.com.openfiler:racdb.fra1
iqn.2006-01.com.openfiler:racdb.fra2
iqn.2006-01.com.openfiler:racdb.fra3

3、两个节点安装iscsi客户端

#yum install -y iscsi-initiator-utils#systemctl start iscsid.service#service iscsid start

4、设置iscsi客户端开机启动

systemctl enable iscsid.servicesystemctl enable iscsi.service

5、查看服务状态

#systemctl list-unit-files |grep iscsi*iscsi-shutdown.service                        static  iscsi.service                                 enabled iscsid.service                                enabled iscsiuio.service                              disablediscsid.socket                                 enabled iscsiuio.socket                               enabled 

6、发现ISCSI服务端磁盘路径

#iscsiadm -m discovery -t sendtargets -p openfiler1-priv 为你的openfiler的IP地址,我这里地址是10.0.1.100#iscsiadm -m discovery -t sendtargets -p 10.0.1.10010.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.fra310.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.fra210.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.fra110.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.data310.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.data210.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.data110.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.crs310.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.crs210.0.1.100:3260,1 iqn.2006-01.com.openfiler:racdb.crs1

7、每个 Oracle RAC 节点都能够从网络存储服务器中发现可用目标。下一步是手动登录每个可用目标,这可以使用 iscsiadm 命令行接口完成。这需要在两个 Oracle RAC 节点上运行。注意,我必须指定网络存储服务器的 IP 地址而非其主机名 (openfiler1-priv) - 我认为必须这么做,因为上述发现使用 IP 地址显示目标。
登陆ISCSI远程磁盘

iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs1 -p 10.0.1.100 -liscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs2 -p 10.0.1.100 -liscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs3 -p 10.0.1.100 -liscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1 -p 10.0.1.100 -liscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data2 -p 10.0.1.100 -liscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data3 -p 10.0.1.100 -liscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1 -p 10.0.1.100 -liscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra2 -p 10.0.1.100 -liscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra3 -p 10.0.1.100 -l

8、设置开机启动自动连接磁盘

iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs1 -p 10.0.1.100 --op update -n node.startup -v automaticiscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs2 -p 10.0.1.100 --op update -n node.startup -v automaticiscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs3 -p 10.0.1.100 --op update -n node.startup -v automaticiscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1 -p 10.0.1.100 --op update -n node.startup -v automaticiscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data2 -p 10.0.1.100 --op update -n node.startup -v automaticiscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data3 -p 10.0.1.100 --op update -n node.startup -v automaticiscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1 -p 10.0.1.100 --op update -n node.startup -v automaticiscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra2 -p 10.0.1.100 --op update -n node.startup -v automaticiscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra3 -p 10.0.1.100 --op update -n node.startup -v automatic

9、查看远程磁盘路径和关联的磁盘路径

#(cd /dev/disk/by-path; ls -l *openfiler* | awk '{FS=" "; print $9 " " $10 " " $11}')ip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs1-lun-0 -> ../../sdcip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs2-lun-0 -> ../../sddip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs3-lun-0 -> ../../sdeip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0 -> ../../sdfip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data2-lun-0 -> ../../sdgip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data3-lun-0 -> ../../sdhip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-0 -> ../../sdiip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra2-lun-0 -> ../../sdjip-10.0.1.100:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra3-lun-0 -> ../../sdk

10、安装udev设备管理器(rac_udev建立磁盘方式安装grid)
#yum install -y udev
查看磁盘串号

-----------------------------------------------------------------------------------------------------------------for disk in `ls /dev/sd*`                  do                    echo $disk                    /usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=$disk                  done   \\回车----------------------------------------------------------------------------------------------------------------- /dev/sda/dev/sda1/dev/sda2/dev/sdb/dev/sdb1/dev/sdc14f504e46494c45527763443337452d557347312d514f3049/dev/sdd14f504e46494c4552715837527a472d78444f522d6e6b5774/dev/sde14f504e46494c45523045727559352d706674422d43666c59/dev/sdf14f504e46494c455262664b78684c2d51796e512d30464179/dev/sdg14f504e46494c45526c36533367792d6a6265712d45705648/dev/sdh14f504e46494c45524159783651312d4a4554742d4f74776f

在两个 Oracle RAC 节点:
映射关联磁盘

#vim /etc/udev/rules.d/99-oracle-asmdevices.rulesKERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c45527763443337452d557347312d514f3049", SYMLINK+="asm_ocr_1_1",  OWNER="grid",  GROUP="asmadmin", MODE="0660"KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c4552715837527a472d78444f522d6e6b5774", SYMLINK+="asm_ocr_1_2",  OWNER="grid",  GROUP="asmadmin", MODE="0660"KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c45523045727559352d706674422d43666c59", SYMLINK+="asm_data_1_1",  OWNER="grid",  GROUP="asmadmin", MODE="0660"KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c455262664b78684c2d51796e512d30464179", SYMLINK+="asm_data_1_2",  OWNER="grid",  GROUP="asmadmin", MODE="0660"KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c45526c36533367792d6a6265712d45705648", SYMLINK+="asm_fra_1_1",  OWNER="grid",  GROUP="asmadmin", MODE="0660"KERNEL=="sd?", ENV{ID_SERIAL}=="14f504e46494c45524159783651312d4a4554742d4f74776f", SYMLINK+="asm_fra_1_2",  OWNER="grid",  GROUP="asmadmin", MODE="0660"

加载rules文件(rac_udev建立磁盘方式安装grid)
#udevadm control --reload-rules
#udevadm trigger

11、查看关联路径情况

#ls -l /dev/asm*lrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_data_1_1 -> sdflrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_data_1_2 -> sdglrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_fra_1_1 -> sdhlrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_fra_1_2 -> sdilrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_ocr_1_1 -> sdclrwxrwxrwx. 1 root root 3 12月 26 17:30 /dev/asm_ocr_1_2 -> sddlrwxrwxrwx. 1 root root 3 1月   8 14:00 /dev/asm_ocr_1_3 -> sde

四、创建任务角色划分操作系统权限组、用户和目录

1、创建用户:

groupadd -g 1000 oinstall  groupadd -g 1200 asmadmin  groupadd -g 1201 asmdba  groupadd -g 1202 asmoper  groupadd -g 1300 dba  groupadd -g 1301 oper 

2、创建组:

useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid  useradd -u 1101 -g oinstall -G dba,oper,asmdba oracle

3、创建密码:
passwd grid
passwd oracle
4、设置互信关系,这里记住oracle和grid用户都要设置互信
#su - grid
$ mkdir ~/.ssh(有则不创建)
两个节点执行以下操作
ssh-keygen -t rsa
ssh-keygen -t dsa
这里一步一步直接回车的

以下操作在一个节点上执行即可(id_rsa是密钥,id_rsa.pub是公钥)
cat ~/.ssh/id_rsa.pub >> ./.ssh/authorized_keys --公钥存在authorized_keys文件中,写到本机
cat ~/.ssh/id_dsa.pub >> ./.ssh/authorized_keys
ssh redhat-214 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys --第二个节点的公钥写到本机
ssh redhat-214 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


scp ~/.ssh/authorized_keys secdb2:~/.ssh/authorized_keys

两个节点上分别验证
ssh redhat-212 date
ssh redhat-214 date
ssh raca-priv date
ssh racb-priv date

#su - oracle
两个节点执行以下操作:
ssh-keygen -t rsa
ssh-keygen -t dsa

以下操作在一个节点上执行即可
cat ~/.ssh/id_rsa.pub >> ./.ssh/authorized_keys --公钥存在authorized_keys文件中,写到本机
cat ~/.ssh/id_dsa.pub >> ./.ssh/authorized_keys
ssh redhat-214 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys --第二个节点的公钥写到本机
ssh redhat-214 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys redhat-214:~/.ssh/authorized_keys --上传本机公钥到第二个节点管理

两个节点上分别验证
ssh redhat-212 date
ssh redhat-214 date
ssh raca-priv date
ssh racb-priv date

5、为grid用户设置环境变量
如下操作也需要在两个节点上同样进行,这里需要注意的是grid用户的SID和oracle用户的SID,是不一样的,这里大家明白原理的话就不会出错。
以 grid 用户帐户分别登录到两个 Oracle RAC 节点并创建以下登录脚本 (.bash_profile):
注: 在为每个 Oracle RAC 节点设置 Oracle 环境变量时,确保为每个 RAC 节点指定唯一的 Oracle SID。对于此示例,我使用:
racnode1:ORACLE_SID=+ASM1
racnode2:ORACLE_SID=+ASM2
Node1:

[root@racnode1 ~]# su - gridvi .bash_profileexport TMP=/tmp  export TMPDIR=$TMP  export ORACLE_SID=+ASM1  export ORACLE_BASE=/u01/grid  export ORACLE_HOME=/u01/app/grid/11.2.0  export NLS_DATE_FORMAT='yyyy/mm/dd hh34: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/jlibexport LANG=en_USexport NLS_LANG=AMERICAN_AMERICA.ZHS16GBK umask 022 

Node2:

#su - gridvi .bash_profileexport TMP=/tmp  export TMPDIR=$TMP  export ORACLE_SID=+ASM2  export ORACLE_BASE=/u01/grid  export ORACLE_HOME=/u01/app/grid/11.2.0  export NLS_DATE_FORMAT='yyyy/mm/dd hh34: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 LANG=en_US  export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  umask 022

6、为 oracle 用户设置环境变量
以 oracle 用户帐户分别登录到两个 Oracle RAC 节点并创建以下登录脚本 (.bash_profile):
注: 在为每个 Oracle RAC 节点设置 Oracle 环境变量时,确保为每个 RAC 节点指定唯一的 Oracle SID。对于此示例,我使用:
racnode1:ORACLE_SID=orcl1
racnode2:ORACLE_SID=orcl2

#su - oraclevi .bash_profileexport TMP=/tmp  export TMPDIR=$TMP  export ORACLE_HOSTNAME=rac1  export ORACLE_SID=orcl1  export ORACLE_BASE=/u01/app/oracle  export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1  export ORACLE_UNQNAME=orcl  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 LANG=en_US  export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  export NLS_DATE_FORMAT='yyyy/mm/dd hh34:mi:ss'  umask 022

Node2:

#su - oraclevi .bash_profileexport TMP=/tmp  export TMPDIR=$TMP  export ORACLE_HOSTNAME=rac2  export ORACLE_SID=orcl2  export ORACLE_BASE=/u01/app/oracle  export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1  export ORACLE_UNQNAME=orcl  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 LANG=en_US  export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  export NLS_DATE_FORMAT='yyyy/mm/dd hh34:mi:ss'  umask 022

7、创建 Oracle 基目录路径
最后一步是配置 Oracle 基路径,要遵循最佳灵活体系结构 (OFA) 的结构及正确的权限。需要以 root 用户身份在集群的两个 Oracle RAC 节点上完成此任务。
本指南假设在根文件系统中创建 /u01 目录。请注意,这样做是为了简便起见,不建议将其作为通用做法。通常会将 /u01 目录作为配置了硬件或软件镜像功能的单独文件系统供应。
#mkdir -p /u01/grid
#mkdir -p /u01/app/grid/11.2.0
#chown -R grid:oinstall /u01
#mkdir -p /u01/app/oracle
#chown oracle:oinstall /u01/app/oracle
#chmod -R 775 /u01
8、为 Oracle 软件安装用户设置资源限制:
8.1 在每个 Oracle RAC 节点上,在 /etc/security/limits.conf 文件中添加以下几行代码(下面的示例显示软件帐户所有者 oracle 和 grid):

#vi /etc/security/limits.confgrid soft nproc 2047grid hard nproc 16384grid soft nofile 1024grid hard nofile 65536oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536或下面加了stack最大栈大小,一般我使用都是上面多些oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536oracle soft stack 10240oracle hard stack 32768grid soft nproc 2047grid hard nproc 16384grid soft nofile 1024grid hard nofile 65536grid soft stack 10240grid hard stack 32768

8.2 在每个 Oracle RAC 节点上,在 /etc/pam.d/login 文件中添加或编辑下面一行内容(如果不存在此行):

#vi /etc/pam.d/loginsession    required     pam_limits.so

8.3 修改内核参数

#vim /etc/sysctl.conf fs.aio-max-nr = 1048576  fs.file-max = 6815744  kernel.shmall = 1073741824  kernel.shmmax = 4398046511104  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

使sysctl生效
#sysctl -p
8.3 安装相关的开发工具包

#yum -y install glibc \glibc-devel \glibc-headers \libaio \libaio-devel \libgcc \libstdc++ \libstdc++-devel \make \sysstat \unixODBC \unixODBC-devel \pdksh \compat-libcap1 \compat-libstdc++-33 \elfutils-libelf-devel \gcc \gcc-c++ \smartmontools \pdksh \compat-libstdc \cvuqdisk

9、RHEL 7 安装oracle rac 11.2.0.4执行root.sh报错ohasd failed to start
报错原因:
因为RHEL 7使用systemd而不是initd运行进程和重启进程,而root.sh通过传统的initd运行ohasd进程。

9.1、 解决方法:
在RHEL 7中ohasd需要被设置为一个服务,在运行脚本root.sh之前。
以root用户创建服务文件
#touch /usr/lib/systemd/system/ohas.service
#chmod 777 /usr/lib/systemd/system/ohas.service

9.2、 将以下内容添加到新创建的ohas.service文件中

#vim /usr/lib/systemd/system/ohas.service[Unit]Description=Oracle High Availability ServicesAfter=syslog.target[Service]ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simpleRestart=always[Install]WantedBy=multi-user.target

9.3、以root用户运行下面的命令
#systemctl daemon-reload
#systemctl enable ohas.service
#systemctl start ohas.service

9.4、查看运行状态
#systemctl status ohas.service

五、安装GI集群软件

1、连接操作中的 Xmanager
#su - grid
$ cd /home/grid/
$ unzip p13390677_112040_Linux-x86-64_3of7.zip

#yum install xhost + -y
#su - grid
$ export DISPLAY=ip:0.0 //ip为你本机ip
$ xhost +
$ export LANG=en_US
$ ./runInstaller

若需要添加中文语言包
#mkdir -p /usr/share/fonts/zh_CN/TrueType
将zysong.ttf文件放至/usr/share/fonts/zh_CN/TrueType目录中

2、安装截图
出来下面安装界面,选择最下面的Skip software updates,然后选next

选择第一个安装和配置集群环境,next

选择第二个高级安装,next

选上添加简体中文,next

此处集群名自己取,SCAN名需要和/etc/hosts中的scan ip别名一致,端口默认,不选GNS,next

添加busrac2节点

点next(上面设置互信关系一定执行过,不然这一步如果next会出错的)

或如果没有设置互信关系的话可以点SSH Connectivity,输入grid用户的密码(注两点节点grid用户与密码要一致),在点setup,最后next


这里只需要确认一下网络接口,安装向导已经把我们填写,next(这里是自动识别到你服务器上IP是哪段的)

存储选择:选择ASM,next

这里让我们创建asm disk group,给一个名字"ORC",建立OCR盘,选择3块盘 next(这里要求至少3块盘的,这里图片只是参考的;有时候会找不到盘,可以试重新执行加载rules文件(rac_udev建立磁盘方式安装grid))


设置密码:next

这里选择第二项不使用IPMI

给ASM指定不同的组,next

这里安装向导会帮你填写集群软件的安装路径,我们继续next,这里我们需要注意的是oracle_Home不能是oracle_base的子目录



以root身份执行脚本:root用户执行两个脚本,一个节点执行完后再执行第二个节点(root.sh执行可能会长一点)

我们会看到这个报错,其实这个问题我查看了mos知识库,说的比较含糊,可以忽略这个错误,不影响我们的安装和未来的使用

直接finish了,这里我们集群软件安装完成。

六、安装oracle 11.2.0.4软件

#su - oracle
$ export DISPLAY=ip:0.0 //ip为你本机ip
$ xhost +
$ export LANG=en_US
$ cd database
$ ./runInstaller
在解压database运行安装脚本,这里和安装grid一样,启动安装向导
我们不填写mos账号,又不联网没意义,点击next,这里我们还是在rac1节点上安装


我们这里只安装数据库软件,点击next

这里选择集群安装方式,有以下3种选项之一:
Single instance database installation(单实例数据库安装) 这一选项允许仅在本地节点上安装单实例数据库软件。
Oracle Real Application Cluster database installation(Oracle RAC数据库安装) 这一选项允许在集群中的选定节点上选择和安装Oracle RAC二进制文件。
Oracle RAC One Node database installation 这个选项在选定节点上安装Oracle RAC One Node数据库二进制文件。
在这个界面上,选择Oracle Real Application Cluster database installation选项。
选择"select All",点击next

还是选择语言为"English/Simplified Chinese",点击next

选择"Enterprise Edition" 点击"next"

这里是oracle_base和oracle_home,点击next

这个对应到组就可以了,继续next

这一步会check你的安装环境,我们只要配置参数正确就没问题,这里基本上都是succeeded,点击next(导致这个错误的原因是在/etc/hosts中配置了SCAN的地址,尝试ping这个地址信息,如果可以成功,则这个错误可以忽略。我尝试ping scan ip可以ping通,所以暂时也就忽略了这个错误。)

summary一下,我们就可以'install'了

这里安装会比较快

出现如下错误

查看日志报错如下:
#vi /u01/oraInventory/logs/installActions2018-01-10_02-56-55PM.log

INFO: collect2: error: ld returned 1 exit statusINFO: make[1]: *** [/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/emdctl] Error 1INFO: make[1]: Leaving directory `/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib'INFO: make: *** [emdctl] Error 2INFO: End output from spawned process.INFO: ----------------------------------INFO: Exception thrown from action: makeException Name: MakefileExceptionException String: Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk'. See '/u01/oraInventory/logs/installActions2018-01-10_02-56-55PM.log' for details.Exception Severity: 1

解决方法:
vi $ORACLE_HOME/sysman/lib/ins_emagent.mk

$vi /u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk搜索以下行:$(MK_EMAGENT_NMECTL)改变为:$(MK_EMAGENT_NMECTL) -lnnz11

然后点击:retry,可以。

完成后同样也要执行一个脚本,也是要在root用户下去执行,分别两个节点上

至此数据库软件已安装完成。

七、创建ASM磁盘组

1、在安装GI集群软件的时候我们就配置过asm磁盘,现在我们还有一个disk分区没有加入到asm磁盘组中,我们通过asmca来实现
$ su - grid
$ export DISPLAY=ip:0.0
运行命令asmca,我们看到下面配置向导。这里可以看到我们之前配置过的disk group,我们点击create后

来到这里,我们给disk group起个名字,选择redundancy Normal,勾选data_1_1和data_1_2,我们ok一下

会有一个10秒的等待创建磁盘组,完成后提示成功

选择redundancy Normal,勾选fra_1_1和fra_1_2,我们ok一下


这里我们就能看到有三个disk group了!!!退出即可。。

八、配置oracle database

我们直接su - oracle,运行dbca命令来配置数据库
$ export DISPLAY=IP:0.0
$ export LANG=en_US
$ dbca

来到如下界面后,我们选择第一项集群模式,然后next

这个就不用考虑了,直接选择create a database,继续next

这个也是选择general purpose,继续next

配置类型选择admin-managed,Global database name和sid相同为test,最下面我们选择"select all",然后next

这里我们还是选择默认推荐的配置,EM和amt都选择配置,继续next

把sys、system、dbsnmp都给一个相同的密码,这里你自己给吧!!然后next

这里我们选择用存储类型为asm,使用omf管理数据文件(这里的名字是存放数据数据文件路径名字,自定义)。

我安装数据库勾选OEM的时候,这个地方就要输入ASMSNMP密码的,设置好后点ok

这里选择闪回恢复区,看个人情况

或是我们这里不选择闪回恢复区,我这里就不配置了,以后手动改spfile吧!!

不选择装sample schemas

或是装上sample schemas,以后就有数据可以测试玩一把了!! 继续next

这里我们字符集会有所设置,ZHS16GBK-GBK,国际字符集默认的就行。其它的选项卡没有特殊配置,在以后都可以去改spfile,我们继续next



这个是数据库的存储配置页面,我们看一下控制文件等等都要开始安装了,next

继续finish


等待吧,这个也是比较久的,如果SSD和cpu比较给力,速度基本上10分钟吧!!

安装完后,点击exit

我们就退出安装配置向导了!!!

九、检查

1、检查crs资源状态

[grid@redhat212 ~]$ crs_stat -tName           Type           Target    State     Host        ------------------------------------------------------------ora.DATADB.dg  ora....up.type ONLINE    ONLINE    redhat212   ora.FRA.dg     ora....up.type ONLINE    ONLINE    redhat212   ora....ER.lsnr ora....er.type ONLINE    ONLINE    redhat212   ora....N1.lsnr ora....er.type ONLINE    ONLINE    redhat212   ora.ORC.dg     ora....up.type ONLINE    ONLINE    redhat212   ora.asm        ora.asm.type   ONLINE    ONLINE    redhat212   ora.cvu        ora.cvu.type   ONLINE    ONLINE    redhat212   ora.gsd        ora.gsd.type   OFFLINE   OFFLINE               ora....network ora....rk.type ONLINE    ONLINE    redhat212   ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    redhat212   ora.ons        ora.ons.type   ONLINE    ONLINE    redhat212   ora.orcl.db    ora....se.type ONLINE    ONLINE    redhat212   ora....SM1.asm application    ONLINE    ONLINE    redhat212   ora....12.lsnr application    ONLINE    ONLINE    redhat212   ora....212.gsd application    OFFLINE   OFFLINE               ora....212.ons application    ONLINE    ONLINE    redhat212   ora....212.vip ora....t1.type ONLINE    ONLINE    redhat212   ora....SM2.asm application    ONLINE    ONLINE    redhat214   ora....14.lsnr application    ONLINE    ONLINE    redhat214   ora....214.gsd application    OFFLINE   OFFLINE               ora....214.ons application    ONLINE    ONLINE    redhat214   ora....214.vip ora....t1.type ONLINE    ONLINE    redhat214   ora.scan1.vip  ora....ip.type ONLINE    ONLINE    redhat212 

我们看到ora.gsd、ora.214(RAC2).gsd是offline状态,其实两个进程对我们的数据库是没有任何影响的,我们把他们打开就行了
2、查看节点的状态

[grid@redhat212 ~]$ srvctl status nodeapps -n redhat212VIP redhat212-vip is enabledVIP redhat212-vip is running on node: redhat212Network is enabledNetwork is running on node: redhat212GSD is disabledGSD is not running on node: redhat212ONS is enabledONS daemon is running on node: redhat212

3、开启节点

[grid@redhat212 ~]$ srvctl enable nodeappsPRKO-2415 : VIP is already enabled on node(s): redhat212,redhat214PRKO-2416 : Network resource is already enabled.PRKO-2417 : ONS is already enabled on node(s): redhat212,redhat214开节点后在查看节点应用程序状态[grid@redhat212 ~]$ srvctl status nodeappsVIP redhat212-vip is enabledVIP redhat212-vip is running on node: redhat212VIP redhat214-vip is enabledVIP redhat214-vip is running on node: redhat214Network is enabledNetwork is running on node: redhat212Network is running on node: redhat214GSD is enabledGSD is not running on node: redhat212GSD is not running on node: redhat214ONS is enabledONS daemon is running on node: redhat212ONS daemon is running on node: redhat214

4、启动节点

$ srvctl start nodeappsPRKO-2421 : Network resource is already started on node(s): redhat212,redhat214PRKO-2420 : VIP is already started on node(s): redhat212PRKO-2420 : VIP is already started on node(s): redhat214PRKO-2422 : ONS is already started on node(s): redhat212,redhat214

5、我们在来查看一下所有的组件是否online

$ crs_stat -tName           Type           Target    State     Host        ------------------------------------------------------------ora.DATADB.dg  ora....up.type ONLINE    ONLINE    redhat212   ora.FRA.dg     ora....up.type ONLINE    ONLINE    redhat212   ora....ER.lsnr ora....er.type ONLINE    ONLINE    redhat212   ora....N1.lsnr ora....er.type ONLINE    ONLINE    redhat212   ora.ORC.dg     ora....up.type ONLINE    ONLINE    redhat212   ora.asm        ora.asm.type   ONLINE    ONLINE    redhat212   ora.cvu        ora.cvu.type   ONLINE    ONLINE    redhat212   ora.gsd        ora.gsd.type   ONLINE   ONLINE   redhat212               ora....network ora....rk.type ONLINE    ONLINE    redhat212   ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    redhat212   ora.ons        ora.ons.type   ONLINE    ONLINE    redhat212   ora.orcl.db    ora....se.type ONLINE    ONLINE    redhat212   ora....SM1.asm application    ONLINE    ONLINE    redhat212   ora....12.lsnr application    ONLINE    ONLINE    redhat212   ora....212.gsd application    ONLINE   ONLINE    redhat212             ora....212.ons application    ONLINE    ONLINE    redhat212   ora....212.vip ora....t1.type ONLINE    ONLINE    redhat212   ora....SM2.asm application    ONLINE    ONLINE    redhat214   ora....14.lsnr application    ONLINE    ONLINE    redhat214   ora....214.gsd application    ONLINE   ONLINE      redhat214          ora....214.ons application    ONLINE    ONLINE    redhat214   ora....214.vip ora....t1.type ONLINE    ONLINE    redhat214   ora.scan1.vip  ora....ip.type ONLINE    ONLINE    redhat212 

我们这里安装完毕!!!

十、关于RAC数据库与监听启动与停止命令

grid和oracle用户都可以执行,在其中一个节点执行即可:
1、RAC监听启停:
$ srvctl status listener #检查TNS listener的状态
$ srvctl config listener -a #检查TNS listener的配置
$ srvctl start listener #开启监听
$ srvctl stop listener #停掉监听
$ srvctl stop listener -n redhat212 #停掉指定节点监听
$ srvctl start listener -n redhat212 #启动指定节点监听

例子:
RAC启动数据库监听,进入grid用户来启停端口
#su - grid
$ srvctl start|stop|status listener

2、RAC启停数据库:
srvctl status database -d RAC # 检查数据库的状态

srvctl status instance -d RAC -i rac1 #检查指定实例的状态
srvctl start database -d orcl # 启动数据库
srvctl stop database -d orcl # 关闭数据库
srvctl start instance -d orcl -i orcl1 # 启动指定的实例
srvctl stop instance -d orcl -i orcl2 # 关闭指定实例

例子:在nodes1上关闭一个实例,分别查看两个节点状态

或下面方式

RAC启动数据库,进入oracle用户#su - oracle$ sqlplus sys/****  as sysdba SQL> select status from v$instance;  //查看数据库状态SQL>startup;  //启动数据库SQL>shutdown immediate;  //停数据库

十一、添加表空间步骤:

ssh root 进入 192.168.1.212 su  - oraclesource .bash_profilesqlplus /nologconnect /as sysdba创建表空间:SQL>CREATE SMALLFILE TABLESPACE "TEST" DATAFILE '+DATADB/ORCL/DATAFILE/test001.dbf' SIZE 1024M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;添加TEST表空间中的存储test001.dbf文件在ASM的+DATADB/ORCL/DATAFILE/目录下,初始大小为1G,自动500MB扩展不做限制。增加表空间:alter tablespace CP_TM add datafile '+DATADB/orcl/datafile/cp_tm_08.dbf' size 20480M; RAC方式给CP_TM表空间增加cp_tm_08.dbf数据文件大小为20G。alter tablespace CP_TM add datafile  +DATADB/orcl/datafile/cp_tm_09.dbf' size 10240M autoextend on next 50m maxsize 20480;  RAC增加表空间cp_tm_-09.dbf初始为10G,按50M增加最大到20G。

十二、语法简汇

集群信息grid和oracle用户都可以执行
10.1、数据库与实例:

列出所有的配置数据库
$ srvctl config database

检查数据库相关的信息 (-d参数后面是您server_name)
$ srvctl config database -d orcl -a

$ srvctl config database -d orcl -t

srvctl status database -d RAC # 检查数据库的状态
srvctl status instance -d RAC -i rac1 #检查指定实例的状态
srvctl start database -d rac # 启动数据库
srvctl stop database -d rac # 关闭数据库
srvctl start instance -d rac -i rac1 # 启动指定的实例
srvctl stop instance -d rac -i rac2 # 关闭指定实例

ASM状态
$ srvctl status asm
ASM配置
$ srvctl status asm -a

10.2、网络相关的命令
TNS监听器状态以及配置
$ srvctl status listener #检查TNS listener的状态
$ srvctl config listener -a #检查TNS listener的配置
$ srvctl start listener #开启监听
$ srvctl stop listener #停掉监听
$ srvctl stop listener -n redhat212 #停掉指定节点监听
$ srvctl start listener -n redhat212 #启动指定节点监听

SRVCTL的参数-n 实例节点名,不是实例sid

查看某个节点ASM信息
srvctl config listener -n node2

SCAN状态以及配置
$ srvctl status scan
$ srvctl config scan

VIP各个节点的状态以及配置
$ srvctl status vip -n rac1
$ srvctl status vip -n rac2

$ srvctl config vip -n rac1
$ srvctl config vip -n rac2

节点应用程序配置(VIP、GSD、ONS、监听器)
$ srvctl config nodeapps -a -g-s -l

10.3、查看集群状态(nodeapps节点应用程序,ASM实例,数据库等)
$ crs_stat -t
状态检查也可以使用如下命令:
crsctl stat resource -t 或者 crsctl stat resource

番外

这里还要强调一下11.2.0.1版本的一个bug,就是客户端无法通过scan连接到数据库解决方法如下:[oracle@redhat212 ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 19 11:29:58 2014Copyright (c) 1982, 2009, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL> show parameter local_listenerNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------local_listener                       string      (DESCRIPTION=(ADDRESS_LIST=(AD                                                 DRESS=(PROTOCOL=TCP)(HOST=redhat212                                                 -vip)(PORT=1521))))SQL> show parameter remot_listener;NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------remote_dependencies_mode             string      TIMESTAMPremote_listener                      string      clusterscan:1521remote_login_passwordfile            string      EXCLUSIVEremote_os_authent                    boolean     FALSEremote_os_roles                      boolean     FALSEresult_cache_remote_expiration       integer     0SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.216)(PORT = 1521))))' sid='orcl1';    System altered.SQL> alter system set remote_listener='clusterscan:1521';System altered.SQL> alter system register;System altered.最后配置客户端tnsname.ora文件指向scan listener#tnsnames.ora.rac1 Network Configuration File: /u01/app/11.2.0/grid/network/admin/tnsnames.ora.rac1#Generated by Oracle configuration tools.ORCL =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.216)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = orcl)    )  )
0