Oracle Rac 使用nfs搭建各自节点归档目录

Oracle Rac 使用nfs搭建各自节点归档目录

Oracle Rac 使用nfs搭建各自节点归档目录

本次是在Oracle Rac环境下已有了ASM共享存储的前提下没有把归档目录设置在ASM存储里,而是使用了nfs协议两节点互相能识别各自的归档目录,这种环境设置在生产服务器的话在nfs相关的mount方面需特别注意,不然会导致各种异常问题,不建议在生产端使用。生产端建议备份至ASM共享存储里,以下是这次试验的过程和踩坑,最终结果为两节点能正常归档、互相识别并且单节点能正常运行。

背景

操作系统:redhat7.7

[root@rac1 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.7 (Maipo)

Grid和Oracle版本:19C

[grid@rac1 ~]$ crsctl query crs releaseversion 
Oracle High Availability Services release version on the local node is [19.0.0.0.0]
[grid@rac1 ~]$ crsctl query crs softwareversion
Oracle Clusterware version on node [rac1] is [19.0.0.0.0]
[grid@rac1 ~]$ crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [19.0.0.0.0]

[oracle@rac1 ~]$ sqlplus -v

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

数据库归档情况:未开启

SQL> archive log list
Database log mode              No Archive Mode   //非归档模式
Automatic archival             Disabled			//禁用	
Archive destination            /u01/app/oracle/product/19.3.0/db_1/dbs/arch
Oldest online log sequence     22
Current log sequence           23

部署过程

  1. 两节点创建各自的lvm归档目录(两节点分别做)

    两节点分别增加50G硬盘作为归档目录用途。

     [root@rac1 ~]# fdisk -l    //增加硬盘后查看增加的硬盘 
     -----------------------
     Disk /dev/sdh: 53.7 GB, 53687091200 bytes, 104857600 sectors
     Units = sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/O size (minimum/optimal): 512 bytes / 512 bytes
     Disk label type: dos
     Disk identifier: 0x15927720
    
     [root@rac1 ~]# fdisk /dev/sdh     //对增加的sdb硬盘做修改
     Welcome to fdisk (util-linux 2.23.2).
     
     Changes will remain in memory only, until you decide to write them.
     Be careful before using the write command.
     
     Command (m for help): 
     m--> n-->		//增加分区
     m--> p			//查看sdb盘的分区情况
     m--> t--> l--> 8e   //修改分区1的格式为lvm
     m--> w   //保存
    
     [root@rac1 ~]# pvcreate /dev/sdh1  //创建PV
     [root@rac1 ~]# pvs
       PV         VG       Fmt  Attr PSize   PFree   
       /dev/sda2  rhel     lvm2 a--   48.00g    4.00m
       /dev/sdh1           lvm2 a--  <50.00g 1020.00m
     [root@rac1 ~]# vgcreate vg_arch1 /dev/sdh1  //创建VG
     [root@rac1 ~]# lvcreate -L +49G -n lv_arch1 vg_arch1  //创建LV
     [root@rac1 ~]# lvs
       LV       VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
       root     rhel     -wi-ao---- 40.00g                                                    
       swap     rhel     -wi-ao----  8.00g                                                    
       lv_arch1 vg_arch1 -wi-ao---- 49.00g 
     [root@rac1 ~]# mkfs.xfs /dev/vg_arch1/lv_arch1 
     [root@rac1 ~]# mkdir /arch1
     [root@rac1 ~]# mount /dev/vg_arch1/lv_arch1 /arch1
     [root@rac1 ~]# vi /etc/fstab
     增加以下内容
     /dev/mapper/vg_arch1-lv_arch1   /arch1    xfs  defaults  0 0
     [root@rac1 ~]# df -h    //查看挂载的挂载成功
     Filesystem                     Size  Used Avail Use% Mounted on
     devtmpfs                       3.9G   24K  3.9G   1% /dev
     tmpfs                          3.9G  893M  3.0G  23% /dev/shm
     tmpfs                          3.9G   91M  3.8G   3% /run
     tmpfs                          3.9G     0  3.9G   0% /sys/fs/cgroup
     /dev/mapper/rhel-root           40G   29G   12G  71% /
     /dev/sda1                      297M  165M  133M  56% /boot
     tmpfs                          783M   48K  783M   1% /run/user/54322
     tmpfs                          783M  4.0K  783M   1% /run/user/42
     tmpfs                          783M   56K  783M   1% /run/user/54321
     /dev/sr0                       4.2G  4.2G     0 100% /media/cdrom
     /dev/mapper/vg_arch1-lv_arch1   49G  107M   49G   1% /arch1
     tmpfs                          783M     0  783M   0% /run/user/0
     [root@rac1 ~]# chown oracle:oinstall -R /arch1  
    
  2. 使用NFS协议分别挂载两节点的归档目录(两节点分别做)

    NFS协议是一种用于文件共享的协议,它可以使得主机之间进行文件的共享。客户端可以像在本机上的文件一样操作远程主机的文件。NFS协议最初仅支持UDP协议,目前最新版本的NFS可以支持UDP和TCP协议,不过UDP协议的速度会更快。

    NFS协议是一个十分简单的协议,它本身没有提供信息传输的协议和功能。之所以NFS能够让主机之间通过网络进行资料共享,这是因为NFS使用了一些其它的传输协议,主要用到了RPC(Remote Procedure Call)功能。所以在启动NFS服务器的时候需要启动RPC服务。linux7安装需要安装nfs的相关包和portmap

     [root@rac1 arch1]# yum install nfs* portmap -y   //NFS与RPC同时安装的yum命令
     [root@rac1 ~]# systemctl stop firewalld   //关闭防火墙
     [root@rac1 ~]# vi /etc/sysconfig/selinux   
     SELINUX=disabled   //关闭selinux
    

    节点1共享/arch1目录

     [root@rac1 ~]# cat /etc/exports   //节点1(只允许61这台机访问、读写、非授权访问、同步写入到内存和硬盘中、客户机上的任何用户访问该共享目录时都映射成匿名用户,映射成uid和gid为54321)
     /arch1 10.16.35.61(rw,insecure,sync,all_squash,anonuid=54321,anongid=54321)
    
     [root@rac1 ~]# systemctl start nfs.service   //启动nfs服务
     [root@rac1 ~]# systemctl enable nfs.service   //设置开机启动
     Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
     [root@rac1 ~]# systemctl is-enabled nfs.service
     enabled
     [root@rac1 ~]# systemctl  is-enabled  rpcbind
     enabled
       
     如果nfs服务以及启动了,临时增加需要共享的目录只需以下命令
     [root@rac1 ~]# exportfs -rv   //重新mount /etc/exports中分享出来的目录
     [root@rac1 ~]# mkdir /arch2   //创建跟目录/arch2目录
     [root@rac1 ~]# mount -t nfs -o  rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 10.16.35.61:/arch2 /arch2     //使用oracle建议的方式挂载nfs远程目录
    

    节点2共享/arch2目录。

     [root@rac2 arch1]# cat /etc/exports   //节点2(只允许61这台机访问、读写、非授权访问、同步写入到内存和硬盘中、客户机上的任何用户访问该共享目录时都映射成匿名用户,映射成uid和gid为54321)
     /arch2 10.16.35.60(rw,insecure,sync,all_squash,anonuid=54321,anongid=54321)
     [root@rac2 ~]# systemctl start nfs.service   //启动nfs服务
     [root@rac2 ~]# systemctl enable nfs.service   //设置开机启动
     Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
     [root@rac2 ~]# systemctl is-enabled nfs.service
     enabled
    
     如果nfs服务以及启动了,临时增加需要共享的目录只需以下命令
     [root@rac2 ~]# exportfs -rv   //重新mount /etc/exports中分享出来的目录
     [root@rac2 ~]# mkdir /arch1   //创建跟目录/arch2目录
     [root@rac2 ~]# mount -t nfs -o  rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 10.16.35.60:/arch1 /arch1     //使用oracle建议的方式挂载nfs远程目录
    
    
     如果是这样指定mount的:
     mount -t nfs 192.168.0.21:/archive /archive 
     备份归档时报错:
     ORA-19625: error identifying file /archive/1_42_682943725.arch
     ORA-27054: NFS file system where the file is created or resides is not mounted with correct options
     
     需要增加mount参数:
     mount -t nfs -o  rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 10.16.35.60:/arch1 /arch1
     指定参数后,归档进程就可以正常的在NFS文件系统上归档了。
    

    其他相关系统的mount参数参考资料
    http://blog.itpub.net/441019/viewspace-1055565/

    配置好后的目录情况如下:

     [root@rac1 ~]# df -h   //rac1节点目录
     Filesystem                     Size  Used Avail Use% Mounted on
     devtmpfs                       3.9G   24K  3.9G   1% /dev
     tmpfs                          3.9G  893M  3.0G  23% /dev/shm
     tmpfs                          3.9G   91M  3.8G   3% /run
     tmpfs                          3.9G     0  3.9G   0% /sys/fs/cgroup
     /dev/mapper/rhel-root           40G   29G   12G  71% /
     /dev/sda1                      297M  165M  133M  56% /boot
     tmpfs                          783M   48K  783M   1% /run/user/54322
     tmpfs                          783M  4.0K  783M   1% /run/user/42
     tmpfs                          783M   52K  783M   1% /run/user/54321
     /dev/sr0                       4.2G  4.2G     0 100% /media/cdrom
     /dev/mapper/vg_arch1-lv_arch1   49G  107M   49G   1% /arch1
     10.16.35.61:/arch2              49G  176M   49G   1% /arch2    //nfs目录
     tmpfs                          783M     0  783M   0% /run/user/0
    
     [root@rac2 arch1]# df -h   //RAC2节点目录
     Filesystem                     Size  Used Avail Use% Mounted on
     devtmpfs                       3.9G   24K  3.9G   1% /dev
     tmpfs                          3.9G  893M  3.0G  23% /dev/shm
     tmpfs                          3.9G   74M  3.8G   2% /run
     tmpfs                          3.9G     0  3.9G   0% /sys/fs/cgroup
     /dev/mapper/rhel-root           40G   27G   13G  68% /
     /dev/sda1                      297M  165M  133M  56% /boot
     tmpfs                          783M     0  783M   0% /run/user/54322
     /dev/mapper/vg_arch2-lv_arch2   49G  177M   49G   1% /arch2
     10.16.35.60:/arch1              49G  107M   49G   1% /arch1   //nfs目录
     tmpfs                          783M     0  783M   0% /run/user/0
    
  3. NFS自动挂载配置(2个节点分别做)

    NFS开机挂载的命令不能写入到/etc/fstab 中,由于 NFS 依赖于网络,而/etc/fstab 的引用是在计算机网络尚未启动的时候就开始引导,因此肯定无法挂载成功!我们应该把挂载命令写入到/etc/rc.d/rc.local 中。

    节点1:

     [root@rac1 ~]# vi /etc/rc.d/rc.local  //节点1
     #!/bin/bash
     # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
     #
     # It is highly advisable to create own systemd services or udev rules
     # to run scripts during boot instead of using this file.
     #
     # In contrast to previous versions due to parallel execution during boot
     # this script will NOT be run after all other services.
     #
     # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
     # that this script will be executed during boot.
     
     touch /var/lock/subsys/local
     
     增加以下内容
     mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 10.16.35.61:/arch2 /arch2
    

    节点2:

     [root@rac2 ~]# vi /etc/rc.d/rc.local  //节点2
     #!/bin/bash
     # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
     #
     # It is highly advisable to create own systemd services or udev rules
     # to run scripts during boot instead of using this file.
     #
     # In contrast to previous versions due to parallel execution during boot
     # this script will NOT be run after all other services.
     #
     # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
     # that this script will be executed during boot.
     
     touch /var/lock/subsys/local
     
     增加以下内容
     mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 10.16.35.60:/arch1 /arch1
    
  4. 数据库配置归档信息和开启归档(1个节点做就OK)

     [root@rac1 ~]# su - oracle
     Last login: Tue May 12 16:34:43 CST 2020 on pts/0
     [oracle@rac1 ~]$ sqlplus / as sysdba
     
     SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 12 16:35:02 2020
     Version 19.3.0.0.0
     
     Copyright (c) 1982, 2019, Oracle.  All rights reserved.
     
     
     Connected to:
     Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
     Version 19.3.0.0.0
     
     SQL> show parameter archive
     
     NAME                                 TYPE        VALUE
     ------------------------------------ ----------- ------------------------------
     archive_lag_target                   integer     0
     log_archive_config                   string
     log_archive_dest                     string
     log_archive_dest_1                   string      // 修改此参数
     
     SQL> create pfile='/rac/spfile/orcl.ora' from spfile='+DATA1/orcl/spfileorcl.ora';   //简答备份下spfile
     
     SQL> alter system set log_archive_dest_1='location=/arch1' sid='racdb1' scope=spfile;  //节点1修改归档路径为/arch1,需重启数据库生效
     SQL> alter system set log_archive_dest_1='location=/arch2' sid='racdb2' scope=spfile;   //节点2修改归档路径为/arch2,需重启数据库生效
     
     SQL> alter system set log_archive_format="racdb%t_%r_%t_%s.arc" scope=spfile sid='racdb1';   //节点1修改归档格式,需重启数据库生效
     SQL> alter system set log_archive_format="racdb%t_%r_%t_%s.arc" scope=spfile sid='racdb2';   //节点2修改归档格式,需重启数据库生效
      
     
     [oracle@rac1 ~]$ srvctl stop database -d racdb  //关闭RAC数据库
     [oracle@rac1 ~]$ srvctl start database -d racdb  //启动RAC数据库
     
     取值意义
     
     该参数指定Oracle 归档文件的文件格式,由一些字符串和变量组成
     只在归档模式下适用
     
     可使用如下变量
     %s 日志sequence 号
     %S 日志 sequence号,0填充
     %t thread号
     %T thread 号,0填充
     %a activation ID
     %d 数据库ID
     %r resetlogs ID
     
     其中大写的字母表示固定长度,不足则用0填充
     其中 %s,%t,%r 为必须变量以保证文件名唯一
     如果缺少其中一个则会启动时报错
    
     [oracle@rac1 ~]$ srvctl  stop database -d racdb   //关闭数据库
     [oracle@rac1 ~]$ srvctl  start database -d racdb  //开启数据库
    
    
    
     SQL> archive log list
     Database log mode              Archive Mode
     Automatic archival             Enabled
     Archive destination            /arch1
     Oldest online log sequence     25
     Next log sequence to archive   26
     Current log sequence           26
     SQL> alter system switch logfile;   //手动归档
     
     System altered.
     
     SQL> archive log list
     Database log mode              Archive Mode
     Automatic archival             Enabled
     Archive destination            /arch1
     Oldest online log sequence     26
     Next log sequence to archive   27
     Current log sequence           27
    
     [oracle@rac1 ~]$ cd /arch1
     [oracle@rac1 arch1]$ ll  //查看归档记录,显示正常。
     total 154768
     drwxr-xr-x 2 oracle oinstall        6 May 11 10:12 bak
     -rw-r----- 1 oracle asmadmin  2514432 May 12 17:49 racdb1_1038938886_1_26.arc
    

结尾

至此,开启归档设置完毕。其实在此实验中配置附档参数的时候当时配置多了,导致节点2启动不了报错,后续整理在此次实验后。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值