Oracle搭建rac-adg。详细教程-适合小白

d1.基本操作

1.1 划分虚拟机区域

主库、备库、单实例adg存放目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上便是我虚拟机以及共享磁盘存放目录

1.2建立共享盘
1.2.1主库
打开windows自带软件 Windows PowerShell ,管理员身份打开
打开后进入到VMware软件所在位置 
我的软件安装在d:需要安装的软件/嵌入式这个目录中

在这里插入图片描述

开始创建共享磁盘

./vmware-vdiskmanager -c -s 10Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac\disk\data01.vmdk"
./vmware-vdiskmanager -c -s 5Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac\disk\fra01.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac\disk\clus01.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac\disk\clus02.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac\disk\clus03.vmdk"
1.2.2备库
开始创建共享磁盘

./vmware-vdiskmanager -c -s 10Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac-1\disk\data01.vmdk"
./vmware-vdiskmanager -c -s 5Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac-1\disk\fra01.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac-1\disk\clus01.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac-1\disk\clus02.vmdk"
./vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "D:\11g-adg\11g-rac-1\disk\clus03.vmdk"
./vmware-vdiskmanager -c -s 30Gb -a lsilogic -t 6 "C:\11g-adg\11g-rac\disk\data01.vmdk"
1.3虚拟机安装

镜像选择Oracle-Linux-7.9

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进入之后选择安装,回车

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置静态ip
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置root密码

我设置为123456

安装成功

1.4 ip地址规划

本次两个网卡

第一个网卡配置信息如下

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=10.0.0.11
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5

第二个网卡配置如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=172.0.0.11
PREFIX=24
DNS1=223.5.5.5
GATEWAY=172.0.0.1

第二张网卡和安装时不一致,因为网关需要和虚拟网络配置的一样。故修改

虚拟网络编辑器中,我的网关设置为10.0.0.2 和172.0.0.1,需要和你自己的一致。

除此,还需要规划vip和scan-ip

只是规划,还未使用

这是我主库ip规划

10.0.0.11 rac1
10.0.0.12 rac2
172.0.0.11 priv1
172.0.0.12 priv2
10.0.0.13 vip1
10.0.0.14 vip2
10.0.0.10 scan-ip

备库ip规划

10.0.0.21 rac1
10.0.0.22 rac2
172.0.0.21 priv1
172.0.0.22 priv2
10.0.0.23 vip1
10.0.0.24 vip2
10.0.0.20 scan-ip

单实例adg ip规划

10.0.0.30
1.5 配置hosts
vim /etc/hosts

10.0.0.11 rac1
10.0.0.12 rac2
172.0.0.11 priv1
172.0.0.12 priv2
10.0.0.13 vip1
10.0.0.14 vip2
10.0.0.10 scan-ip
1.6 关闭防火墙
systemctl disable --now firewalld.service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ZKgQVHi-1692582179026)(assets/1690879154795.png)]

1.7 修改SElinux
vim /etc/selinux/config
SELINUX=disabled
 #将selinux修改成不可使用
保存退出
setenforce 0 修改会话中selinux的值
1.8 配置yum 源
cd /etc/yum.repos.d/
mkdir bak
mv * bak

vim local.repo

[local]
name=app
baseurl=file:///mnt
enabled=1
gpgcheck=0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VSCt2KSY-1692582179026)(assets/1690879802153.png)]

虚拟机连接镜像

mount /dev/sr0 /mnt
yum makecache

1.9依赖包以及Oracle预安装包
yum install oracle-database-preinstall-19c
yum install gcc gcc-c++ elfutils-libelf-devel iotop tigervnc-server

1、会自动安装依赖的rpm
2、会自动修改/etc/sysctl.conf 
3、会自动添加/etc/security/limits.d/oracle-database-preinstall-19c.conf
4、会自动关闭透明大页、NUMA
5、会自动创建oracle用户和oinstall组
1.10 内核参数调整
#修改/etc/sysctl.conf中的fs.aio-max-nr为3145728
vi /etc/sysctl.conf
fs.aio-max-nr=3145728

