Install oracle 19C on Redhat8

目录

一、前期准备

1.1 工具和软件

1.2 网络规划

二、创建虚拟服务器

2.1 新建虚拟机

2.2 安装操作系统

2.6 克隆standby虚拟机

三、oracle install

一、配置环境变量

1、主机名配置

2、网络配置

3、配置Hosts文件

4、关闭防火墙

5、关闭 Selinux

6、配置 yum 源

7、安装依赖包

8、配置 hosts

9、创建用户和组

10、创建安装目录

11、配置 avahi-deamon

12、关闭透明大页和 numa

13、配置系统参数文件

14、配置系统资源限制

15、配置 pam.d

16、配置 /dev/shm

17、配置oracle用户环境变量

二、安装 Oracle 软件

四, 创建和配置数据库

五,standby 搭建

1. standby server 配置

2. scp pfile / orapwd file

3. 修改standby pfile

4. 创建standby 文件夹

5. configure listener

6. configure tnsnames.ora

7.  rman duplicate standby

8.  open standby and check

六, primary , standby switchover 

七, 日常检查

八, 常见错误处理

九, standby 不同步处理




一、前期准备

1.1 工具和软件

类型 名称 版本
物理机OS Windows 7 旗舰版 6.1
虚拟机软件 VMware® Workstation 15 Pro 15.5.0 build-14665864
虚拟机OS Red Hat Enterprise Linux release 8.2 (Ootpa) 8.2 x86-64
数据库软件 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 19.3.0.0.0

1.2 网络规划

IP:192.168.72.10
hostname:rhel64

二、创建虚拟服务器

2.1 新建虚拟机

打开VMware® Workstation 15 Pro,新建虚拟机,选择典型模式;

Install oracle 19C on Redhat8_第1张图片

选择“稍后安装操作系统”

Install oracle 19C on Redhat8_第2张图片

在客户机操作系统类型里选择“Red Hat Enterprise Linux 8 64位”

Install oracle 19C on Redhat8_第3张图片

 输入虚拟机存储路径和名称

Install oracle 19C on Redhat8_第4张图片

 新增磁盘,此处新增磁盘将作为'/'根目录分区使用,因为后面会将Oracle Home单独挂载,所以无需太大,我这里分配了50GB,并选择了“将虚拟磁盘存储为单个文件”,寻求最佳性能;

Install oracle 19C on Redhat8_第5张图片

基本硬件配置完成,接下来点击自定义硬件

Install oracle 19C on Redhat8_第6张图片

  • 在自定义硬件中,分配以下资源:

内存:4096M

注:Oracle自12C开始,将单节点最低推荐内存设置为8GB,8GB以下也能安装,但是会出现警告提示;

电脑内存限制, 分配4G

Install oracle 19C on Redhat8_第7张图片

CPU:1个×2核

可以根据自己的物理机CPU来分配,核心多就多分配点,虚拟化引擎建议勾选;

Install oracle 19C on Redhat8_第8张图片

 CD/DVD光驱选项里,添加操作系统镜像

rhel-8.2-x86_64-dvd.iso 

大小:7.85G

Install oracle 19C on Redhat8_第9张图片

主要的来了,网络适配器选项里,将原有网卡1更改为“仅主机模式”,然后再新增一张NAT模式的网卡2;

当然,你直接添加一张“仅主机模式”的网卡也可以,但是我习惯把Public网卡设置为网卡1,这样后期维护的时候不容易混淆,纯属个人习惯。

 配置虚拟机

Install oracle 19C on Redhat8_第10张图片

Install oracle 19C on Redhat8_第11张图片

然后关闭自定义硬件界面,点击完成

Install oracle 19C on Redhat8_第12张图片

  • 然后左侧虚拟机库里会出现刚才新建的虚拟机,此时先不要开启,点击“编辑虚拟机设置”,添加一个新磁盘,作为Oracle Home使用;

