0
点赞
收藏
分享

微信扫一扫

阿里云ESSD RAC11g搭建

环境规划

物理环境规划

ECS 类型

服务器类型

服务器配置

操作系统版本

Oracle版本

阿里云

g7se

8C 32G

CentOS 7.9

11.2.0.4.0


磁盘规划

DBNAME

HOSTNAME

ASM 磁盘组

SIZE

orcl

rac1

rac2

OCR

20G

20G

20G

DATA

300G

ARCH

100G

网络规划

host

public ip

vip

priv ip

scan ip

rac1

172.16.10.1

172.16.10.3

172.16.20.1

172.16.10.5

rac2

172.16.10.2

172.16.10.4

172.16.20.2


阿里云资源创建

创建 VPC

vpc: 172.16.0.0/12

阿里云ESSD RAC11g搭建_rac

创建交换机

交换机1:172.16.10.0/24

交换机2:172.16.20.0/24

阿里云ESSD RAC11g搭建_linux_02

创建 ECS

系统盘:40G

数据盘:100G

自定义密码root/rootrac_211125


阿里云ESSD RAC11g搭建_oracle_03

修改主网卡 IP

先停止实例然后修改

阿里云ESSD RAC11g搭建_linux_04

创建辅助网卡

单独创建弹性网卡作为辅助网卡可以指定 IP

阿里云ESSD RAC11g搭建_rac_05


创建高可用虚拟IP

专有网络--高可用虚拟IP

阿里云ESSD RAC11g搭建_阿里云_06

配置 keepalived(RAC 可省略)

阿里云 HaVip配合 keepalived 才能实现高可用主备双机但是 RAC 自带 VIP 的管理功能可以不用配置 keepalived。

安装 keepalived

yum install keepalived

mv /etc/keepalived/keepalived.conf/etc/keepalived/keepalived.conf.bak

配置

[root@rac1 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

vrrp_skip_check_adv_addr

vrrp_garp_interval 0

vrrp_gna_interval 0

}


vrrp_instance VI_1 {

state MASTER #设置ECS1实例为主实例

interface eth0 #设置网卡名,本示例配置为eth0

virtual_router_id 51

nopreempt

priority 100 #设置优先级,数字越大,优先级越高,本示例配置主用实例优先级为100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

unicast_src_ip 172.16.10.1 #设置ECS实例的私网IP地址

unicast_peer {

172.16.10.2 #对端ECS实例的私网IP地址

}

virtual_ipaddress {

172.16.10.3 #设置HaVip的IP地址

172.16.10.5

}

notify_master "/etc/keepalived/notify_action.sh MASTER"

notify_backup "/etc/keepalived/notify_action.sh BACKUP"

notify_fault "/etc/keepalived/notify_action.sh FAULT"

notify_stop "/etc/keepalived/notify_action.sh STOP"

garp_master_delay 1

garp_master_refresh 5


track_interface {

eth0 #设置ECS实例网卡名,本示例配置为eth0

}

}


vrrp_instance VI_2 {

state BACKUP #设置ECS1实例为备用实例

interface eth0 #设置网卡名,本示例配置为eth0

virtual_router_id 52

nopreempt

priority 10 #设置优先级,数字越大,优先级越高,本示例配置备用实例优先级为10

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

unicast_src_ip 172.16.10.1 #设置ECS实例的私网IP地址

unicast_peer {

172.16.10.2 #对端ECS实例的私网IP地址

}

virtual_ipaddress {

172.16.10.4 #设置HaVip的IP地址

}

notify_master "/etc/keepalived/notify_action.sh MASTER"

notify_backup "/etc/keepalived/notify_action.sh BACKUP"

notify_fault "/etc/keepalived/notify_action.sh FAULT"

notify_stop "/etc/keepalived/notify_action.sh STOP"

garp_master_delay 1

garp_master_refresh 5


track_interface {

eth0 #设置ECS实例网卡名,本示例配置为eth0

}

}


service keepalived start # 启动服务


[root@rac2 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

vrrp_skip_check_adv_addr

vrrp_garp_interval 0

vrrp_gna_interval 0

}


vrrp_instance VI_1 {

state BACKUP #设置ECS2实例为备用实例

interface eth0 #设置网卡名,本示例配置为eth0

virtual_router_id 51

nopreempt

priority 10 #设置优先级,数字越大,优先级越高,本示例配置备用实例优先级为10

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

unicast_src_ip 172.16.10.2 #设置ECS实例的私网IP地址

unicast_peer {

172.16.10.1 #对端ECS实例的私网IP地址

}

virtual_ipaddress {

172.16.10.3 #设置HaVip的IP地址

172.16.10.5

}

notify_master "/etc/keepalived/notify_action.sh MASTER"

notify_backup "/etc/keepalived/notify_action.sh BACKUP"

notify_fault "/etc/keepalived/notify_action.sh FAULT"

notify_stop "/etc/keepalived/notify_action.sh STOP"

garp_master_delay 1

garp_master_refresh 5


track_interface {

eth0 #设置ECS实例网卡名,本示例配置为eth0

}

}