systcl -p

#修改/etc/security/limits.d/oracle-database-preinstall-19c.conf中的soft nofile为65536
vi /etc/security/limits.d/oracle-database-preinstall-19c.conf
oracle soft nofile 65536
oracle soft memlock -1
oracle hard memlock -1
1.11补充创建grid用户和相关用户组
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin

usermod -a -G asmdba oracle
useradd -u 54331 -g oinstall -G dba,asmadmin,asmdba,asmoper,racdba grid

echo 123456 | passwd oracle --stdin
echo 123456 | passwd grid --stdin
1.12 补充添加grid用户资源限制配置
cat << ! >> /etc/security/limits.d/oracle-database*.conf
grid soft nproc 65536
grid soft nofile 65536
grid soft stack -1
grid hard nproc 65536
grid hard nofile 65536
grid hard stack -1
!
1.13 补充内核参数配置
cat << ! >> /etc/sysctl.conf
$(free|grep Mem|awk '{if($2/1024/1024>29)print "vm.nr_hugepages = "int($2/1024*0.4*0.8/2)}')
$(free|grep Mem|awk '{print "vm.min_free_kbytes = "int($2/1000*4)}')
kernel.randomize_va_space = 0
!
sysctl -p
1.14 建立目录
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
mkdir /u01/install
chmod -R 775 /u01/
1.15 环境变量配置
cat<<! >>/home/oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export GRID_HOME=/u01/app/11.2.0/grid
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$GRID_HOME/bin:\$PATH
export ORACLE_SID=orcl1
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
export TZ='Asia/Shanghai'
alias sql='sqlplus / as sysdba'
alias csr='crsctl stat res -t'
alias csri='crsctl stat res -t -init'
export DISPLAY=10.0.0.1:0.0
set -o vi
export EDITOR=vi
!

cat<<! >>/home/grid/.bash_profile
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
export ORACLE_SID=+ASM1
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
export TZ='Asia/Shanghai'
alias sql='sqlplus / as sysasm'
alias csr='crsctl stat res -t'
alias csri='crsctl stat res -t -init'
export DISPLAY=10.0.0.1:0.0
set -o vi
export EDITOR=vi
!

cat<<! >>/root/.bash_profile
export PATH=/u01/app/11.2.0/grid/bin:\$PATH:\$HOME/bin
!


cat<<! >>/etc/profile
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias csr='crsctl stat res -t'
alias csri='crsctl stat res -t -init'
set -o vi
export EDITOR=vi
!
1.16克隆虚拟机
关机,克隆虚拟机,取名为rac1-1、rac2、rac2-2

启动rac2,修改ip 10.0.0.12和172.0.0.12

切换oracle用户
修改实例名
orcl2

vim .bash_profile
ORACLE_SID=orcl2

修改主机名 
hostnamectl set-hostname rac2
1.17 添加共享盘信息
disk.EnableUUID="TRUE"
scsi1.shared = "TRUE"
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize= "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsil.sharedBus = "VIRTUAL"
scsi1:0.present = "TRUE"
scsi1:0.mode = "independent-persistent"
scsi1:0.fileName = "D:\11g-adg\11g-rac\disk\data01.vmdk"
scsi1:0.deviceType = "disk"
scsi1:0.redo = ""
scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.fileName = "D:\11g-adg\11g-rac\disk\fra01.vmdk"
scsi1:1.deviceType = "disk"
scsi1:1.redo = ""
scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.fileName = "D:\11g-adg\11g-rac\disk\clus01.vmdk"
scsi1:2.deviceType = "disk"
scsi1:2.redo = ""
scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.fileName = "D:\11g-adg\11g-rac\disk\clus02.vmdk"
scsi1:3.deviceType = "disk"
scsi1:3.redo = ""
scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.fileName = "D:\11g-adg\11g-rac\disk\clus03.vmdk"
scsi1:4.deviceType = "disk"
scsi1:4.redo = ""
1.18udev配置
for disk in `ls /dev/sd*`
                  do
                    echo $disk
                    /usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=$disk
                  done

