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.![在这里插入图片描述](https://img-blog.csdnimg.cn/d83f5034cdbe4d50bf6b506e0615005a.png)
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;