vrrp_instance VI_2 {

state MASTER #设置ECS1实例为主实例

interface eth0 #设置网卡名,本示例配置为eth0

virtual_router_id 52

nopreempt

priority 100 #设置优先级,数字越大,优先级越高,本示例配置主用实例优先级为100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

unicast_src_ip 172.16.10.2 #设置ECS实例的私网IP地址

unicast_peer {

172.16.10.1 #对端ECS实例的私网IP地址

}

virtual_ipaddress {

172.16.10.4 #设置HaVip的IP地址

}

notify_master "/etc/keepalived/notify_action.sh MASTER"

notify_backup "/etc/keepalived/notify_action.sh BACKUP"

notify_fault "/etc/keepalived/notify_action.sh FAULT"

notify_stop "/etc/keepalived/notify_action.sh STOP"

garp_master_delay 1

garp_master_refresh 5


track_interface {

eth0 #设置ECS实例网卡名,本示例配置为eth0

}

}


service keepalived start # 启动服务


创建共享磁盘并挂载

阿里云ESSD RAC11g搭建_阿里云_07

环境配置

配置网卡 eth1

ip add


vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=dhcp

ONBOOT=yes

TYPE=Ethernet

USERCTL=yes

PEERDNS=no

IPV6INIT=no

PERSISTENT_DHCLIENT=yes

HWADDR=00:16:3e:17:**:** # ip add 获取的 eth1 的 mac 地址

DEFROUTE=no # 表示网卡接口不是默认路由。为避免在启动(ifup)辅助弹性网卡时改变 ECS 实例活动的默认路由,不要将 eth1 设置为默认路由


service network restart


修改主机名

节点1:

hostname rac1


vi /etc/hostname

rac1


节点2:

hostname rac2


vi /etc/hostname

rac2


关闭防火墙、selinux

阿里云默认已关闭

service firewalld status


getenforce


关闭系统自带的时钟同步服务

systemctl stop chronyd.service

systemctl disable chronyd.service

systemctl status chronyd.service

mv /etc/chrony.conf /etc/chrony.conf.bak


mv /etc/ntp.conf /etc/ntp.conf.bak

--即使 ntpd 服务不存在,但配置文件依然要删除,否则 RAC 会报错 CRS-2409


关闭透明大页

cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never


--临时关闭,重启后会失效

echo never > /sys/kernel/mm/transparent_hugepage/enabled

cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]


--永久关闭

chmod 744 /etc/rc.d/rc.local

vi /etc/rc.d/rc.local

echo never > /sys/kernel/mm/transparent_hugepage/enabled


配置 /etc/hosts 文件

阿里云服务器删除实例名那一行,否则节点识别会出现问题

cat <<EOF >>/etc/hosts

# public ip

172.16.10.1 rac1

172.16.10.2 rac2


# vip

172.16.10.3 rac1-vip

172.16.10.4 rac2-vip


# priv ip

172.16.20.1 rac1-priv

172.16.20.2 rac2-priv


# scan ip

172.16.10.5 scan

EOF


配置内核参数

kernel.sched_rt_runtime_us=-1 解决 Centos 7.9 集群 cssd 服务无法启动问题

cat <<EOF >>/etc/sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 32*0.9*1024*1024*1024/4096

kernel.shmmax = 32*0.9*1024*1024*1024

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

kernel.sched_rt_runtime_us=-1


EOF


/sbin/sysctl -p # 使更改生效


为 oracle 和 grid 用户设置 shell 限制

cat <<EOF >>/etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

EOF


配置 swap

swap 推荐设置如下

RAM Swap Space

1-2G 1.5times

2-16G equal

>16G 16G


dd if=/dev/zero of=/swapfile bs=8192 count=2M

mkswap /swapfile # 格式化 swap

chown root:root /swapfile

chmod 0600 /swapfile

swapon /swapfile # 激活 swap

swapon -s # 查看是否生效


重启时自动挂载 swap

vi /etc/fstab

/swapfile swap swap defaults 0 0


挂载数据盘

su - root

mkfs -t ext4 /dev/nvme1n1

mkdir /u01


vi /etc/fstab

/dev/nvme1n1 /u01 ext4 defaults 0 0


mount -a


新建用户、组

groupadd oinstall

groupadd dba

groupadd oper

groupadd asmadmin

