19C RAC CDB + DG
主机网络规划
| 网络配置 | 节点1 | 节点2 |
|---|---|---|
| 主机名称 | rac1 | rac2 |
| Public_IP | 192.168.189.211 | 192.168.189.212 |
| Private_IP | 10.10.10.211 | 10.10.10.212 |
| VIP | 192.168.189.213 | 192.168.189.214 |
| Scan_IP | 192.168.189.215 | 192.168.189.215 |
ESXI 创建共享磁盘
cd /vmfs/volumes/datastore1
mkdir wb_sharedisk
cd sharedisk
vmkfstools -c 10Gb -a lsilogic -d eagerzeroedthick /vmfs/volumes/datastore1/wb_sharedisk/asm1.vmdk
vmkfstools -c 10Gb -a lsilogic -d eagerzeroedthick /vmfs/volumes/datastore1/wb_sharedisk/asm2.vmdk
vmkfstools -c 10Gb -a lsilogic -d eagerzeroedthick /vmfs/volumes/datastore1/wb_sharedisk/asm3.vmdk
vmkfstools -c 10Gb -a lsilogic -d eagerzeroedthick /vmfs/volumes/datastore1/wb_sharedisk/asm4.vmdk
vmkfstools -c 10Gb -a lsilogic -d eagerzeroedthick /vmfs/volumes/datastore1/wb_sharedisk/asm5.vmdk
配置主机名
RAC1
hostnamectl set-hostname centos7-rac-1
RAC2
hostnamectl set-hostname centos7-rac-2
检查主机名和网络并且配置/etc/hosts文件
echo "
#Public_IP
192.168.8.20 Centos7-RAC1
192.168.8.21 Centos7-RAC2
#Private_IP
192.168.8.22 Centos7-RAC1-vip
192.168.8.23 Centos7-RAC2-vip
#VIP
10.10.10.1 Centos7-RAC1-priv
10.10.10.2 Centos7-RAC2-priv
#Scan_IP
192.168.8.24 Centos7-RAC-scan
#DG1
192.168.8.27 Centos7-DG" >> /etc/hosts
cat /etc/hosts
扩展SWAP内存
#RAC
mkdir /home/swap
dd if=/dev/zero of=/home/swap/swapfile bs=1024 count=33554432
mkswap /home/swap/swapfile
chmod 0600 /home/swap/swapfile
开机挂载
echo "
/home/swap/swapfile swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0" >> /etc/fstab
cat /etc/fstab
mount -a
swapon -a
free -h
df -Th
格式化分区应答文件
echo "
n
p
1
w
q" >./autopart
格式化分区
for i in b c d e f g
do
fdisk /dev/sd$i < ./autopart
done
刷新磁盘
partprobe
lsblk
配置udev
for i in b c d e f
do
wwid=`/usr/lib/udev/scsi_id -g -u -d /dev/sd$i`
echo "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d /dev/\$parent\", RESULT==\"$wwid\", SYMLINK+=\"asm-$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >>/etc/udev/rules.d/99-oracle-asmdevices.rules
done
查看udev
cat /etc/udev/rules.d/99-oracle-asmdevices.rules
重启udev
udevadm control --reload-rules
udevadm trigger --type=devices
验证udev
ls /dev/asm*
创建文件目录和相应的用户
groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 backupdba
groupadd -g 505 dgdba
groupadd -g 506 kmdba
groupadd -g 507 asmdba
groupadd -g 508 asmoper
groupadd -g 509 asmadmin
groupadd -g 510 racdba
useradd -u 522 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba oracle
echo W@ngBin92! |passwd --stdin oracle
useradd -u 501 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid
echo W@ngBin92! |passwd --stdin grid
创建目录并授权
#grid_oracle_base
mkdir -p /home/u01/app/19.3.0
#grid_oracle_home
mkdir -p /home/u01/app/grid/19.3.0/db_1
#oracle_home
mkdir -p /home/u01/app/oracle/product/19.3.0/db_1
#oracle_oinstall
mkdir -p /home/u01/app/oraInventory
chown -R grid:oinstall /home/u01/app/grid
chown -R grid:oinstall /home/u01/app/19.3.0
chown -R oracle:oinstall /home/u01/app/oracle
chown -R grid:oinstall /home/u01/app/oraInventory
chmod -R 775 /home/u01
主机解压安装包
unzip LINUX.X64_193000_db_home.zip -d /home/u01/app/oracle/product/19.3.0/db_1
unzip LINUX.X64_193000_grid_home.zip -d /home/u01/app/grid/19.3.0/db_1
chown -R grid:oinstall /home/u01/app/grid
chown -R oracle:oinstall /home/u01/app/oracle
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
关闭SELINUX防火墙!
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config|grep -Ev '^$|^#'
setenforce 0
配置YUM源解决程序依赖的问题
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
echo "[dvd]
name=dvd
baseurl=file:///mnt
gpgcheck=0
enable=1" >>/etc/yum.repos.d/dvd.repo
cat /etc/yum.repos.d/dvd.repo
yum repolist
安装ORACLE先决条件的软件包
yum -y install bc binutils compat-libcap1 compat-libstdc++ compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel gcc gcc-c++ glibc glibc-2.5 glibc-common glibc-devel glibc-headers glibc-kernheaders ksh libaio libaio-devel libgcc librdmacm-devel libstdc++ libstdc++-devel libtermcap-devel libX11 libXau libxcb libXext libXi libXp libXrender libXrender-devel libXtst make net-tools nfs-utils python python-configshell python-rtslib python-six readline smartmontools sysstat targetcli unixODBC unixODBC-devel
安装额外依赖包
yum -y install compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
yum -y install kmod-libs-20-21.el7.x86_64.rpm
yum -y install cvuqdisk-1.0.10-1.rpm
yum -y install oracleasm-support-2.1.11-2.el7.x86_64.rpm
yum -y install expect-5.45-14.el7_1.x86_64.rpm
yum -y install rlwrap-0.37-1.el6.x86_64.rpm
yum -y install kmod-20-21.el7.x86_64.rpm
yum -y install tcl-8.5.13-8.el7.x86_64.rpm
yum -y install /home/u01/app/oracle/product/19.3.0/db_1/cv/rpm/cvuqdisk-1.0.10-1.rpm
关闭时间同步ntpd服务
检查两节点时间,时区是否相同,并禁止ntp
systemctl disable ntpd.service
systemctl stop ntpd.service
mv /etc/ntp.conf /etc/ntp.conf.orig
systemctl status ntpd
timedatectl set-timezone Asia/Shanghai
修改LINUX的内核文件
删除可能存在参数
cat /etc/sysctl.conf /etc/sysctl.conf.backup
sed -i -e '/#net.core.somaxconn/d' /etc/sysctl.conf
sed -i -e '/fs.aio-max-nr/d' /etc/sysctl.conf
sed -i -e '/fs.file-max/d' /etc/sysctl.conf
sed -i -e '/kernel.sem/d' /etc/sysctl.conf
sed -i -e '/kernel.shmall/d' /etc/sysctl.conf
sed -i -e '/kernel.shmmax/d' /etc/sysctl.conf
sed -i -e '/kernel.shmmni/d' /etc/sysctl.conf
sed -i -e '/net.core.netdev_max_backlog/d' /etc/sysctl.conf
sed -i -e '/net.core.rmem_default/d' /etc/sysctl.conf
sed -i -e '/net.core.rmem_max/d' /etc/sysctl.conf
sed -i -e '/net.core.wmem_default/d' /etc/sysctl.conf
sed -i -e '/net.core.wmem_max/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.conf.all.rp_filter/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.conf.default.rp_filter/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_keepalive_intvl/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_keepalive_probes/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_keepalive_time/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_syn_retries/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_timestamps/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_tw_recycle/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf
sed -i -e '/net.core.somaxconn/d' /etc/sysctl.conf
sed -i -e '/^$/d' /etc/sysctl.conf
##### 设置内核参数聚值计算变量
export shmmax=$(free | sed -n '2p'|gawk '{print int(($2*1024-1))}')
export shmall=$(free | sed -n '2p'|gawk '{print int(($2*1024-1)/4)}')
#kernel.sem参数取值定义与算法
#kernel.shmmax=256*1024*1024*1024-1
#kernel.shmall=(256*1024*1024*1024-1)/4
#process=1500
#kernel.sem=process+10 300*(process+10) process+10 300=1510 453000 1510 300
export process=1500
export SEMMNI=300
export SEMMSL=$(($process+10))
export SEMMNS=$(($SEMMSL*$SEMMNI))
export SEMOPM=$SEMMSL
echo "
kernel.shmall = ${shmall}
kernel.shmmax = ${shmmax}
kernel.sem = $SEMMSL $SEMMNS $SEMOPM $SEMMNI
#net.core.somaxconn = 262144
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
net.core.netdev_max_backlog = 262144
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1" >>/etc/sysctl.conf
sysctl -p
cat /etc/sysctl.conf|grep -Ev '^$|^#'|awk -F "=" '{print $1,$2}'|column -t
添加下列参数到/etc/security/limits.conf
echo "
# modify for oracle
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
# modify for grid
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid hard memlock 134217728
grid soft memlock 134217728
" >> /etc/security/limits.conf
cat /etc/security/limits.conf
添加下列条目到/etc/pam.d/login
echo "session required pam_limits.so" >>/etc/pam.d/login
cat /etc/pam.d/login
在两个节点修改/etc/security/limits.d/20-nproc.conf
sed -i 's/* soft nproc 4096/#* soft nproc 4096/g' /etc/security/limits.d/20-nproc.conf
echo "* - nproc 16384" >>/etc/security/limits.d/20-nproc.conf
cat /etc/security/limits.d/20-nproc.conf
停止avahi-daemon服务
两个节点分别操作
systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon.service
ps -ef|grep avahi-daemon
killall avahi-daemon
添加NOZEROCONF=yes参数至/etc/sysconfig/network
echo "NOZEROCONF=yes" >>/etc/sysconfig/network
cat /etc/sysconfig/network
禁用透明大页
oracle官方建议关闭透明大页
修改grub文件
cp /etc/default/grub /etc/default/grub.bak
#增加一行transparent_hugepage=never到尾部
echo 'GRUB_CMDLINE_LINUX="transparent_hugepage=never"' >> /etc/default/grub
# 执行命令
grub2-mkconfig -o /boot/grub2/grub.cfg
#不重启生效
echo never > /sys/kernel/mm/transparent_hugepage/enabled
#查看是否禁用透明大页
cat /sys/kernel/mm/transparent_hugepage/enabled
#返回值若是零,代表成功禁用THP
grep AnonHugePages /proc/meminfo
配置用户的环境变量
echo '
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi' >> /etc/profile
source /etc/profile
节点1 oracle、grid配置环境变量
echo '
export PS1="[`whoami`@`hostname`:"'\''$PWD]$'\''
export EDITOR=vi
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
export ORACLE_SID=orcl1
export ORACLE_TERM=xterm
export THREADS_FLAG=native
export ORACLE_BASE=/home/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1
export INVENTORY_LOCATION=/home/u01/app/oraInventory
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi' >>/home/oracle/.bash_profile
cat /home/oracle/.bash_profile
echo '
export PS1="[`whoami`@`hostname`:"'\''$PWD]$'\''
export EDITOR=vi
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_TERM=xterm
export THREADS_FLAG=native
export ORACLE_BASE=/home/u01/app/19.3.0
export ORACLE_HOME=/home/u01/app/grid/19.3.0/db_1
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi' >>/home/grid/.bash_profile
cat /home/grid/.bash_profile
节点2 oracle、grid置环境变量
echo '
export PS1="[`whoami`@`hostname`:"'\''$PWD]$'\''
export EDITOR=vi
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
export ORACLE_SID=orcl2
export ORACLE_TERM=xterm
export THREADS_FLAG=native
export ORACLE_BASE=/home/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1
export INVENTORY_LOCATION=/home/u01/app/oraInventory
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi' >>/home/oracle/.bash_profile
cat /home/oracle/.bash_profile
echo '
export PS1="[`whoami`@`hostname`:"'\''$PWD]$'\''
export EDITOR=vi
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
export ORACLE_SID=+ASM2
export ORACLE_TERM=xterm
export THREADS_FLAG=native
export ORACLE_BASE=/home/u01/app/19.3.0
export ORACLE_HOME=/home/u01/app/grid/19.3.0/db_1
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi' >>/home/grid/.bash_profile
cat /home/grid/.bash_profile
配置互信
方法一(主机oracle,grid用户分别执行)
[oracle@rac01:/home/oracle]$ cat ssh.sh
#!/usr/bin/expect
set passwd W@ngBin92!
spawn ssh-keygen
expect {
"id_rsa" {send "\r";exp_continue}
"Overwrite" {send "y\r";exp_continue}
"phrase" {send "\r";exp_continue}
"again" {send "\r";exp_continue}
}
spawn cp .ssh/id_rsa.pub .ssh/authorized_keys
set hosts [open ip.list r]
while { [gets $hosts ip]>=0} {
spawn scp -r .ssh/ $ip:~/
expect {
"yes/no" {send "yes\r";exp_continue}
"password:" {send "$passwd\r";exp_continue}
}
}
close $hosts
[oracle@rac01:/home/oracle]$ cat ip.list
192.168.8.20
192.168.8.21
[oracle@rac01:/home/oracle]$ ./ssh.sh
方法二
#不配置root互信可能遇到ins-06003,手动配置后,grid安装界面调试ssh配置
配置root 互信
配置2个节点的root用户互信(2个节点执行)
创建秘钥目录
mkdir ~/.ssh
#以下2个生成密钥的命令,需要输入的参数直接回车即可
ssh-keygen -t rsa
ssh-keygen -t dsa
#生成认证文件
cat ~/.ssh/id_rsa.pub >~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >~/.ssh/authorized_keys
配置2个节点的root用户互信(仅在Centos7-RAC1节点执行)
//将节点1的所有密钥和认证文件拷贝给节点2,单独执行,每条命令会输入密码
ssh Centos7-RAC2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
ssh Centos7-RAC2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys Centos7-RAC2:~/.ssh/authorized_keys
#测试root用户互信(2个节点执行)
ssh Centos7-RAC1 date;ssh Centos7-RAC2 date;ssh Centos7-RAC1-priv date;ssh Centos7-RAC2-priv date
配置oracle 互信
配置2个节点的oracle用户互信(2个节点执行)
su - oracle
mkdir ~/.ssh
#以下2个生成密钥的命令,需要输入的参数直接回车即可
ssh-keygen -t rsa
ssh-keygen -t dsa
#生成认证文件
cat ~/.ssh/id_rsa.pub >~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >~/.ssh/authorized_keys
配置2个节点的oracle用户互信(仅在Centos7-RAC1节点执行)
//将节点1的所有密钥和认证文件拷贝给节点2,单独执行,每条命令会输入密码
ssh Centos7-RAC2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
ssh Centos7-RAC2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys Centos7-RAC2:~/.ssh/authorized_keys
#测试oracle用户互信(2个节点执行)
ssh Centos7-RAC1 date;ssh Centos7-RAC2 date;ssh Centos7-RAC1-priv date;ssh Centos7-RAC2-priv date
配置grid 互信
配置2个节点的grid用户互信(2个节点执行)
su - grid
mkdir ~/.ssh
#以下2个生成密钥的命令,需要输入的参数直接回车即可
ssh-keygen -t rsa
ssh-keygen -t dsa
#生成认证文件
cat ~/.ssh/id_rsa.pub >~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >~/.ssh/authorized_keys
配置2个节点的grid用户互信(仅在Centos7-RAC1节点执行)
//将节点1的所有密钥和认证文件拷贝给节点2,单独执行,每条命令会输入密码
ssh Centos7-RAC2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
ssh Centos7-RAC2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys W@ngBin92!!!
scp ~/.ssh/authorized_keys Centos7-RAC2:~/.ssh/authorized_keys
#测试grid用户互信(2个节点执行)
//第一次ssh的话会添加host输入yes,不需要输入密码
ssh Centos7-RAC1 date;ssh Centos7-RAC2 date;ssh Centos7-RAC1-priv date;ssh Centos7-RAC2-priv date
图形化安装
图形安装grid
[grid@rac01:/home/grid]$ cd $ORACLE_HOME
[grid@rac01:/home/u01/app/19.3.0/grid]$ ./gridSetup.sh
图形安装oracle
[oracle@rac01:/home/oracle]$ cd $ORACLE_HOME
[oracle@rac01:/home/u01/app/oracle/product/19.3.0/db_1]$ ./runInstaller
图形dbca
[oracle@rac01:/home/oracle]$ dbca
DG主机配置
oracle 19C DG单机
1.配置主机名
hostnamectl set-hostname centos7-dg
2.检查主机名和网络并且配置/etc/hosts文件
echo "
192.168.8.20 Centos7-RAC1
192.168.8.21 Centos7-RAC2
192.168.8.22 Centos7-RAC1-vip
192.168.8.23 Centos7-RAC2-vip
10.10.10.1 Centos7-RAC1-priv
10.10.10.2 Centos7-RAC2-priv
192.168.8.24 Centos7-RAC-scan
192.168.8.27 Centos7-DG" >> /etc/hosts
cat /etc/hosts
3.扩展SWAP内存
DG
mkdir /home/swap
dd if=/dev/zero of=/home/swap/swapfile bs=1024 count=16777216
mkswap /home/swap/swapfile
chmod 0600 /home/swap/swapfile
开机挂载
echo "
/home/swap/swapfile swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0" >> /etc/fstab
cat /etc/fstab
mount -a
swapon -a
free -h
df -Th
4.创建文件目录和相应的用户
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle
echo 'oracle' | passwd --stdin oracle
5.创建安装目录
mkdir -p /home/u01/app/oracle
mkdir -p /home/u01/app/oraInventory
mkdir -p /home/u01/app/oracle/product/19.3.0/db_1
mkdir -p /home/u01/arch
mkdir -p /home/u01/app/oracle/oradata/std
mkdir -p /home/u01/app/oracle/oradata/std/datafile/
mkdir -p /home/u01/app/oracle/oradata/std/tempfile/
mkdir -p /home/u01/app/oracle/oradata/std/pdbseed/
mkdir -p /home/u01/app/oracle/admin/std/adump/
mkdir -p /home/u01/app/oracle/oradata/std/onlinelog/
chown -R oracle:oinstall /home/u01
chmod -R 775 /home/u01/app
--解压缩安装包到oracle_home目录下
主机解压安装包
unzip LINUX.X64_193000_db_home.zip -d /home/u01/app/oracle/product/19.3.0/db_1/
chown -R oracle:oinstall /home/u01
chmod -R 775 /home/u01/app
6.关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
7.关闭SELINUX防火墙!
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config|grep -Ev '^$|^#'
setenforce 0
8.配置YUM源解决程序依赖的问题
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
vi dvd.repo
echo "[dvd]
name=dvd
baseurl=file:///mnt
gpgcheck=0
enable=1" >>/etc/yum.repos.d/dvd.repo
yum repolist
3.安装ORACLE先决条件的软件包
yum -y install bc binutils compat-libcap1 compat-libstdc++ compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel gcc gcc-c++ glibc glibc-2.5 glibc-common glibc-devel glibc-headers glibc-kernheaders ksh libaio libaio-devel libgcc librdmacm-devel libstdc++ libstdc++-devel libtermcap-devel libX11 libXau libxcb libXext libXi libXp libXrender libXrender-devel libXtst make net-tools nfs-utils python python-configshell python-rtslib python-six readline smartmontools sysstat targetcli unixODBC unixODBC-devel
安装额外依赖包
yum -y install compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
yum -y install kmod-libs-20-21.el7.x86_64.rpm
yum -y install cvuqdisk-1.0.10-1.rpm
yum -y install oracleasm-support-2.1.11-2.el7.x86_64.rpm
yum -y install expect-5.45-14.el7_1.x86_64.rpm
yum -y install rlwrap-0.37-1.el6.x86_64.rpm
yum -y install kmod-20-21.el7.x86_64.rpm
yum -y install tcl-8.5.13-8.el7.x86_64.rpm
yum -y install /home/u01/app/oracle/product/19.3.0/db_1/cv/rpm/cvuqdisk-1.0.10-1.rpm
关闭时间同步ntpd服务
检查两节点时间,时区是否相同,并禁止ntps
ystemctl disable ntpd.service
systemctl stop ntpd.service
mv /etc/ntp.conf /etc/ntp.conf.orig
systemctl status ntpd
timedatectl set-timezone Asia/Shanghai
4.修改LINUX的内核文件
#删除可能存在参数
sed -i -e '/#net.core.somaxconn/d' /etc/sysctl.conf
sed -i -e '/fs.aio-max-nr/d' /etc/sysctl.conf
sed -i -e '/fs.file-max/d' /etc/sysctl.conf
sed -i -e '/kernel.sem/d' /etc/sysctl.conf
sed -i -e '/kernel.shmall/d' /etc/sysctl.conf
sed -i -e '/kernel.shmmax/d' /etc/sysctl.conf
sed -i -e '/kernel.shmmni/d' /etc/sysctl.conf
sed -i -e '/net.core.netdev_max_backlog/d' /etc/sysctl.conf
sed -i -e '/net.core.rmem_default/d' /etc/sysctl.conf
sed -i -e '/net.core.rmem_max/d' /etc/sysctl.conf
sed -i -e '/net.core.wmem_default/d' /etc/sysctl.conf
sed -i -e '/net.core.wmem_max/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.conf.all.rp_filter/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.conf.default.rp_filter/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_keepalive_intvl/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_keepalive_probes/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_keepalive_time/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_syn_retries/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_timestamps/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_tw_recycle/d' /etc/sysctl.conf
sed -i -e '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf
sed -i -e '/net.core.somaxconn/d' /etc/sysctl.conf
sed -i -e '/^$/d' /etc/sysctl.conf
#设置内核参数聚值计算变量
shmmax=$(free | sed -n '2p'|gawk '{print int(($2*1024-1))}')
shmall=$(free | sed -n '2p'|gawk '{print int(($2*1024-1)/4)}')
#取数据库最大进程数
process=1500
SEMMNI=300
SEMMSL=$(($process+10))
SEMMNS=$(($SEMMSL*$SEMMNI))
SEMOPM=$SEMMSL
echo "
#kernel.shmmax=256*1024*1024*1024-1
#kernel.shmall=(256*1024*1024*1024-1)/4
#process=1500
#kernel.sem=process+10 300*(process+10) process+10 300=1510 453000 1510 300
kernel.shmall = ${shmall}
kernel.shmmax = ${shmmax}
kernel.sem = $SEMMSL $SEMMNS $SEMOPM $SEMMNI
#net.core.somaxconn = 262144
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
net.core.netdev_max_backlog = 262144
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1" >>/etc/sysctl.conf
systemctl -p
cat /etc/sysctl.conf|grep -Ev '^$|^#'|awk -F "=" '{print $1,$2}'|column -t
5.添加下列参数到/etc/security/limits.conf
echo "
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
" >> /etc/security/limits.conf
6.添加下列条目到/etc/pam.d/login
echo "session required pam_limits.so" >>/etc/pam.d/login
在两个节点修改/etc/security/limits.d/20-nproc.conf
sed -i 's/* soft nproc 4096/#* soft nproc 4096/g' /etc/security/limits.d/20-nproc.conf
echo "* - nproc 16384" >>/etc/security/limits.d/20-nproc.conf
cat /etc/security/limits.d/20-nproc.conf
停止avahi-daemon服务
两个节点分别操作
systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon.service
ps -ef|grep avahi-daemon
killall avahi-daemon
添加NOZEROCONF=yes参数至/etc/sysconfig/network
echo "NOZEROCONF=yes" >>/etc/sysconfig/network
cat /etc/sysconfig/network
禁用透明大页
oracle官方建议关闭透明大页
修改grub文件
cp /etc/default/grub /etc/default/grub.bak
增加一行transparent_hugepage=never到尾部
echo 'GRUB_CMDLINE_LINUX="transparent_hugepage=never"' >> /etc/default/grub
执行命令
grub2-mkconfig -o /boot/grub2/grub.cfg
4不重启生效
echo never > /sys/kernel/mm/transparent_hugepage/enabled
查看是否禁用透明大页
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
grep AnonHugePages /proc/meminfo
AnonHugePages: 0 kB---------->>>返回值若是零,代表成功禁用THP
9.配置用户的环境变量
echo '
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi' >> /etc/profile
source /etc/profile
节点1 oracle配置环境变量
echo '
export PS1="[`whoami`@`hostname`:"'$PWD]$'
export EDITOR=vi
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
export ORACLE_SID=orcl1
export ORACLE_TERM=xterm
export THREADS_FLAG=native
export ORACLE_BASE=/home/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1
export INVENTORY_LOCATION=/home/u01/app/oraInventory
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi' >>/home/oracle/.bash_profile