添加信息

vim /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c2929fae26308b80cb52630fb619", SYMLINK+="asm-data01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c2930976cabb656367d1a1bf769e", SYMLINK+="asm-fra01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c296df780b9c74e41554d43091e3", SYMLINK+="asm-clus01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c29749235922d26499ae34ffa7f0", SYMLINK+="asm-clus02", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c2964d0dafc012b68612dde8dc21", SYMLINK+="asm-clus03", OWNER="grid", GROUP="asmadmin", MODE="0660"
udevadm trigger
扫描识别
ll /dev/asm*
查看是否识别成功

2.安装grid

2.1上传grid包
su - grid
cd /u01
mkdir install
cd install

上传grid包

在这里插入图片描述

2.2解压
unzip p13390677_112040_Linux-x86-64_3of7.zip -d $ORACLE_HOME 
unzip p13390677_112040_Linux-x86-64_2of7.zip -d $ORACLE_HOME
2.3 安装
打开Xmanager-Passive

在这里插入图片描述

设置display
export DISPLAY=10.0.0.1:0.0
进入解压目录
cd /u01/app/11.2.0/grid/grid
./runInstall
1.
2.

在这里插入图片描述

3.

]

4.

在这里插入图片描述

5.

在这里插入图片描述

6.

在这里插入图片描述
在这里插入图片描述

7.

在这里插入图片描述

8.

在这里插入图片描述

9.

在这里插入图片描述

10

在这里插入图片描述

统一密码:123456
在这里插入图片描述

yes

11.

在这里插入图片描述

12.

在这里插入图片描述

13.

在这里插入图片描述

14.

在这里插入图片描述

su - root
yum install -y gcc*
yum install -y compat-libstdc++*
yum install -y  elfutils-libelf*


在这里插入图片描述
在这里插入图片描述

/tmp/CVU_11.2.0.4.0_grid/runfixup.sh

在这里插入图片描述

点击忽略,继续安装

在这里插入图片描述

15.

在这里插入图片描述

16.

在这里插入图片描述

在这里插入图片描述

输入脚本
/u01/app/oraInventory/orainstRoot.sh
/u01/app/11.2.0/grid/root.sh
输入第二个脚本遇见错误

Adding Clusterware entries to inittab
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
原因:
linux 7 使用的是 systemd,而root.sh 是使用initd 来运行ohasd进程
需要做一些简单修改
root用户创建服务文件

touch /usr/lib/systemd/system/ohas.service;
chmod 777 /usr/lib/systemd/system/ohas.service;
vim /usr/lib/systemd/system/ohas.service
i
[Unit]
Description=Oracle High Availability Services
After=syslog.target