groupadd asmdba

groupadd asmoper


useradd -g oinstall -G dba,oper,asmadmin,asmdba,asmoper -s /bin/bash -d /home/grid grid

useradd -g oinstall -G dba,oper,asmadmin,asmdba,asmoper -s /bin/bash -d /home/oracle oracle


mkdir -p /u01/app/grid

mkdir -p /u01/app/11.2.0/grid

mkdir -p /u01/app/oracle

mkdir -p /u01/soft

chown -R grid:oinstall /u01

chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01


passwd grid

passwd oracle


配置用户环境变量

配置 grid 用户环境变量

节点2 ORACLE_SID=+ASM2


[grid@rac1 ~]$ cat <<EOF >>.bash_profile

umask 022

export ORACLE_SID=+ASM1

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export PATH=\$PATH:\$ORACLE_HOME/bin

alias sqlplus='rlwrap sqlplus'

EOF


配置 oracle 用户环境变量

节点2 ORACLE_SID=orcl2


[oracle@rac1 ~]$ cat <<EOF >>.bash_profile

umask 022

export ORACLE_SID=orcl1

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbhome_1

export PATH=\$PATH:\$ORACLE_HOME/bin

export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:\$ORACLE_HOME/lib

alias sqlplus='rlwrap sqlplus'

EOF


配置 SSH 用户等效性

grid 用户下配置 ssh 等效性

#创建密钥2个节点

ssh-keygen -t rsa


cd ~/.ssh

cat id_rsa.pub >>authorized_keys


#rac2 的密钥添加到 rac1

[grid@rac1 ~]$ ssh grid@rac2 cat /home/grid/.ssh/authorized_keys >>/home/grid/.ssh/authorized_keys


#rac1 的密钥添加到 rac2

[grid@rac1 ~]$ scp /home/grid/.ssh/authorized_keys ​​​grid@rac2:/home/grid/.ssh/​​​


# 测试2个节点

目的是在 known_hosts 中添加记录

ssh rac1 date # 提示的时候输入 yes


ssh rac2 date


ssh rac1-priv date


ssh rac2-priv date


oracle 用户下配置 ssh 等效性

#创建密钥2个节点

ssh-keygen -t rsa


cd ~/.ssh

cat id_rsa.pub >>authorized_keys


#rac2 的密钥添加到 rac1

[oracle@rac1 ~]$ ssh oracle@rac2 cat /home/oracle/.ssh/authorized_keys >>/home/oracle/.ssh/authorized_keys


#rac1 的密钥添加到 rac2

[oracle@rac1 ~]$ scp /home/oracle/.ssh/authorized_keys oracle@rac2:/home/oracle/.ssh/


# 测试2个节点

目的是在 known_hosts 中添加记录

ssh rac1 date # 提示的时候输入 yes


ssh rac2 date


ssh rac1-priv date


ssh rac2-priv date


安装依赖包(2个节点)

pdksh 在 redhat 上叫 ksh

psmisc 有的补丁会用到,不安装打补丁时会报错 Missing command :fuser

root# yum -y install binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel psmisc


共享存储配置

在节点1上磁盘分区,分区结果如下。

[root@rac1 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

nvme0n1 259:0 0 40G 0 disk

└─nvme0n1p1 259:2 0 40G 0 part /

nvme1n1 259:8 0 100G 0 disk /u01

nvme2n1 259:5 0 300G 0 disk

└─nvme2n1p1 259:7 0 300G 0 part

nvme3n1 259:9 0 20G 0 disk

└─nvme3n1p1 259:10 0 20G 0 part

nvme4n1 259:11 0 20G 0 disk

└─nvme4n1p1 259:12 0 20G 0 part

nvme5n1 259:4 0 20G 0 disk

└─nvme5n1p1 259:6 0 20G 0 part

nvme6n1 259:1 0 100G 0 disk

└─nvme6n1p1 259:3 0 100G 0 part

上传 ASM 软件包到 /u01/soft 目录

rac2 的软件包是 grid 用户通过 scp 免密复制过来的所以属主是 grid:oinstall。

[root@rac1 soft]# ll oracleasm*

-rwxr-xr-x 1 root root 19360 Nov 29 18:22 oracleasmlib-2.0.12-1.el7.x86_64.rpm

-rwxr-xr-x 1 root root 86908 Nov 29 18:22 oracleasm-support-2.1.11-2.el7.x86_64.rpm


[root@rac2 soft]# ll oracleasm*

-rwxr-xr-x 1 grid oinstall 19360 Nov 30 15:20 oracleasmlib-2.0.12-1.el7.x86_64.rpm

-rwxr-xr-x 1 grid oinstall 86908 Nov 30 15:20 oracleasm-support-2.1.11-2.el7.x86_64.rpm


安装 ASM 组件(2个节点)

只需要安装 oracleasmlib 和 oracleasm-support 即可(安装没有顺序)

# 先安装依赖包

yum install -y kmod-oracleasm


rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm

rpm -ivh oracleasm-support-2.1.11-2.el7.x86_64.rpm


配置 ASMLIB(2个节点)

[root@rac1 ~]# oracleasm configure -i

Configuring the Oracle ASM library driver.


This will configure the on-boot properties of the Oracle ASM library

driver. The following questions will determine whether the driver is

loaded on boot and what permissions it will have. The current values

will be shown in brackets ('[]'). Hitting <ENTER> without typing an

answer will keep that current value. Ctrl-C will abort.


Default user to own the driver interface []: grid

Default group to own the driver interface []: asmdba

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]: y