-
创建新的集群

-
配置集群名称以及 scan 名称

-
节点互信

-
公网、私网网段选择

-
选择 asm 存储

-
选择配置 GIMR

-
这里选择 ocr、voting file 与 gimr 放在一起

-
选择 asm 磁盘组

-
输入密码

-
保持默认

-
保持默认


-
确认 base 目录


-
这里可以选择自动 root 执行脚本

-
预安装检查

-
解决相关依赖后,忽略如下报错

-
如下警告可以忽略-警告是由于没有使用 DNS 解析造成可忽略

-
执行 root 脚本








3.5 查看状态



4 以 Oracle 用户登录图形化界面
将数据库软件解压至$ORACLE_HOME 安装 Oracle 数据库软件

4.1 执行安装







预安装前检查忽略如下警告


4.2 执行 t root 脚本


5 创建 ASM 数据磁盘
5.1 grid 账户登录图形化界面,执行 asmca






6 建立数据库
以 Oracle 账户登录。
6.1. 执行建库 dbca

















6.2 查看集群状态





6.3 查看数据库版本

DG环境部署
| 参数类型 | Primary | Standby |
|---|---|---|
| db version | 19.3.0 | 19.3.0 |
| host ip 192.168.8.20 rac01 192.168.8.21 rac02 scan 192.168.8.24 | 192.168.8.24 | 192.168.8.27 |
| db_name orcl | orcl | orcl |
| db_unique_name | orcl | orcl |
| instance_name | orcl | orcl |
RAC关闭数据库
[oracle@rac1:/home/oracle]$sqlplus / as sysdba
SQL> shutdown immediate
修改rac01强制归档以及开启归档模式
[oracle@rac1:/home/oracle]$sqlplus / as sysdba
SQL> startup mount;
SQL> alter system set log_archive_dest_1='location=+DATA/arch' scope=spfile;
System altered.
SQL> alter database archivelog;
Database altered.
SQL>alter database force logging;
Database altered.
rac01开启数据库
SQL> alter database open;
rac02开启数据库
SQL>startup
修改主库初始化参数
查看主库所有文件路径备用
select name from v$datafile
union
select name from v$controlfile
union
select member from v$logfile
union
select name from v$tempfile
union
select value from v$parameter where name='spfile';
当主库已开启force logging之后再进行如下操作
alter database force logging;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,std)' scope=both sid='*';
alter system set log_archive_dest_1='LOCATION=+DATA/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=spfile sid='*';
alter system set LOG_ARCHIVE_DEST_2='SERVICE=std LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=std' scope=both sid='*';
alter system set fal_client='orcl' scope=both sid='*';
alter system set FAL_SERVER='std' scope=both sid='*';
alter system set standby_file_management=AUTO scope=both sid='*';
alter system set db_file_name_convert='+DATA/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/','/home/u01/app/oracle/oradata/std/pdbseed/','+DATA/ORCL/C28BEF60DF905442E0531408A8C07AA6/TEMPFILE/','/home/u01/app/oracle/oradata/std/pdbseed/','+DATA/ORCL/C28C1D85392E6600E0531408A8C0E40A/DATAFILE/','/home/u01/app/oracle/oradata/std/pdbseed/','+DATA/ORCL/C28C1D85392E6600E0531408A8C0E40A/TEMPFILE/','/home/u01/app/oracle/oradata/std/tempfile/','+DATA/ORCL/DATAFILE/','/home/u01/app/oracle/oradata/std/pdbseed/','+DATA/ORCL/TEMPFILE/','/home/u01/app/oracle/oradata/std/tempfile/' scope=spfile;
alter system set log_file_name_convert='+DATA/ORCL/ONLINELOG/','/home/u01/app/oracle/oradata/orcl/onlinelog' scope=spfile;
alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';
alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;
alter system set PARALLEL_EXECUTION_MESSAGE_SIZE=8192 scope=spfile;
重启数据库
cd /home/u01/app/19.3.0/grid/bin/
./crsctl check cluster -all
./crsctl stop cluster -all
./crsctl start cluster -all
./crsctl check cluster -all
主库增加Standby redo log
如果2节点RAC主库每个thread redo log有N组,standby redo log则需要(N+1)*2组。
主库查询redo 日志组数,有2个thread,每个thread有2组日志,standby则需要6组
SQL> select group#,thread#,members,status from v$log;
GROUP# THREAD# MEMBERS STATUS
1 1 1 INACTIVE
2 1 1 CURRENT
3 2 1 INACTIVE
4 2 1 CURRENT
主库增加standby日志组:
alter database add standby logfile thread 1 group 5 '+DATA/' size 200m;
alter database add standby logfile thread 1 group 6 '+DATA/' size 200m;
alter database add standby logfile thread 1 group 7 '+DATA/' size 200m;
alter database add standby logfile thread 2 group 8 '+DATA/' size 200m;
alter database add standby logfile thread 2 group 9 '+DATA/' size 200m;
alter database add standby logfile thread 2 group 10 '+DATA/' size 200m;
确认主库加的standby日志是否已创建
SQL> select group#,thread# from v$standby_log;
SQL> select * from v$standby_log;
GROUP# THREAD#
5 1
6 1
7 1
8 2
9 2
10 2
在rac两个实例以及备库监听
sqlnet.ora不添加NAMES.DIRECTORY_PATH,rman无法登录,修改sqlnet后密码会失效,需要重置密码
[oracle@rac01:/home/oracle]$ cat /home/u01/app/oracle/product/19.3.0/db_1/network/admin/sqlnet.ora
# sqlnet.ora Network Configuration File: /home/u01/app/oracle/product/19.3.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /home/u01/app/oracle
tnsnames.ora增加备库时,需要增加(UR=A),不然nomount状态无法连接
[oracle@rac01:/home/oracle]$ cat /home/u01/app/oracle/product/19.3.0/db_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /home/u01/app/oracle/product/19.3.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.22)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.68.8.23)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.68.8.24)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
std =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.27)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = std)
(UR=A)
)
)
listener.ora静态注册
[oracle@centos7-dg:/home/oinstall]cat /home/u01/app/oracle/product/19.3.0/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /home/u01/app/oracle//product/19.3.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/u01/app/oracle/product/19.3.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
(ORACLE_HOME = /home/u01/app/oracle/product/19.3.0/db_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.27)(PORT = 1521))
)
)
rac01修改tnsnames.roa
[root@rac01:/home/oracle]$ cat /home/u01/app/oracle/product/19.3.0/db_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /home/u01/app/oracle/product/19.3.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.22)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.68.8.23)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.68.8.24)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
std =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.27)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = std)
(UR=A)
)
)
重启监听服务
lsnrctl stop&&lsnrctl start
修改oracle密码(改动监听后导致的诡异问题,密码错误,修改密码后正常)
SQL> alter user sys identified by oracle;
SQL> alter user system identified by oracle;
查看密码所有目录
SQL> select * from v$passwordfile_info;
在主库上生成用于备库的参数文件
SQL> create pfile='/home/oracle/pfile.ora' from spfile;
将主库的参数文件,密码文件拷贝到备库
[root@rac02:/home/u01/app]$ su - grid
上一次登录:二 5月 18 06:54:27 CST 2021pts/0 上
[grid@rac02:/home/grid]$ asmcmd cp +DATA/ORCL/PASSWORD/pwdorcl.* /home/grid/
copying +DATA/ORCL/PASSWORD/pwdorcl.256.1072838099 -> /home/grid/pwdorcl
[grid@rac02:/home/grid]$ scp /home/grid/pwdorcl oracle@192.168.8.27:/home/u01/app/oracle/product/19.3.0/db_1/dbs/orapworcl
[oracle@rac02:/home/grid]$ scp /home/oracle/pfile.ora oracle@192.168.8.27:/home/u01/app/oracle/product/19.3.0/db_1/dbs/
7、 创建备库的归档目录以及各个数据文件目录
mkdir -p /home/u01/app/oracle/oradata/orcl/onlinelog
mkdir -p /home/u01/app/oracle/oradata/std/tempfile
mkdir -p /home/u01/app/oracle/oradata/std/controlfile
mkdir -p /home/u01/app/oracle/oradata/std/pdbseed
mkdir -p /home/u01/app/oracle/product/19.3.0/db_1/dbs
mkdir -p /home/u01/arch
mkdir -p /home/u01/app/oracle/oradata/std/datafile
mkdir -p /home/u01/app/oracle/admin/std/adump
mkdir -p /home/u01/app/oracle/oradata/std/onlinelog
修改主库传过来的pfile,生成备库pfile
[oracle@std:/u01/app/oracle/product/18.3.0/db_1/dbs]$vi initstd.ora
*.audit_file_dest='/home/u01/app/oracle/admin/orcl/adump'
*.audit_trail='none'
*.compatible='19.0.0'
*.control_files='/home/u01/app/oracle/oradata/std/controlfile/control01.ctl','/home/u01/app/oracle/oradata/std/controlfile/control02.ctl'#Restore Controlfile
*.db_block_size=8192
*.db_file_name_convert='+DATA/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/','/home/u01/app/oracle/oradata/std/pdbseed/','+DATA/ORCL/C28BEF60DF905442E0531408A8C07AA6/TEMPFILE/','/home/u01/app/oracle/oradata/std/pdbseed/','+DATA/ORCL/C28C1D85392E6600E0531408A8C0E40A/DATAFILE/','/home/u01/app/oracle/oradata/std/pdbseed/','+DATA/ORCL/C28C1D85392E6600E0531408A8C0E40A/TEMPFILE/','/home/u01/app/oracle/oradata/std/tempfile/','+DATA/ORCL/DATAFILE/','/home/u01/app/oracle/oradata/std/pdbseed/','+DATA/ORCL/TEMPFILE/','/home/u01/app/oracle/oradata/std/tempfile/'
*.db_name='ORCL'#Reset to original value by RMAN
*.db_unique_name='std'
*.diagnostic_dest='/home/u01/app/oracle'
*.enable_pluggable_database=true
*.fal_client='std'
*.fal_server='orcl'
*.log_archive_config='DG_CONFIG=(ORCL,STD)'
*.log_archive_dest_1='LOCATION=/home/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STD'
*.log_archive_dest_2='SERVICE=orcl LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL'
*.log_file_name_convert='+DATA/ORCL/ONLINELOG/','/home/u01/app/oracle/oradata/orcl/onlinelog'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=410m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1638m
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
9、 启动备库数据库到nomount状态
SQL> startup nomount;
开始DG搭建恢复数据库
恢复数据库方法一、DUPLICATE
[oracle@centos7-dg:/home/oinstall] rman target sys/oracle@orcl auxiliary sys/oracle
Recovery Manager: Release 19.0.0.0.0 - Production on Tue May 18 15:35:16 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1600618991)
connected to auxiliary database: ORCL (not mounted)
RMAN>
执行脚本
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
allocate channel c6 type disk;
allocate AUXILIARY channel c7 type disk;
allocate AUXILIARY channel c8 type disk;
allocate AUXILIARY channel c9 type disk;
allocate AUXILIARY channel c10 type disk;
allocate AUXILIARY channel c11 type disk;
allocate AUXILIARY channel c12 type disk;
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
release channel c9;
release channel c10;
release channel c11;
release channel c12;
}
主库
[oracle@rac01:/]$ sqlplus / as sysdba
SQL> ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=MEMORY SID='*';
备库
[oracle@centos7-dg:/home/oinstall]sqlplus / as sysdba
SQL> alter database recover managed standby database cancel;
SQL> alter database recover managed standby database disconnect from session;
恢复方法二
sh E-OBAR_BackupByScn.sh 0 orcl1 /home/oinstall/backup 7 10 1
scp -r /home/oinstall/backup 192.168.8.27:/home/oinstall/
sh ../../tools/PROD/E-OBAR_RmanInitStandbyDB.sh 2737722 /home/oinstall/backup/20210519003039_orcl1_L0 1600618991 1 orcl
本文来自博客园,作者:刘文江,转载请注明原文链接:https://www.cnblogs.com/liuwenjiang/p/18905988

浙公网安备 33010602011771号