[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always

[Install]
WantedBy=multi-user.target


启用服务

# systemctl daemon-reload;
systemctl enable ohas.service;
systemctl start ohas.service;
systemctl status ohas.service;
再次执行root.sh 脚本

在这里插入图片描述

安装完成

3.安装oracle

3.1上传软件

在这里插入图片描述

3.2解压
unzip p13390677_112040_Linux-x86-64_1of7.zip 
unzip p13390677_112040_Linux-x86-64_2of7.zip 
3.3 开始安装
./runInstall
1.

在这里插入图片描述

2.

在这里插入图片描述

3.

在这里插入图片描述

4.在这里插入图片描述
5.

在这里插入图片描述

6.

在这里插入图片描述

7.

在这里插入图片描述

8.

在这里插入图片描述

9.

在这里插入图片描述

10.

在这里插入图片描述

11.

在这里插入图片描述

报错

Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'. See '/u01/app/oraInventory/logs/installActions2023-08-03_05-54-20PM.log' for details.

linux7 安装oracle11g会出现此错误

解决方案

新建窗口
cd $ORACLE_HOME/sysman/lib
 cp ins_emagent.mk ins_emagent.mk.bak
 vim ins_emagent.mk
 进入vi编辑器后  命令模式输入/NMECTL 进行查找,快速定位要修改的行
在后面追加参数-lnnz11        第一个是字母l   后面两个是数字1

返回点击Retty

在这里插入图片描述

12.

在这里插入图片描述

安装完成

3.4 创建磁盘组
su - grid
asmca

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.5 打补丁
su - root
上传补丁包
p31718723_112040_Linux-x86-64.zip
上传补丁工具
p6880880_112000_Linux-x86-64.zip

解压补丁工具
chown grid:oinstall p6880880_112000_Linux-x86-64.zip
su - grid
cd /u01/install
unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME

su - root
cd /u01/install
chown oracle:oinstall p6880880_112000_Linux-x86-64.zip
su - oracle
cd /u01/install
unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME

解压补丁包

unzip p31718723_112040_Linux-x86-64.zip #解压到当前
chown grid:oinstall 31718723/ -R

打grid补丁

/u01/app/11.2.0/grid/OPatch/opatch auto 31718723 -oh /u01/app/11.2.0/grid

打oracle补丁

chown oracle:oinstall 31718723/ -R
/u01/app/oracle/product/11.2.0/db_1/OPatch/opatch auto 31718723 -oh /u01/app/oracle/product/11.2.0/db_1

两节点都需要进行打补丁

rac1打完后,对rac2进行打补丁

3.6 安装数据库实例
su - oracle
export DISPLAY=10.0.0.1:0.0
dbca

1.

在这里插入图片描述

2.

在这里插入图片描述

3.

在这里插入图片描述

4.

在这里插入图片描述

5.

在这里插入图片描述

6.

在这里插入图片描述

7.

在这里插入图片描述

8.

在这里插入图片描述

9.

在这里插入图片描述

10

在这里插入图片描述

11.

在这里插入图片描述

12.

在这里插入图片描述

13.

在这里插入图片描述

14.

在这里插入图片描述

3.7检查集群状态
#检查集群状态
su - grid
crsctl status res -t

su - oracle
sqlplus / as sysdba

#检查操作系统的多路径情况
su - root
multipath -ll
tail -2000 /var/log/messages|less

#检查字符集是否正确(UTF8)
select userenv('language') from dual;

#操作系统层面检查内存大页使用情况
cat /proc/meminfo |grep HugePages

#检查时区是否正常
su - oracle
sqlplus / as sysdba
select sysdate from dual;
exit
su - grid
cd $GRID_HOME/crs/install/
cat s_crsconfig_cbsdb3_env.txt |grep TZ     -----时区需要是TZ=Asia/Shanghai
3.8 调整参数
su - oracle
sqlplus / as sysdba
alter database force logging;
alter system set db_recovery_file_dest='+FRA' scope=both sid='*';
alter system set db_recovery_file_dest_size=10G scope=both sid='*';
alter profile default limit password_life_time unlimited;
alter profile default limit failed_login_attempts unlimited;
exit
srvctl stop database -d orcl
srvctl start database -d orcl

#开启归档
su - oracle
srvctl stop database -d orcl
sqlplus / as sysdba
startup mount;
alter database archivelog;

archive log list;   #查看归档
shutdown immediate;
exit
srvctl start database -d orcl
3.9配置集群服务
srvctl add database -d <database name> [-m domain_name] -o <ORACLE_HOME path> -p <spfile location and name>

srvctl add instance -d <database name> -i <instance 1 name> -n <node 1 name >

srvctl add instance -d <database name> -i <instance 2 name> -n <node 2 name >

srvctl add database -d orcl -o /u01/app/oracle/product/11.2.0/db_1
srvctl add instance -d orcl -i orcl1 -n rac1 
srvctl add instance -d orcl -i orcl2 -n rac2

以上三条可能已经添加
3.10 修改rman配置
su - oracle
rman target /
configure controlfile autobackup off;
configure snapshot controlfile name to '+data/ORCL/snapcf.f';
3.11 配置standby日志(主库)
创建主库standby日志文件,每个实例的组数要比logfile多一组
select * from v$log;
alter database add standby logfile thread 1 size 500m;
alter database add standby logfile thread 1 size 500m;
alter database add standby logfile thread 2 size 500m;
alter database add standby logfile thread 2 size 500m;

4.建立备库

4.1 添加共享盘到虚拟机

disk.EnableUUID="TRUE"
scsi1.shared = "TRUE"
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize= "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsil.sharedBus = "VIRTUAL"
scsi1:0.present = "TRUE"
scsi1:0.mode = "independent-persistent"
scsi1:0.fileName = "D:\11g-adg\11g-rac-1\disk\data01.vmdk"
scsi1:0.deviceType = "disk"
scsi1:0.redo = ""
scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.fileName = "D:\11g-adg\11g-rac-1\disk\fra01.vmdk"
scsi1:1.deviceType = "disk"
scsi1:1.redo = ""
scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.fileName = "D:\11g-adg\11g-rac-1\disk\clus01.vmdk"
scsi1:2.deviceType = "disk"
scsi1:2.redo = ""
scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.fileName = "D:\11g-adg\11g-rac-1\disk\clus02.vmdk"
scsi1:3.deviceType = "disk"
scsi1:3.redo = ""
scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.fileName = "D:\11g-adg\11g-rac-1\disk\clus03.vmdk"
scsi1:4.deviceType = "disk"
scsi1:4.redo = ""

4.2 配置网络

vim /etc/hosts

10.0.0.21 rac1
10.0.0.22 rac2
172.0.0.21 priv1
172.0.0.22 priv2
10.0.0.23 vip1
10.0.0.24 vip2
10.0.0.20 scan-ip
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=10.0.0.21
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=172.0.0.21
PREFIX=24
DNS1=223.5.5.5
GATEWAY=172.0.0.1

4.3 识别共享盘,udev配置

for disk in `ls /dev/sd*`
                  do
                    echo $disk
                    /usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=$disk
                  done
vim /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c2917faa72b7dc8b9f85fe22afe7", SYMLINK+="asm-data01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c2923e1e1d95cb752e807318c743", SYMLINK+="asm-fra01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c292364338cf71469de63b976f33", SYMLINK+="asm-clus01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c2962b132345e4ea0f4fff33970e", SYMLINK+="asm-clus02", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="36000c2995f2a0931dedc55f805a43ee6", SYMLINK+="asm-clus03", OWNER="grid", GROUP="asmadmin", MODE="0660"

4.4安装grid

略,和主库一样

4.5 安装oracle软件

略,和主库一样

4.6打补丁

su - root
上传补丁包
p31718723_112040_Linux-x86-64.zip
上传补丁工具
p6880880_112000_Linux-x86-64.zip

解压补丁工具
chown grid:oinstall p6880880_112000_Linux-x86-64.zip
su - grid
cd /u01/install
unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME

su - root
cd /u01/install
chown oracle:oinstall p6880880_112000_Linux-x86-64.zip
su - oracle
cd /u01/install
unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME

解压补丁包
unzip p31718723_112040_Linux-x86-64.zip #解压到当前
chown grid:oinstall 31718723/ -R
打grid补丁
/u01/app/11.2.0/grid/OPatch/opatch auto 31718723 -oh /u01/app/11.2.0/grid
打oracle补丁
chown oracle:oinstall 31718723/ -R
/u01/app/oracle/product/11.2.0/db_1/OPatch/opatch auto 31718723 -oh /u01/app/oracle/product/11.2.0/db_1

目前主库备库都已经建立好了。

5.搭建adg

5.1 打开归档和强制日志

1.确保主库为归档模式
2.配置主库强制写日志(至关重要)
alter database force logging;

5.2 配置standby日志(主库)

创建主库standby日志文件,每个实例的组数要比logfile多一组

select * from v$log;
alter database add standby logfile thread 1 size 500m;
alter database add standby logfile thread 1 size 500m;
alter database add standby logfile thread 2 size 500m;
alter database add standby logfile thread 2 size 500m;

5.3在备库每个节点创建审计日志目录

mkdir -p /u01/app/oracle/admin/orcl/adump

5.4 配置listener

在主库、备库每个节点配置grid的listener.ora
以主库节点1为例,其中GLOBAL_DBNAME配置为db_unique_name,SID_NAME配置为该节点ORACLE_SID
su - grid
vi $ORACLE_HOME/network/admin/listener.ora
添加:
主
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC = 
     (GLOBAL_DBNAME = orcl)
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
     (SID_NAME = orcl1)
    )
    (SID_DESC = 
     (GLOBAL_DBNAME = orcl_DGMGRL)
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
     (SID_NAME = orcl1)
    )
   )
   
 备
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC = 
     (GLOBAL_DBNAME = orcl_yzg)
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
     (SID_NAME = orcl1)
    )
    (SID_DESC = 
     (GLOBAL_DBNAME = orcl_yzg_DGMGRL)
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
     (SID_NAME = orcl1)
    )
   )
   