(你问我为什么刚才自定义硬件的时候不添加,因为自定义硬件时没有添加硬盘的选项,必须关闭后再点击编辑设置才会出现,我也不知道为什么,垃圾VMware)

 Install oracle 19C on Redhat8_第13张图片

磁盘类型建议选择SCSI或者NVMe(如果虚拟机存储路径在NVMe SSD上的话会出现NVMe选项,否则无脑选SCSI)

 Install oracle 19C on Redhat8_第14张图片

 选择创建新磁盘,大小分配60GB,仍然选择存储为单个文件,不建议勾选“立即分配所有空间”;

Install oracle 19C on Redhat8_第15张图片

Install oracle 19C on Redhat8_第16张图片

 选择磁盘存储路径

Install oracle 19C on Redhat8_第17张图片

最后完整的配置是这样的,总共修改了红框中的这几个选项,其他的选项随意配置。别忘记点击“确定”保存修改。

Install oracle 19C on Redhat8_第18张图片

2.2 安装操作系统

  • 开启刚才新建的虚拟机,进入安装操作系统界面,上下键切换到第一个选项,按回车

Install oracle 19C on Redhat8_第19张图片

Install oracle 19C on Redhat8_第20张图片

选择安装语言,可以在左侧下拉到最后选择中文,但因为一些众所周知的原因,我建议选择英语进行安装;

Install oracle 19C on Redhat8_第21张图片

点击Continue进入配置界面

  • 这里需要注意,键盘务必选择英语键盘(如果你和我一样选择英语进行安装,默认就是英语键盘,不要做任何修改);
  • 安装路径(Installation Destination)选择第一个硬盘(50GB),然后点击左上角'done'

Install oracle 19C on Redhat8_第22张图片

语言支持(Language Support)务必勾选英语,如果需要中文的话可以在左侧下拉找到中文,同时勾选;

Install oracle 19C on Redhat8_第23张图片

Install oracle 19C on Redhat8_第24张图片

 时区根据实际所在的地区选择,中国大陆地区选择亚洲/上海,选择好以后顺便将时间调整正确(在生产环境中,时区和时间是极其重要的参数,勾选错误可能导致业务端产生不可挽回的后果);

Install oracle 19C on Redhat8_第25张图片

接下来又到了重中之重,在软件选择(Software Selection)中,强烈建议非高玩选择Server with GUI,并在右侧附加选项里,勾选Performance Tools、Legacy UNIX Compatibility、Development Tools、Graphical Administration Tools和System Tools,尤其是Legacy UNIX Compatibility、Development Tools这两项,可以让你在后面安装Oracle时省事很多;

 Install oracle 19C on Redhat8_第26张图片

 然后在网络&主机名(Network&Hostname)中,配置好HOSTNAME,并点击apply,网卡及IP地址暂不配置,因为后面要用到克隆,配置IP以后再克隆反而不方便;

Install oracle 19C on Redhat8_第27张图片

最终配置概要如下,点击Begin Installation开始安装;

Install oracle 19C on Redhat8_第28张图片

最后配置root密码,配置完成后点击左上角done(两次)返回

 Install oracle 19C on Redhat8_第29张图片

 Install oracle 19C on Redhat8_第30张图片

进度条滚完后,会提示你重启操作系统,然后会出现一个License协议,点击accepted接受,然后Finish ConfigurationInstall oracle 19C on Redhat8_第31张图片

 Install oracle 19C on Redhat8_第32张图片

至此,操作系统安装完成,点击Next,最后会让你创建一个普通用户,随便创建一个就好;

 Install oracle 19C on Redhat8_第33张图片

Install oracle 19C on Redhat8_第34张图片

 Install oracle 19C on Redhat8_第35张图片

 Install oracle 19C on Redhat8_第36张图片

pwd:oracle

Install oracle 19C on Redhat8_第37张图片

 Install oracle 19C on Redhat8_第38张图片

root 用户登录