Writing Oracle ASM library driver configuration: done


初始化 asmlib(2个节点)

[root@rac1 ~]# oracleasm init

Creating /dev/oracleasm mount point:/dev/oracleasm

Loading module "oracleasm":oracleasm

Configuring "oracleasm" to use device physical block size

Mounting ASMlib driver filesystem:/dev/oracleasm


验证如下即为安装成功(2个节点)

[root@rac1 ~]# oracleasm status

Checking if ASM is loaded: yes

Checking if /dev/oracleasm is mounted: yes


创建 ASM 磁盘(节点1)

oracleasm createdisk OCR1 /dev/nvme3n1p1

oracleasm createdisk OCR2 /dev/nvme4n1p1

oracleasm createdisk OCR3 /dev/nvme5n1p1

oracleasm createdisk DATA /dev/nvme2n1p1

oracleasm createdisk ARCH /dev/nvme6n1p1


介质安装前准备

上传软件包并做初始化配置(节点1)

# 上传软件包到 /u01/soft 目录,连接是用 root 建立的,即使用 grid 用户上传,文件属主还是 root

# GI 和 DB

p13390677_112040_Linux-x86-64_1of7.zip

p13390677_112040_Linux-x86-64_2of7.zip

p13390677_112040_Linux-x86-64_3of7.zip


# rlwrap

root# yum -y install perl-Data-Dumper # 先安装依赖包

root# rpm -ivh rlwrap-0.42-1.el6.x86_64.rpm


# gi 安装之前的准备,必须提前配置

p19404309_112040_Linux-x86-64.zip


# OPatch

p6880880_112000_Linux-x86-64.zip


# GI 补丁

p18370031_112040_Linux-x86-64.zip


# EM 补丁

p19692824_112040_Linux-x86-64.zip


# 解压软件包

grid$ unzip p13390677_112040_Linux-x86-64_1of7.zip

grid$ unzip p13390677_112040_Linux-x86-64_2of7.zip

root# chown -R oracle:oinstall database/


grid$ unzip p13390677_112040_Linux-x86-64_3of7.zip


# 替换解压后的 grid 和 database 目录的 cvu 文件

grid$ unzip p19404309_112040_Linux-x86-64.zip


grid 用户执行:

cd /u01/soft/

cd b19404309

cp grid/cvu_prereq.xml /u01/soft/grid/stage/cvu


oracle 用户执行:

cd /u01/soft/

cd b19404309

cp database/cvu_prereq.xml /u01/soft/database/stage/cvu


安装磁盘检测工具(2个节点)

如果不安装执行集群 root.sh 的时候可能会报错:

Preparing packages...

ls: cannot access /usr/sbin/smartctl: No such file or directory

/usr/sbin/smartctl not found.

error: %pre(cvuqdisk-1.0.9-1.x86_64) scriptlet failed, exit status 1

error: cvuqdisk-1.0.9-1.x86_64: install failed

# 先安装依赖包

yum install -y smartmontools


cd /u01/soft/grid/rpm

rpm -ivh cvuqdisk-1.0.9-1.rpm


安装集群软件

阿里云环境需要先配置组播

安装预检查

预检查加入了 fixup 参数,如果是操作系统的参数不正确会在 /tmp 目录下生成调整脚本,使用 root 用户两节点执行即可。

[grid@rac1 ~]$ cd /u01/soft/grid

[grid@rac1grid]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose > check.txt

[grid@rac1 grid]$ cat check.txt |grep failed

rac2 16GB (1.6777212E7KB) 16GB (1.6777216E7KB) failed

rac1 16GB (1.6777212E7KB) 16GB (1.6777216E7KB) failed

Result: Swap space check failed

rac2 missing pdksh-5.2.14 failed

rac1 missing pdksh-5.2.14 failed

Result: Package existence check failed for "pdksh"