#重启监听
srvctl stop listener
srvctl start listener

5.5配置TNSNAMES(主备库)

在主库、备库每个节点配置oracle的tnsnames.ora
其中host配置为VIP,service_name配置为listener.ora文件中的GLOBAL_DBNAME
su - oracle
cd $ORACLE_HOME/network/admin
cp tnsnames.ora tnsnames.ora.bak
vim tnsnames.ora
ORCL_JWH =
  (description =
    (address_list =
      (address = (protocol = tcp)(host = 10.0.0.11)(port = 1521))
      (address = (protocol = tcp)(host = 10.0.0.12)(port = 1521))
      (address = (protocol = tcp)(host = 10.0.0.13)(port = 1521))
      (address = (protocol = tcp)(host = 10.0.0.14)(port = 1521))
    )
    (connect_data =
      (server=dedicated)
      (service_name = orcl)
    )
  )

ORCL_YZG =
  (description =
    (address_list =
      (address = (protocol = tcp)(host = 10.0.0.21)(port = 1521))
      (address = (protocol = tcp)(host = 10.0.0.22)(port = 1521))
      (address = (protocol = tcp)(host = 10.0.0.23)(port = 1521))
      (address = (protocol = tcp)(host = 10.0.0.24)(port = 1521))
    )
    (connect_data =
      (server=dedicated)
      (service_name = orcl_yzg)
    )
  )