Install oracle 19C on Redhat8_第39张图片

2.6 克隆standby虚拟机

将前文准备好的虚拟机环境,使用VMware自带的克隆功能,克隆两台。

  • 关闭虚拟机,然后右键单击虚拟机,选择管理→克隆

弹出克隆向导,按下列图示依次点击下一页

 Install oracle 19C on Redhat8_第40张图片

 Install oracle 19C on Redhat8_第41张图片

 Install oracle 19C on Redhat8_第42张图片

 Install oracle 19C on Redhat8_第43张图片

Install oracle 19C on Redhat8_第44张图片

2.6 配置网络

Install oracle 19C on Redhat8_第45张图片

Install oracle 19C on Redhat8_第46张图片

三、oracle install

root/ocm 123
设置oracle服务自启
https://www.cnblogs.com/LILEIYAO/p/17116648.html

在64位 OL8 或者 RHEL8 上安装 Oracle 19c 数据库和客户端的要求 (Doc ID 2696989.1)


https://blog.51cto.com/u_15735145/5546615

一、配置环境变量

1、主机名配置

hostnamectl set-hostname rhel64

2、网络配置

nmcli connection show nmcli connection modify ens160 ipv4.addresses 192.168.72.100/24 ipv4.gateway 192.168.72.1 ipv4.method manual autoconnect yes nmcli connection up ens160

[root@rhel64 ~]# ifconfig
ens160: flags=4163  mtu 1500
        inet 192.168.72.100  netmask 255.255.255.0  broadcast 192.168.72.255

3、配置Hosts文件

192.168.72.10 rhel64

[root@rhel64 ~]# cat <>/etc/hosts 192.168.72.10 rhel64 ##OracleEnd## EOF

4、关闭防火墙

systemctl stop firewalld.service 
systemctl disable firewalld.service 
systemctl status firewalld.service 

5、关闭 Selinux

vi /etc/selinux/config 
SELINUX=disabled