编辑响应文件

[grid@rac1 ~]$ cat <<EOF >grid.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v11_2_0

ORACLE_HOSTNAME=rac1

INVENTORY_LOCATION=/u01/app/oraInventory

SELECTED_LANGUAGES=en,zh_CN

oracle.install.option=CRS_CONFIG

ORACLE_BASE=/u01/app/grid

ORACLE_HOME=/u01/app/11.2.0/grid

oracle.install.asm.OSDBA=asmdba

oracle.install.asm.OSOPER=asmoper

oracle.install.asm.OSASM=asmadmin

oracle.install.crs.config.gpnp.scanName=scan

oracle.install.crs.config.gpnp.scanPort=1521

oracle.install.crs.config.clusterName=rac

oracle.install.crs.config.gpnp.configureGNS=false

oracle.install.crs.config.gpnp.gnsSubDomain=

oracle.install.crs.config.gpnp.gnsVIPAddress=

oracle.install.crs.config.autoConfigureClusterNodeVIP=false

oracle.install.crs.config.clusterNodes=rac1:rac1-vip,rac2:rac2-vip

oracle.install.crs.config.networkInterfaceList=eth0:172.16.10.0:1,eth1:172.16.20.0:2

oracle.install.crs.config.storageOption=ASM_STORAGE

oracle.install.crs.config.sharedFileSystemStorage.diskDriveMapping=

oracle.install.crs.config.sharedFileSystemStorage.votingDiskLocations=

oracle.install.crs.config.sharedFileSystemStorage.votingDiskRedundancy=NORMAL

oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=

oracle.install.crs.config.sharedFileSystemStorage.ocrRedundancy=NORMAL

oracle.install.crs.config.useIPMI=false

oracle.install.crs.config.ipmi.bmcUsername=

oracle.install.crs.config.ipmi.bmcPassword=

oracle.install.asm.SYSASMPassword=oracle

oracle.install.asm.diskGroup.name=OCR

oracle.install.asm.diskGroup.redundancy=NORMAL

oracle.install.asm.diskGroup.AUSize=4

oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/OCR1,/dev/oracleasm/disks/OCR2,/dev/oracleasm/disks/OCR3

oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/disks/*

oracle.install.asm.monitorPassword=oracle

oracle.install.crs.upgrade.clusterNodes=

oracle.install.asm.upgradeASM=false

oracle.installer.autoupdates.option=SKIP_UPDATES

oracle.installer.autoupdates.downloadUpdatesLoc=

AUTOUPDATES_MYORACLESUPPORT_USERNAME=

AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

PROXY_HOST=

PROXY_PORT=

PROXY_USER=

PROXY_PWD=

PROXY_REALM=

EOF


静默安装

安装过程中提示执行 root 脚本,先不执行,进行下一步安装 GI 补丁。

[grid@rac1 ~]$ /u01/soft/grid/runInstaller -ignorePrereq -force -silent -responseFile /home/grid/grid.rsp -showProgress


安装 GI 补丁(2个节点)

GI 在启动 ohas 服务时,会使用 service 去启动,但是 RHEL 7 改变了 init 的管理方式,出现了兼容性上的问题,导致服务无法正常启动,所以这里先不执行脚本,安装补丁 patch 18370031。

su - grid


# 升级 OPatch

cd $ORACLE_HOME

mv OPatch/ OPatch.bak


cd /u01/soft

unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME


# 解压补丁

unzip p18370031_112040_Linux-x86-64.zip


# 安装补丁,提示的时候输入 y

$ORACLE_HOME/OPatch/opatch napply -oh $ORACLE_HOME -local /u01/soft/18370031/


# 查询已安装补丁

$ORACLE_HOME/OPatch/opatch lsinventory


执行 root 脚本

[root@rac1~]# /u01/app/oraInventory/orainstRoot.sh


[root@rac2~]# /u01/app/oraInventory/orainstRoot.sh


[root@rac1~]# /u01/app/11.2.0/grid/root.sh


# 节点1 root.sh 脚本执行成功后,登录 grid 用户修改 ASM 心跳

[grid@rac1 ~]$ alter system set cluster_interconnects = '172.16.20.1' scope=spfile sid='+ASM1';

[grid@rac1 ~]$ alter system set cluster_interconnects = '172.16.20.2' scope=spfile sid='+ASM2';


# 节点1重启 crs 使心跳参数生效

[root@rac1~]# /u01/app/11.2.0/grid/bin/crsctl stop crs

[root@rac1~]# /u01/app/11.2.0/grid/bin/crsctl start crs


# 节点1 crs 启动成功后,节点2再执行 root.sh 脚本

[root@rac2~]# /u01/app/11.2.0/grid/root.sh


执行后续脚本,进行相关配置

这一步包括监听的配置

[grid@rac1 ~]$ /u01/app/11.2.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILE=/home/grid/grid.rsp


安装数据库软件

编辑响应文件

[oracle@rac1 ~]$ cat <<EOF >>db.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0

oracle.install.option=INSTALL_DB_SWONLY

ORACLE_HOSTNAME=rac1

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/u01/app/oracle/oraInventory

SELECTED_LANGUAGES=en

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

ORACLE_BASE=/u01/app/oracle/

oracle.install.db.InstallEdition=EE

oracle.install.db.EEOptionsSelection=false

oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=oper

oracle.install.db.CLUSTER_NODES=rac1,rac2

oracle.install.db.isRACOneInstall=false

oracle.install.db.racOneServiceName=

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

oracle.install.db.config.starterdb.globalDBName=

oracle.install.db.config.starterdb.SID=

oracle.install.db.config.starterdb.characterSet=AL32UTF8

oracle.install.db.config.starterdb.memoryOption=false

oracle.install.db.config.starterdb.memoryLimit=

oracle.install.db.config.starterdb.installExampleSchemas=false

oracle.install.db.config.starterdb.enableSecuritySettings=true

oracle.install.db.config.starterdb.password.ALL=

oracle.install.db.config.starterdb.password.SYS=

oracle.install.db.config.starterdb.password.SYSTEM=

oracle.install.db.config.starterdb.password.SYSMAN=

oracle.install.db.config.starterdb.password.DBSNMP=

oracle.install.db.config.starterdb.control=DB_CONTROL

oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=

oracle.install.db.config.starterdb.automatedBackup.enable=false

oracle.install.db.config.starterdb.automatedBackup.osuid=

oracle.install.db.config.starterdb.automatedBackup.ospwd=

oracle.install.db.config.starterdb.storageType=

oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=

oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=

oracle.install.db.config.asm.diskGroup=

oracle.install.db.config.asm.ASMSNMPPassword=

MYORACLESUPPORT_USERNAME=

MYORACLESUPPORT_PASSWORD=

SECURITY_UPDATES_VIA_MYORACLESUPPORT=false

DECLINE_SECURITY_UPDATES=true

PROXY_HOST=

PROXY_PORT=

PROXY_USER=

PROXY_PWD=

PROXY_REALM=

COLLECTOR_SUPPORTHUB_URL=

oracle.installer.autoupdates.option=SKIP_UPDATES

oracle.installer.autoupdates.downloadUpdatesLoc=

AUTOUPDATES_MYORACLESUPPORT_USERNAME=

AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

EOF


静默安装

[oracle@rac1 ~]$ /u01/soft/database/runInstaller -ignorePrereq -force -silent -responseFile /home/oracle/db.rsp -showProgress


执行 root 脚本

[root@rac1~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh


[root@rac2~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh



安装 oracle 补丁(2个节点)

su - oracle


# 升级 OPatch

cd $ORACLE_HOME

mv OPatch/ OPatch.bak


cd /u01/soft

unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME


# 解压补丁

unzip p19692824_112040_Linux-x86-64.zip


# 安装补丁,提示的时候输入 y,安装完成时提示 OPatch Session completed with warnings,忽略即可。

cd 19692824/

$ORACLE_HOME/OPatch/opatch apply


# 查询已安装补丁

$ORACLE_HOME/OPatch/opatch lsinventory


创建 ASM 磁盘组

节点1创建磁盘组

su - grid


sqlplus / as sysasm

create diskgroup DATA external redundancy disk '/dev/oracleasm/disks/DATA' attribute 'compatible.asm' = '11.2';

create diskgroup ARCH external redundancy disk '/dev/oracleasm/disks/ARCH' attribute 'compatible.asm' = '11.2';


节点2挂载

su - grid


sqlplus / as sysasm

alter diskgroup DATA mount;

alter diskgroup ARCH mount;


创建实例

编辑响应文件

[oracle@rac1 ~]$ cat <<EOF >>dbca.rsp

[GENERAL]

RESPONSEFILE_VERSION = "11.2.0"

OPERATION_TYPE = "createDatabase"

[CREATEDATABASE]

GDBNAME=orcl

SID=orcl

NODELIST=rac1,rac2

TEMPLATENAME = /u01/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc

SYSPASSWORD = oracle

SYSTEMPASSWORD = oracle

DATAFILEDESTINATION = +DATA

STORAGETYPE=ASM

DISKGROUPNAME=DATA

CHARACTERSET = "AL32UTF8"

TOTALMEMORY = "20480"

EOF


静默安装

静默安装

[oracle@rac1 ~]$ dbca -silent -responseFile /home/oracle/dbca.rsp


安装完后只有 orcl2 启动,orcl1 未启动,需修改心跳

[oracle@rac2 ~]$ sqlplus / as sysdba

SQL> alter system set cluster_interconnects = '172.16.20.1' scope=spfile sid='orcl1';

SQL> alter system set cluster_interconnects = '172.16.20.2' scope=spfile sid='orcl2';


重启 db

[oracle@rac2 ~]$ srvctl stop database -d orcl

[oracle@rac2 ~]$ srvctl start database -d orcl


优化

修改 processes

[oracle@rac1 ~]$ sqlplus / as sysdba

SQL> alter system set processes=1000 scope=spfile sid='*';


修改 redo 大小和组数

单个 redo 文件2G

1、2、3、4、5组属于 thread1

6、7、8、9、10组属于 thread2


select a.group#,a.bytes/1024/1024 M,a.status,a.thread#,a.sequence#,a.archived,b.member from v$log a,v$logfile b where a.group#=b.group#;

--默认1、2组属于thread 1,3、4组属于thread 2


alter database add logfile thread 2 group 6 '+DATA/orcl/onlinelog/redo06.log' size 2G;

alter database add logfile thread 2 group 7 '+DATA/orcl/onlinelog/redo07.log' size 2G;

alter database add logfile thread 2 group 8 '+DATA/orcl/onlinelog/redo08.log' size 2G;

alter database add logfile thread 2 group 9 '+DATA/orcl/onlinelog/redo09.log' size 2G;

alter database add logfile thread 2 group 10 '+DATA/orcl/onlinelog/redo10.log' size 2G;


alter database drop logfile group 4;

alter database drop logfile group 3;

alter database drop logfile group 2;

alter database drop logfile group 1;


alter database add logfile thread 1 group 5 '+DATA/orcl/onlinelog/redo05.log' size 2G;

alter database add logfile thread 1 group 4 '+DATA/orcl/onlinelog/redo04.log' size 2G;

alter database add logfile thread 1 group 3 '+DATA/orcl/onlinelog/redo03.log' size 2G;

alter database add logfile thread 1 group 2 '+DATA/orcl/onlinelog/redo02.log' size 2G;

alter database add logfile thread 1 group 1 '+DATA/orcl/onlinelog/redo01.log' size 2G;


开启归档

[grid@rac1 ~]$ asmcmd

ASMCMD> cd arch

ASMCMD> mkdir archive


[oracle@rac1 ~]$ sqlplus / as sysdba

SQL> alter system set log_archive_dest_1='location=+ARCH/archive' sid='*';


[oracle@rac1 ~]$ srvctl stop database -d orcl

[oracle@rac1 ~]$ srvctl start instance -d orcl -i orcl1 -o mount

[oracle@rac1 ~]$ sqlplus / as sysdba

SQL> alter database archivelog;

SQL> alter database open;


[oracle@rac1 ~]$ srvctl start instance -d orcl -i orcl2

查看集群资源状态

[grid@rac1 ~]$ crsctl status res -t

--------------------------------------------------------------------------------

NAME TARGET STATE SERVER STATE_DETAILS

--------------------------------------------------------------------------------

Local Resources

--------------------------------------------------------------------------------

ora.ARCH.dg

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.DATA.dg

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.LISTENER.lsnr

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.OCR.dg

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.asm

ONLINE ONLINE rac1 Started

ONLINE ONLINE rac2 Started

ora.gsd

OFFLINE OFFLINE rac1

OFFLINE OFFLINE rac2

ora.net1.network

ONLINE ONLINE rac1

ONLINE ONLINE rac2

ora.ons

ONLINE ONLINE rac1

ONLINE ONLINE rac2

--------------------------------------------------------------------------------

Cluster Resources

--------------------------------------------------------------------------------

ora.LISTENER_SCAN1.lsnr

1 ONLINE ONLINE rac1

ora.cvu

1 ONLINE ONLINE rac1

ora.oc4j

1 ONLINE ONLINE rac1

ora.orcl.db

1 ONLINE ONLINE rac1 Open

2 ONLINE ONLINE rac2 Open

ora.rac1.vip

1 ONLINE ONLINE rac1

ora.rac2.vip

1 ONLINE ONLINE rac2

ora.scan1.vip

1 ONLINE ONLINE rac1


后期共享磁盘扩容

创建20G共享磁盘并挂载

阿里云ESSD RAC11g搭建_阿里云_08

查看磁盘是否已可见

nvme7n1 即新添加的共享磁盘

[root@rac1 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

nvme0n1 259:10 0 40G 0 disk

└─nvme0n1p1 259:12 0 40G 0 part /

nvme1n1 259:5 0 100G 0 disk /u01

nvme2n1 259:4 0 300G 0 disk

└─nvme2n1p1 259:7 0 300G 0 part

nvme3n1 259:9 0 20G 0 disk

└─nvme3n1p1 259:11 0 20G 0 part

nvme4n1 259:6 0 20G 0 disk

└─nvme4n1p1 259:8 0 20G 0 part

nvme5n1 259:1 0 20G 0 disk

└─nvme5n1p1 259:3 0 20G 0 part

nvme6n1 259:0 0 100G 0 disk

└─nvme6n1p1 259:2 0 100G 0 part

nvme7n1 259:13 0 20G 0 disk


[root@rac2 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

nvme0n1 259:0 0 40G 0 disk

└─nvme0n1p1 259:1 0 40G 0 part /

nvme1n1 259:4 0 100G 0 disk /u01

nvme2n1 259:2 0 20G 0 disk

└─nvme2n1p1 259:8 0 20G 0 part

nvme3n1 259:7 0 20G 0 disk

└─nvme3n1p1 259:11 0 20G 0 part

nvme4n1 259:3 0 20G 0 disk

└─nvme4n1p1 259:9 0 20G 0 part

nvme5n1 259:6 0 100G 0 disk

└─nvme5n1p1 259:12 0 100G 0 part

nvme6n1 259:5 0 300G 0 disk

└─nvme6n1p1 259:10 0 300G 0 part

nvme7n1 259:13 0 20G 0 disk

磁盘分区

# 在节点1上磁盘分区

[root@rac1 ~]# fdisk /dev/nvme7n1

Welcome to fdisk (util-linux 2.23.2).


Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.


Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0x3360417a.


Command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1):

First sector (2048-41943039, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):

Using default value 41943039

Partition 1 of type Linux and of size 20 GiB is set


Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.

Syncing disks.


# 节点1查看分区结果

[root@rac1 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

nvme0n1 259:10 0 40G 0 disk

└─nvme0n1p1 259:12 0 40G 0 part /

nvme1n1 259:5 0 100G 0 disk /u01

nvme2n1 259:4 0 300G 0 disk

└─nvme2n1p1 259:7 0 300G 0 part

nvme3n1 259:9 0 20G 0 disk

└─nvme3n1p1 259:11 0 20G 0 part

nvme4n1 259:6 0 20G 0 disk

└─nvme4n1p1 259:8 0 20G 0 part

nvme5n1 259:1 0 20G 0 disk

└─nvme5n1p1 259:3 0 20G 0 part

nvme6n1 259:0 0 100G 0 disk

└─nvme6n1p1 259:2 0 100G 0 part

nvme7n1 259:13 0 20G 0 disk

└─nvme7n1p1 259:14 0 20G 0 part


# 节点2查看分区结果如果未更新使用 partprobe 命令重读分区表

[root@rac2 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

nvme0n1 259:0 0 40G 0 disk

└─nvme0n1p1 259:1 0 40G 0 part /

nvme1n1 259:4 0 100G 0 disk /u01

nvme2n1 259:2 0 20G 0 disk

└─nvme2n1p1 259:8 0 20G 0 part

nvme3n1 259:7 0 20G 0 disk

└─nvme3n1p1 259:11 0 20G 0 part

nvme4n1 259:3 0 20G 0 disk

└─nvme4n1p1 259:9 0 20G 0 part

nvme5n1 259:6 0 100G 0 disk

└─nvme5n1p1 259:12 0 100G 0 part

nvme6n1 259:5 0 300G 0 disk

└─nvme6n1p1 259:10 0 300G 0 part

nvme7n1 259:13 0 20G 0 disk

└─nvme7n1p1 259:14 0 20G 0 part

创建 ASM 磁盘

# 节点1创建ASM磁盘

[root@rac1 ~]# oracleasm createdisk DATA1 /dev/nvme7n1p1

Writing disk header: done

Instantiating disk: done


# 节点1查看创建结果

[root@rac1 ~]# oracleasm listdisks

ARCH

DATA

DATA1

OCR1

OCR2

OCR3


# 节点2查看创建结果

[root@rac2 ~]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

Instantiating disk "DATA1"

[root@rac2 ~]# oracleasm listdisks

ARCH

DATA

DATA1

OCR1

OCR2

OCR3

创建 ASM 磁盘组

# 节点1创建磁盘组

su - grid

sqlplus / as sysasm

create diskgroup DATA1 external redundancy disk '/dev/oracleasm/disks/DATA1' attribute 'compatible.asm' = '11.2';


# 节点2挂载

su - grid

sqlplus / as sysasm

alter diskgroup DATA1 mount;


举报

相关推荐

0 条评论