5.6配置数据库ADG参数

主库配置如下:

su - oracle
sqlplus / as sysdba
alter system set log_archive_config='dg_config=(orcl,orcl_yzg)';
alter system set log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles)';
alter system set standby_file_management='AUTO' scope=spfile;
alter system set fal_server='orcl_yzg';
alter system set dg_broker_config_file1='+data/dr1orcldb.dat' scope=spfile ;
alter system set dg_broker_config_file2='+data/dr2orcldb.dat' scope=spfile  ;
alter system set dg_broker_start=true;


配置备库参数

主库:
create pfile = '/tmp/pf' from spfile;
exit
scp /tmp/pf  10.0.0.21:/tmp
备库:
vi /tmp/pf
增加
db_unique_name='orcl_yzg'
修改fal_server='orcl'



注:
1.检查以下参数是否配置正确
db_name=
service_names=
compatible='11.2.0' #注意主备库一致
db_recovery_file_dest_size=
db_recovery_file_dest='+FRA'
db_create_file_dest='+DATA'
sga_target=
pga_aggregate_target=
open_cursors=
diagnostic_dest='/u01/app/oracle'
cluster_database=true
orcl1.instance_name=
orcl2.instance_name=
orcl1.instance_number=1
orcl2.instance_number=2
orcl1.undo_tablespace=UNDOTBS1
orcl2.undo_tablespace=UNDOTBS2

5.7 添加备库数据库服务

在备库节点1执行
su - oracle
srvctl add database -d orcl_yzg -o $ORACLE_HOME -r physical_standby -a "DATA,FRA" -s open
srvctl add instance -d orcl_yzg -i orcl1 -n rac1
srvctl add instance -d orcl_yzg -i orcl2 -n rac2