[root@rhel64~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

[root@rhel64 ~]# cat /etc/selinux/config

6、配置 yum 源

mkdir /mnt/dvd
df -h
mount /dev/sr0 /mnt/dvd
cp /etc/yum.repos.d/redhat.repo /etc/yum.repos.d/redhat.repo.bak

vi /etc/yum.repos.d/redhat.repo
[rhel6.4]
name=rhel6.4
baseurl=file:///mnt/dvd/BaseOS
gpgcheck=0
enabled=1

[AppStream]
name=AppStream
baseurl=file:///mnt/dvd/AppStream
enabled=1
gpgcheck=0

yum clean all
yum list

7、安装依赖包

--18. 安装rpm包
bc
binutils
elfutils-libelf
elfutils-libelf-devel
fontconfig-devel
glibc
glibc-devel
ksh
libaio
libaio-devel
libXrender
libX11
libXau
libXi
libXtst
libgcc
libnsl
librdmacm
libstdc++
libstdc++-devel
libxcb
libibverbs
make
smartmontools
sysstat

rpm --query --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" bc binutils elfutils-libelf elfutils-libelf-devel
fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libX11 libXau libXi libXtst libgcc libnsl librdmacm
libstdc++ libstdc++-devel libxcb libibverbs make smartmontools sysstat


yum install bc binutils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel
libXrender libX11 libXau libXi libXtst libgcc libnsl librdmacm libstdc++ libstdc++-devel libxcb libibverbs make smartmontools
sysstat

--libaio
cd /mnt/dvd/BaseOS/Packages
[root@rhel64 Packages]# yum install libaio-devel-0.3.112-1.el8.x86_64.rpm


--AppStream
ksh --app
libstdc++-devel

cd /mnt/dvd/AppStream/Packages
[root@rhel64 Packages]# ls |grep ksh
ksh-20120801-254.el8.x86_64.rpm
[root@rhel64 Packages]# ls |grep libstdc++-
libstdc++-devel-8.3.1-5.el8.x86_64.rpm
[root@rhel64 Packages]# yum install ksh-20120801-254.el8.x86_64.rpm
[root@rhel64 Packages]# yum install gcc-toolset-9-libstdc++-devel-9.2.1-2.2.el8.x86_64.rpm

--other rpm
yum install unixODBC
yum install openssh

8、配置 hosts

9、创建用户和组

## 创建 oinstall dba oper 组

more /etc/oraInst.loc
grep oinstall /etc/group


/usr/sbin/groupadd -g 54321 oinstall

##Creating Operating System Privileges Groups
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54330 racdba

## 创建 oracle 用户
/usr/sbin/useradd -u 54321 -g oinstall -G dba,oper,asmdba,backupdba,dgdba,kmdba,racdba oracle

## 修改oracle 用户
/usr/sbin/usermod -u 54321 -g oinstall -G dba,oper,asmdba,backupdba,dgdba,kmdba,racdba oracle

## 修改 oracle 用户密码为 oracle
echo oracle | passwd --stdin oracle
## 检查 oracle 用户
id oracle

10、创建安装目录

mkdir -p /u01/app/oraInventory
chown oracle:oinstall /u01/app/oraInventory
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/

11、配置 avahi-deamon

官方文档建议关闭 avahi-deamon 和 NOZEROCONF

systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
systemctl disable avahi-daemon.socket

##关闭 NOZEROCONF

[root@rhel64 oracle]# echo "NOZEROCONF=yes"  >>/etc/sysconfig/network

12、关闭透明大页和 numa

官方建议关闭透明大页和 numa,有一些 BUG 是由于这两个特性导致,并且打开对数据库的性能提升不大,因此直接关闭即可。

RHEL 7 可以直接修改内核来关闭透明大页和 numa:

12.1 

方法1:

sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg [root@orcl19c soft]# grub2-mkconfig -o /boot/grub2/grub.cfg

透明大页和 numa 的配置需要重启主机生效,这里先不重启,等全部配置完之后再重启主机!

12.2 方法2:

cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

cd /etc/default/
vi grub
GRUB_CMDLINE_LINUX="crashkernel=auto resume=UUID=b950d831-976e-4832-9ac5-d69e7586634d rd.lvm.lv=rhel/root rhgb quiet numa=off
transparent_hugepage=never"

grub2-mkconfig -o /boot/grub2/grub.cfg

cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

12.3. 关闭NUMA
#查看default 的grub 的entry
[root@rhel64 ~]# grubby --default-kernel
/boot/vmlinuz-4.18.0-193.el8.x86_64
#查看default grub的具体信息
[root@rhel64 ~]# grubby --info /boot/vmlinuz-4.18.0-193.el8.x86_64
index=0
kernel="/boot/vmlinuz-4.18.0-193.el8.x86_64"
args="ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
transparent_hugepage=never $tuned_params"
root="/dev/mapper/rhel-root"
initrd="/boot/initramfs-4.18.0-193.el8.x86_64.img $tuned_initrd"
title="Red Hat Enterprise Linux (4.18.0-193.el8.x86_64) 8.2 (Ootpa)"
id="46ca3114911f4c528cfc0b50547dd2c6-4.18.0-193.el8.x86_64"

#更新args , 添加numa=off的参数
[root@rhel64 ~]# grubby --args=numa=off /boot/vmlinuz-4.18.0-193.el8.x86_64
no action specified

# 确认numa=off加入default grub中
[root@rhel64 ~]# grubby --info /boot/vmlinuz-4.18.0-193.el8.x86_64

#重启服务器
reboot

确认numa已经被禁用了

13、配置系统参数文件

12.设置系统参数
修改内核参数
shmall 大于等于 shmmax 的值,以页为单位 /proc/sys/kernel/shmall
shmmax 物理内存大小的 1/2,以 bytes 为单位 /proc/sys/kernel/shmmax

##shmall's Calculation formula: physical memory 4G:(4*1024*1024*1024)/4096=1048576
##shmmax's Calculation formula: physical memory 4G:(4/2)*1024*1024*1024 -1=2147483647

[root@asm01 oracle]# cat >> /etc/sysctl.d/sysctl.conf < fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1048576
kernel.shmmax = 2147483647 #内存的50%, 以字节为单位
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
EOF
[root@asm01 oracle]# sysctl -p

14、配置系统资源限制

--13. 修改资源限制
[root@asm01 oracle]# cat >> /etc/security/limits.conf <

oracle  soft  nproc  2047
oracle  hard  nproc  16384
oracle  soft  nofile  1024
oracle  hard  nofile  65536
oracle  soft  stack  10240
oracle  hard  stack  32768
oracle soft memlock 3145728
oracle hard memlock 3145728
EOF

15、配置 pam.d

  
14. 设置PAM
[root@asm01 oracle]# cat >> /etc/pam.d/login < session    required     /lib64/security/pam_limits.so
EOF
--session    required     pam_limits.so
session    required     /lib64/security/pam_limits.so

16、配置 /dev/shm

--2. set shm
df -h /dev/shm

mount -o remount,size=4G /dev/shm
vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=4G 0 0

17、配置oracle用户环境变量

su - oracle
echo $SHELL
vi .bash_profile
umask 022

vi .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=/u01/app/oracle/product/19.3.0/dbhome_1/bin:$PATH

18、设置OS运行级别

systemctl get-default
systemctl set-default graphical.target

19、调整SWAP


[root@eita1 ~]# free -h

依次执行以下命令,创建swap分区并挂载

[root@eita1 ~]# dd if=/dev/zero of=/swapfile bs=1M count=3072
[root@eita1 ~]# mkswap /swapfile
[root@eita1 ~]# swapon /swapfile

20、数据库磁盘

--4. disk
[root@eita1 ~]# ll /dev/nvm*

fdisk /dev/nvme0n2
n p 1 enter enter enter w


[root@eita1 ~]# mkfs -t xfs /dev/nvme0n2p1

创建u01目录,并将nvme0n2p1挂载至u01

[root@eita1 ~]# mkdir /u01
[root@eita1 ~]# mount /dev/nvme0n2p1 /u01
[root@eita1 ~]# vi /etc/fstab
/dev/nvme0n2p1   /u01                      xfs     defaults        0 0

21、 Setting UDP and TCP Kernel Parameters Manually
cat /proc/sys/net/ipv4/ip_local_port_range
echo 9000 65500 > /proc/sys/net/ipv4/ip_local_port_range
restart the network
nmcli networking off && nmcli networking on

23、设置network

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rhel64
GATEWAY=192.168.72.1

24、oracle limit
vi /etc/profile
if [ $USER = "oracle" ]; then 
        if [ $SHELL = "/bin/ksh" ]; then
                ulimit -p 16384
                ulimit -n 65536
        else
                ulimit -u 16384 -n 65535
        fi
fi

1. check OS
cat /etc/redhat-release
uname -r

 
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
df -h /tmp
free
uname -m

--24. get oracle install soft

[root@rhel64 ~]# /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs/
Error -107 cannot open connection!


--get oracle install soft
umount /mnt/hgfs
/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs/
vmare setup share folder
cd /mnt/hgfs/oraclesoft/19c
cp LINUX.X64_193000_db_home.zip /u01/app/

cd /
mkdir soft
scp LINUX.X64_193000_db_home.zip  192.168.72.10:/soft/
unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1
 chown -R oracle:oinstall /u01/app/oracle/product/19.3.0/dbhome_1

#注意从12C开始,oracle的安装文件(解压出来的所有文件)必须放在ORACLE_HOME目录下,本例是/u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
unzip 安装包.zip chown -R oracle:ointall 目录 chmod -R 775 目录
cd 目录
mv *  /u01/app/oracle/product/19.3.0/dbhome_1

二、安装 Oracle 软件


--oracle login
cd /u01/app/oracle/product/19.3.0/dbhome_1
[oracle@DATABASE db_1]$ export CV_ASSUME_DISTID=RHEL7.6
./runInstaller &

[oracle@rhel64 database]$ /u01/app/database/perl/bin/perl: error while loading shared libraries: libnsl.so.1: cannot open
shared object file: No such file or directory

http://digops.cc/posts/56682/

5.该如何解决libnsl.so.1找不到的问题?
有两种方法可以解决:

通过yum安装libnsl
yum install libnsl
通过修改软链接方式进行欺骗
在没有yum源的情况下可以考虑此方法
[root@rhel64 soft]# cd /lib64
[root@rhel64 lib64]# ln -s  libnsl.so.2.0.0  libnsl.so.1



--run root.sh
[root@rhel64 /]# /u01/app/oraInventory/orainstRoot.sh
[root@rhel64 /]# /u01/app/oracle/product/19.3.0/dbhome_1/root.sh

四, 创建和配置数据库

--1. create db

[oracle@rhel64 admin]$ dbca
dbca create acp1 db

--2. listener

 配置listenner.ora  sqlnet.ora  tnsnames.ora的配置

cd   /u19/app/oracle/product/19.2.0/dbhome_1/network/admin

touch   listenner.ora

touch  sqlnet.ora

touch  tnsnames.ora

分别将不同的配置文件进行填写
[oracle@rhel64 admin]$ vi sqlnet.ora
NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)

oracle@rhel64 admin]$ vi listener.ora
LISTENER =
  (ADDRESS_LIST=
       (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.72.10)(PORT=1521))
   )

SID_LIST_LISTENER=
   (SID_LIST=
       (SID_DESC=
          (GLOBAL_DBNAME=salesdb.mycompany)
          (SID_NAME=sid1)                      
          (ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1)
         )
    )

[oracle@rhel64 admin]$ vi tnsnames.ora
orcl=
    (DESCRIPTION=
        (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.72.10)(PORT=1521)
        )
        (CONNECT_DATA=
            (SERVER=DEDICATED)
            (SERVICE_NAME=orcl)
        )
    )

3. 启动监听器   lsnrctl   start

4. test orcl db


[oracle@rhel64 ~]$ export ORACLE_SID=orcl
[oracle@rhel64 ~]$ sqlplus / as sysdba

[oracle@rhel64 ~]$ sqlplus sys/oracle@orcl as sysdba

check datafile, controlfile, logfile
SQL> select name from v$datafile;
SQL> select name from v$controlfile;
SQL> select member from v$logfile;


--5. db autostart

--6. db auto shutdown

         由于上一步配置了listenner.ora,所以监听器启动可以启动我们配置的实例syc
-slient install
https://blog.csdn.net/u010080562/article/details/122709155