配置备库参数文件

alter diskgroup FRA mount;
alter diskgroup DATA mount;

su - oracle
sqlplus / as sysdba
startup nomount pfile='/tmp/pf';
create spfile='+DATA' from pfile='/tmp/pf';
shutdown abort;
startup nomount;
show parameter spfile;
exit
srvctl modify database -d orcl_yzg -p +DATA/spfileorcl.ora
srvctl config database -d orcl_yzg


create spfile from pfile

中途可能会有DATA盘有问题的错误,只是Oracle执行文件属组和权限不对。

oracle:
chown oracle:asmadmin /u01/app/oracle/product/dnhome/bin/oracle
chmod 6751 u01/app/oracle/product/dnhome/bin/oracle

grid:
chwon grid:oinstall /u01/app/11.2.0/grid/bin/oracle
chmod 6751 /u01/app/11.2.0/grid/bin/oracle

5.8 配置备库密码文件

su - oracle
cd $ORACLE_HOME/dbs
scp orapworcl1 10.0.0.21:/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl1
scp orapworcl1 10.0.0.22:/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl2

5.9 开始同步

1.启动备库到nomount模式
srvctl start instance -d orcl_yzg -i orcl1 -o nomount
2.暂停主库备份归档日志的自动任务
3.复制主库数据到备库
su - oracle
rman target sys/123456@orcl_jwh auxiliary sys/123456@orcl_yzg
duplicate target database for standby from active database nofilenamecheck;

5.10 部署Broker

1.检查参数
dg_broker_start
dg_broker_config_file1
dg_broker_config_file2

show parameter dg_broker;
2.部署broker
dgmgrl /
show configuration
create configuration dg as primary database is orcl connect identifier is orcl_jwh;
add database orcl_yzg as connect identifier is orcl_yzg;
enable configuration
3.检查状态
show configuration
show database verbose orcl_gsh

4.修改模式

edit database orcl_yzg set property LogXptMode='SYNC';
edit configuration set protection mode as MaxAvailability;

edit database orcl set property LogXptMode='SYNC';
上述检查均正常后,开始进行switchover切换
主库节点1:
su - oracle
dgmgrl sys/123456
show configuration;
show database verbose orcl_yzg;
switchover to orcl_yzg;
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Oracle 12c RAC(Real Application Clusters)和单机ADG(Active Data Guard)是两个独立的功能,可以用于提高数据库的可用性和容灾能力。 在Oracle 12c中,RAC允许将多个数据库实例运行在一个共享存储环境中,这些实例可以同时访问共享的数据文件。这样可以实现负载均衡和故障恢复的高可用性。通过RAC的集群架构,可以提供无中断的数据库服务,并且增加了系统的可扩展性。 ADGOracle提供的一种容灾解决方案,可以复制RAC集群上的数据库到另外一个地理位置的数据库服务器上,以保证在主数据库发生故障时,可以切换到备用数据库继续提供服务。使用ADG可以实现数据的冗余备份,并且备用数据库可以在物理或逻辑方式上与主数据库保持同步。 要在Oracle 12c中搭建RAC单机ADG,首先需要在RAC集群中部署主数据库和备用数据库实例。然后,在主数据库上启用ADG功能,并配置物理或逻辑数据保护。物理数据保护需要使用Data Guard进行备份和恢复,而逻辑数据保护使用GoldenGate进行数据同步。 配置ADG功能后,可以通过Data Guard Broker来管理主备数据库的切换和监控。当主数据库发生故障时,可以手动或自动执行切换操作,将备用数据库切换为主数据库继续提供服务。 总之,Oracle 12c RAC和单机ADG搭建是一项复杂的任务,需要了解Oracle集群和容灾技术,并且仔细配置和管理主备数据库。通过合理地使用这两个功能,可以提高数据库的可用性和容灾能力,确保业务的连续性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余佬学数据库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值