五,standby 搭建

1. standby server 配置

1. set net card
close rhel64st
generate new card
rhel64: 00:50:56:2A:45:F8
rhel64st:00:50:56:38:4D:F4
Install oracle 19C on Redhat8_第47张图片

net card UUID 

 Install oracle 19C on Redhat8_第48张图片

2. scp pfile / orapwd file

primary server 

cd $ORACLE_HOME/dbs

scp  initorcl.ora [email protected]:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/initorclst.ora

scp orapworcl [email protected]:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapworclst

 
 

3. 修改standby pfile

[oracle@rhel64st ~]$ cd $ORACLE_HOME/dbs

oracle@rhel64st dbs]$ ls
init.ora  initorclst.ora  orapworcl
[oracle@rhel64st dbs]$ vi initorclst.ora
[oracle@rhel64st dbs]$ cat initorclst.ora 
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=603979776
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=637534208
orcl.__sga_target=939524096
orcl.__shared_io_pool_size=50331648
orcl.__shared_pool_size=234881024
orcl.__streams_pool_size=0
orcl.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orclst/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/ORCLST/control01.ctl','/u01/app/oracle/oradata/ORCLST/control02.ctl'
*.db_block_size=8192
*.db_name='orcl'
*.db_recovery_file_dest_size=16106127360
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=1500m
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'

#dg
DB_UNIQUE_NAME=orclst
LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orclst)'
LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclst'
LOG_ARCHIVE_DEST_2='SERVICE=orcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

#standby
FAL_SERVER=orcl
DB_FILE_NAME_CONVERT='/ORCL/','/ORCLST/'
LOG_FILE_NAME_CONVERT='/ORCL/','/ORCLST/'
STANDBY_FILE_MANAGEMENT=AUTO

4. 创建standby 文件夹


[oracle@rhel64st dbs]$ mkdir -p /u01/app/oracle/admin/orclst/adump /u01/app/oracle/oradata/ORCLST/

[oracle@rhel64st dbs]$ mkdir -p /u01/app/oracle/oradata/flash_recovery_area
 

[oracle@rhel64st dbs]$ export ORACLE_SID=orclst
[oracle@rhel64st dbs]$ sqlplus / as sysdba
SQL> startup nomount;
 

5. configure listener

LISTENER =
  (ADDRESS_LIST=
       (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.72.202)(PORT=1521))
   )

SID_LIST_LISTENER=
   (SID_LIST=
       (SID_DESC=
          (GLOBAL_DBNAME=orclst)
          (SID_NAME=orclst)
          (ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1)
         )
    )
~                                                                               
~          

6. configure tnsnames.ora

orcl=
        (DESCRIPTION=
                (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.72.201)(PORT=1521)
                )
                (CONNECT_DATA=
                        (SERVER=DEDICATED)
                        (SERVICE_NAME=orcl)
                )
        )

orclst=
        (DESCRIPTION=
                (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.72.202)(PORT=1521)
                )
                (CONNECT_DATA=
                        (SERVER=DEDICATED)
                        (SERVICE_NAME=orclst)
                )
        )
 

7.  rman duplicate standby

 rman target sys/oracle@orcl auxiliary sys/oracle@orclst

duplicate target database for standby from active database nofilenamecheck;

8.  open standby and check

SQL> alter database open;
SQL> recover managed standby database using current logfile disconnect from session;
 

SQL> select name,open_mode,database_role from v$database;

NAME      OPEN_MODE           DATABASE_ROLE
--------- -------------------- ----------------
ORCL      READ ONLY WITH APPLY PHYSICAL STANDBY
 

六, primary , standby switchover 


SQL> alter database commit to switchover to primary with session shutdown;
 

七, 日常检查


--dg check 3 3 3 3
--1. instance mode
select instance_name,status from v$instance;
--2. db mode
select name,open_mode from v$database;
--3. protection mode
select name,database_role,protection_mode,protection_level from v$database;
--4. log parameter
show parameter log_archive_dest_2
--5. log applied
select sequence#,applied from v$archived_log order by sequence#;
--6. log process status
select process,status from v$managed_standby;
--7.dg status
select message_num,message from v$dataguard_status;
--8. switchover status
select switchover_status from v$database;
--9. log gap status
select status,gap_status from v$archive_dest_status ;

--primary
--1. force logging
select name,force_logging from v$database;
--2. log file path
select dest_name, status ,error from v$archive_dest;

--secondary
--1. log gap
select * from v$archive_gap;


--dg shutdown  4 5 4 4 5
--1 check log primary ,standby
archive log list
--primary ,standby
--2. listener stop
lsrctl stop
--3. primary db stop
shutdown immediate;
--4. standby db stop
select name,open_mode from v$database;
alter database recover managed standby database cancel;
shutdown immediate;

--dg startup
--1. primary db, listener start
startup
lsnrctl start
--2. standby db, listener start
startup or startup mount
lsnrctl start
--3. log apply
alter database recover managed standby database using current logfile disconnect from session;
--4. log archive primary
alter system archive log current;
--5. check both log
archive log list;


--5. primary, secondary -switchover
--switchover is plan , no data loss, switchover again
--5.1 primary , secondary status
select status from v$instance;
select open_mode vrom v$database;
--5.2 switchover role and status  primary =active
select name,database_role,switchover_status from v$database;
--5.3 switchover role and status   secondary=standby to primary
select name,database_role,switchover_status from v$database;
ALTER DATABASE SWITCHOVER TO CHICAGO VERIFY;

--5.4 convert primary to secondary  --step 4, 5, 6
alter database commit to switchover to physical standby with session shutdown;
--5.5 startup secondary to mount and check database_role
alter database recover managed standby database cancel;
shutdown immediate;
startup mount;
select name,database_role,switchover_status from v$database; --primary
--5.6 startup primary  to mount
startup nomount;
alter database mount standby database;
alter database recover managed standby database disconnect from session
select name,database_role,switchover_status from v$database;

--5.7  convert secondary to primary
alter database recover managed standby database disconnect from session;
select name,database_role,switchover_status from v$database;
alter database commit to switchover to primary;
select name,database_role,switchover_status from v$database;

shutdown immediate;
startup;
alter system switch logfile;
select name,database_role,switchover_status from v$database;

--5.8 check both
archive log list;

--failover prepare step
--1. on primary ,if can be mount ,send redo to target standby , if can't be mount skip this step
alter system flash redo to target_db_name;
--2. check target standby new archive number ,check if consistent with primary , if not scp no receive archive log
select unique thread# as thread,max(sequence#) over(partition by thread#) as last from v$archived_log;
--3. check target standby gap , scp missing archive log
select thread#,log_sequence#,high_sequence# from v$archive_gap;
--4. register lost archive file
alter database register physical logfile 'filespec1';

--failover
--1. stop standby log apply
alter database recover managed standby database cancel;
--2. finish log apply
alter database recover managed standby database finish;
or
alter database recover managed standby database finish force;
--3. check standby status
select switchover_status from v$database;
--4. convert standby to primary
alter database commit to switchover to primary with session shutdown;
--5. open new primary
alter database open;
--6. check new primary status
select name,open_mode ,database_role from v$database;

--error 4 , 5
--1. ora-01111  add datafile error
--2. ora-01031 insufficient privileges error , recreate password file on primary and standby
--3. ora-03113 archived log error
--4. ora-16191 primary log shipping client not logged on standby,recreate password file on primary and standby


--log gap
--1. no archive log space
--2. network slow
--3. no start dg listener
--4. lost log
--5. dg down

八, 常见错误处理

九, standby 不同步处理


先停止应用日志,恢复丢失的日志,重新开启应用日志。gap信息查看,所有节点restore,查看节点缺少哪些号,然后再去每个节点restore一遍,弄完重新同步一下,然后开启实时应用。
recover managed standby database cancel;  

使用rman恢复缺失的日志

run

{

allocate channel c1 type 'sbt_tape';

allocate channel c2 type 'sbt_tape';

allocate channel c3 type 'sbt_tape';

allocate channel c4 type 'sbt_tape';

send 'NB_ORA_SERV=ynnbumaster, NB_ORA_CLIENT=gxr2db04dr';

restore archivelog from sequence 441 thread 1;        

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}

重启MRP进程 开启实时同步

alter database recover managed standby database using current logfile disconnect from session;

这个时候MRP进程是起来的。

应用之后,检查ADG同步状态

SQL> select 'Primary :' "DB Role",thread#,max(sequence#)

  from v$archived_log

  where standby_dest='NO'

  group by thread#

  union

  select 'Standby :' "DB Role",thread#,max(sequence#)

  from v$archived_log

  where standby_dest='YES' and applied='YES'

  group by thread#

 order by thread#;

你可能感兴趣的:(oracle,数据库)