概述



       RAC全称是Real Application Clusters,中文译为“实时应用集群”,是ORACLE甲骨文公司提供的在低成本服务器上构建高可用性数据库系统的解决方案,部署自由,无需购买额外部件,就可以实现多节点的负载均衡和故障转移功能,满足7*24业务不间断的需求,而且,结合“Oracle数据卫士”(OracleData Guard),Oracle RAC所受到的保护就能抵御重大的场地故障、人为误操作、自然灾害等,真正实现负载均衡+异地容灾+灾难恢复。关于rac+dg的优点这里就不一一赘述了,下面进入实战部署环节。




一、DataGuard环境:


RAC + DataGuard有四种组合,这里我们选择RAC + Single standby 的模式。



RAC Primary Database 环境:

      服务器主机名            rac1                    rac2
公共IP地址(eth0) 192.168.56.101 192.168.56.102
虚拟IP地址(eth0) 192.168.56.201 192.168.56.202
私有IP地址(eth1) 10.10.10.101      10.10.10.102
ORACLE RAC SID          rac1                 rac2
集群实例名称 rac-scan
SCAN IP  192.168.56.100


Standby Database 环境:

     公共IP地址(eth0) 192.168.56.10

     ORACLE_SID        rac


二、RAC环境部署






以下操作均在两个节点配置!!!



1、网卡配置


[html] view plain copy


1. [root@rac1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0  
2. DEVICE=eth0
3. HWADDR=00:0C:29:58:EA:A5  
4. TYPE=Ethernet
5. UUID=69c53a7f-749f-46e3-90e4-2f1e739a6c2f  
6. ONBOOT=yes
7. NM_CONTROLLED=no
8. BOOTPROTO=none
9. IPADDR=192.168.56.101  
10. NETMASK=255.255.255.0  
11. GATEWAY=192.168.56.1


[html] view plain copy


1. [root@rac1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1  
2. DEVICE=eth1
3. ONBOOT=yes
4. NM_CONTROLLED=no
5. BOOTPROTO=none
6. IPADDR=10.10.10.101  
7. NETMASK=255.255.255.0  
8. GATEWAY=10.10.10.1

2、修改/etc/hosts文件


[html] view plain copy


1. [root@rac1 ~]# vi /etc/hosts  
2.   
3. #public IP  
4. 192.168.56.101   rac1  
5. 192.168.56.102   rac2  
6.   
7. #virtual IP  
8. 192.168.56.201   rac1-vip  
9. 192.168.56.202   rac2-vip  
10.   
11. #private IP  
12. 10.10.10.101     rac1-priv  
13. 10.10.10.102     rac2-priv  
14.   
15. #SCAN IP  
16. 192.168.56.100   rac-scan


3、配置yum源


[html] view plain copy


1. [root@rac1 ~]# mv /etc/yum.repos.d/rhel-source.repo /etc/yum.repos.d/rhel-source.repo.bak  
2. [root@rac1 ~]# vi /etc/yum.repos.d/rhel-local.repo  
3. [local_repo]  
4. name=local_repo
5. baseurl=file:///media/rhel_local/  
6. enabled=1
7. gpgcheck=0

4、创建挂载目录


[html] view plain copy


1. [root@rac1 ~]# mkdir /media/rhel_local/  
2. [root@rac1 ~]# mount /dev/sr0/ /media/rhel_local/  
3. [root@rac1 ~]# yum clean all  
4. [root@rac1 ~]# yum repolist


5 、安装 oracle 必需的依赖包


[html] view plain copy



1. [root@rac1 ~]# yum install -y binutils compat-libcap1 compat-libstdc++* gcc gcc-c++ glibc glibc-devel libgcc libstdc++ libstdc++-devel libaio libaio-devel sysstat make elfutils-libelf-devel  
2.   
3. [root@rac1 ~]# yum install -y xorg-x11-apps.x86_64                         
4. [root@rac1 ~]# yum install -y xterm-253-1.el6.x86_64  
5.   
6. [root@rac1 ~]# rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm   
7.   
8. [root@rac1 rpm]# rpm -ivh cvuqdisk-1.0.9-1.rpm


注:1、xorg-x11-apps.x86_64和 xterm-253-1.el6.x86_64用于使用xstart远程弹出图像化界面;

       2、pdksh-5.2.14-37.el5_8.1.x86_64.rpm也是oracle安装必需的安装包,但是在系统的ISO文件里边是没有的,需要自己到网上下载;不安装也是可以的,选择忽略即可。

      3、cvuqdisk-1.0.9-1.rpm包是解压数据库安装包之后,位于database/rpm目录下,需要通过scp命令上传到节点2进行安装,命令如下:


[html] view plain copy


1. [root@rac1 rpm]# scp cvuqdisk-1.0.9-1.rpm rac2:/tmp/


6、关闭防火墙


[html] view plain copy


1. [root@rac1 ~]# chkconfig iptables off  
2. [root@rac1 ~]# service iptables stop  
3. [root@rac1 ~]# chkconfig iptables --list  
4. iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

7、关闭NetworkManager




[html] view plain copy


1. [root@rac1 ~]# chkconfig NetworkManager off  
2. [root@rac1 ~]# service NetworkManager stop    
3. [root@rac1 ~]# chkconfig NetworkManager --list  
4. NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off


8、禁用SELinux



[html] view plain copy


1. [root@rac1 ~]# vim /etc/selinux/config   
2. SELINUX=disabled
3.   
4. [root@rac1 ~]# sestatus  
5. SELinux status:                 disabled  
6.   
7. [root@rac1 ~]# getenforce  
8. Disabled


9、禁用时间同步



[html] view plain copy



    1. [root@rac1 rpm]# mv /etc/ntp.conf /etc/ntp.conf.bak



    10、创建oracle和grid用户及其用户组



    [html] view plain copy


    1. [root@rac1 ~]# groupadd -g 201 oinstall  
    2. [root@rac1 ~]# groupadd -g 202 dba  
    3. [root@rac1 ~]# useradd -m -u 203 -g oinstall -G dba -d /home/grid -s /bin/bash grid  
    4. [root@rac1 ~]# useradd -m -u 202 -g oinstall -G dba -d /home/oracle -s /bin/bash oracle


    11、验证用户并修改密码



    [html] view plain copy


    1. [root@rac1 ~]# id oracle  
    2. [root@rac1 ~]# id grid  
    3. [root@rac1 ~]# id nobody  
    4. 修改密码:  
    5. [root@rac1 ~]# passwd oracle  
    6. [root@rac1 ~]# passwd grid


    12、创建目录结构并授予权限



    [html] view plain copy



      1. [root@rac1 ~]# mkdir -p /u01/grid/app/11.2.0  
      2. [root@rac1 ~]# mkdir -p /u01/grid/app/grid  
      3. [root@rac1 ~]# mkdir -p /u01/oracle/app/11.2.0  
      4. [root@rac1 ~]# chown -R grid:oinstall /u01/grid  
      5. [root@rac1 ~]# chown -R oracle:oinstall /u01/oracle



      13、配置grid和oracle用户环境变量



      [html] view plain copy


      1. [root@rac1 ~]# vi /home/grid/.bash_profile  
      2. export ORACLE_SID=+ASM1  
      3. export ORACLE_BASE=/u01/grid/app/grid  
      4. export ORACLE_HOME=/u01/grid/app/11.2.0                       
      5. export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin/:.  
      6. export TEMP=/tmp  
      7. export TMP=/tmp  
      8. export TMPDIR=/tmp  
      9. umask 022


      [html] view plain copy



        1. [root@rac1 ~]# vi /home/oracle/.bash_profile   
        2. export ORACLE_SID=rac1
        3. export ORACLE_BASE=/u01/oracle/app  
        4. export ORACLE_HOME=$ORACLE_BASE/11.2.0  
        5. export ORACLE_UNQNAME=rac
        6. export PATH=$ORACLE_HOME/bin:$PATH  
        7. umask 022



        注:grid的home目录不能在base目录下

        14、用户资源配置




        [html] view plain copy


          1. [root@rac1 ~]# vi /etc/security/limits.conf  
          2. grid soft nproc 2047  
          3. grid hard nproc 16384  
          4. grid soft nofile 1024  
          5. grid hard nofile 65536  
          6. oracle soft nproc 2047  
          7. oracle hard nproc 16384  
          8. oracle soft nofile 1024  
          9. oracle hard nofile 65536  
          15、


          修改登录限制,添加以下行


          [html] view plain copy

          1. [root@rac1 ~]# vi /etc/pam.d/login  
          2. session    required     pam_limits.so


          16、修改内核配置文件




          [html] view plain copy


          1. [root@rac1 ~]# vi /etc/sysctl.conf  
          2. fs.aio-max-nr = 1048576
          3. fs.file-max = 6815744
          4. kernel.shmall = 4194304
          5. kernel.shmmax = 12884901887
          6. kernel.shmmni = 4096
          7. kernel.sem = 250
          8. net.ipv4.ip_local_port_range = 9000
          9. net.core.rmem_default = 262144
          10. net.core.rmem_max = 4194304
          11. net.core.wmem_default = 262144
          12. net.core.wmem_max = 1048586
          13. net.ipv4.tcp_wmem = 262144
          14. net.ipv4.tcp_rmem = 4194304
          15.   
          16. 使配置生效  
          17. [root@rac1 ~]# sysctl -p

          注:1、kernel.shmmax用于定义单个共享内存段的最大值,设置应该足够大,能够在一个共享内存段下容纳整个的SGA,这个值是可以通过公式来计算的,例如12G的物理内存设置值为:kernel.shmmax=12*1024*1024*1024-1=12884901887
                  2、kernel.shmall用于控制可以使用的共享内存的总页数,Linux共享内存页大小为4kb,而且一个共享内存段的最大大小是16GB,那么需要的内存页数是:kernel.shmall=16G/4kb=16*1024*1024*1024/(4*1024)=4194304

          如果这个两个参数设置不合理,那么在安装的过程中就可能报错:SGA can not be greater than maximum shared memory segment size(0)或者ORA-27102:outof memory的错误。



          17、禁用大页内存


          [html] view plain copy


          1. [root@rac1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled  
          2. [always] madvise never  
          3. [root@rac1 ~]# grep AnonHugePages /proc/meminfo  
          4. AnonHugePages:     34816 kB  
          5. [root@rac1 ~]# vi /etc/grub.conf  
          6. transparent_hugepage=never

          18、配置磁盘udev规则




          [html] view plain copy


          1. [root@rac1 rpm]# lsblk  
          2. [root@rac1 rpm]# /sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb  
          3. [root@rac1 rpm]# /sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sdc  
          4. [root@rac1 rpm]# /sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sdd  
          5. [root@rac1 rpm]# /sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sde  
          6. [root@rac1 rpm]# /sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sdf  
          7. [root@rac1 rpm]# /sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sdg  
          8.   
          9. [root@rac1 rpm]# vim /etc/udev/rules.d/99-oracle.rules  
          10. KERNEL=="sd*", BUS=="scsi", PROGRAM=="scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29752a07064d7f4bee3c21493f6", NAME="asm-data1", OWNER="grid", GROUP="dba", MODE="0660"
          11. KERNEL=="sd*", BUS=="scsi", PROGRAM=="scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29a44da3235cca533f6ed2b0b08", NAME="asm-data2", OWNER="grid", GROUP="dba", MODE="0660"
          12. KERNEL=="sd*", BUS=="scsi", PROGRAM=="scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c2941f88cb68ebe1de205a2404ca", NAME="asm-ocr1", OWNER="grid", GROUP="dba", MODE="0660"
          13. KERNEL=="sd*", BUS=="scsi", PROGRAM=="scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29b2b10f5dd7045d3726f8b1df5", NAME="asm-ocr2", OWNER="grid", GROUP="dba", MODE="0660"
          14. KERNEL=="sd*", BUS=="scsi", PROGRAM=="scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29e13ab98faf53fa16329cadfec", NAME="asm-ocr3", OWNER="grid", GROUP="dba", MODE="0660"
          15.   
          16.   
          17. [root@rac1 ~]# start_udev  
          18. [root@rac1 ~]# ls /dev/asm*  
          19. /dev/asm-data1  /dev/asm-data2  /dev/asm-ocr1  /dev/asm-ocr2  /dev/asm-ocr3


          注:1、如果是VMware Station虚拟机环境,获取不到磁盘UUID的话,则要在两个节点的.vmx文件中添加以下两个参数行后,重启

          disk.locking="FALSE"

          disk.EnableUUID = "TRUE"

              2、如果是VirtualBox虚拟机环境,只要在虚拟介质管理把磁盘属性设置成共享即可。

          19、使用secureCRT的sftp工具,上传安装包到服务器


          [html] view plain copy


          1. sftp>
          2. sftp>
          3. sftp>
          4. p13390677_112040_Linux-x86-64_1of7.zip      p13390677_112040_Linux-x86-64_2of7.zip  
          5. p13390677_112040_Linux-x86-64_3of7.zip  
          6. sftp>

          20、解压安装包




          [html] view plain copy


          1. [root@rac1 ~]# cd /u01/soft/  
          2. [root@rac1 soft]# ls  
          3. p13390677_112040_Linux-x86-64_1of7.zip  p13390677_112040_Linux-x86-64_2of7.zip  p13390677_112040_Linux-x86-64_3of7.zip  
          4. [root@rac1 soft]# unzip p13390677_112040_Linux-x86-64_1of7.zip  
          5. [root@rac1 soft]# unzip p13390677_112040_Linux-x86-64_2of7.zip  
          6. [root@rac1 soft]# unzip p13390677_112040_Linux-x86-64_3of7.zip  
          7. [root@rac1 soft]# ll  
          8. total 3664224  
          9. drwxr-xr-x 7 root root       4096 Aug 27  2013 database  
          10. drwxr-xr-x 7 root root       4096 Aug 27  2013 grid  
          11. -rw-r--r-- 1 root root 1395582860 Oct 26  2015 p13390677_112040_Linux-x86-64_1of7.zip  
          12. -rw-r--r-- 1 root root 1151304589 Oct 26  2015 p13390677_112040_Linux-x86-64_2of7.zip  
          13. -rw-r--r-- 1 root root 1205251894 Mar 21 15:58 p13390677_112040_Linux-x86-64_3of7.zip


          21、如果是vsphereclient的话,可以直接打开控制台,此时安装是最为方便的,但是如果需要远程安装的话,推荐使用xmanager的xstart工具,它能远程弹出图形化界面,就不必要到机房安装了。这里先安装集群软件。




          [html] view plain copy


          1. [root@rac1 ~]# xclock                        
          2. [root@rac1 ~]# xhost +        
          3. access control disabled, clients can connect from any host                   
          4. [root@rac1 ~]# su - grid  
          5. [grid@rac1 ~]$ export DISPLAY=192.168.56.1:0.0    
          6. [grid@rac1 ~]$ cd /u01/soft/grid                    
          7. [grid@rac1 grid]$ ./runInstaller

           


          注:这里有个小技巧,如果我们按照以上方法还是弹不出安装界面的话,可以尝试直接使用grid用户登录,后边安装oracle库软件和dbca建库的时候也是如此。

          22、由于篇幅有限,安装过程就不一一罗列了(需要的朋友可以留言,QQ或者邮箱单独发给您)。但是需要注意的是,过程中会提示我们使用root用户执行两个脚本命令,注意先后顺序、注意先节点一,再节点二。




          [html] view plain copy


          1. [root@rac1 ~]# /u01/grid/app/oraInventory/orainstRoot.sh  
          2. [root@rac1 ~]# /u01/grid/app/11.2.0/root.sh

          23、同理,接下来安装oracle库软件(选择install database software only)




          [html] view plain copy



          1. [root@rac1 ~]# su - oracle  
          2. [oracle@rac1 ~]$ export DISPLAY=192.168.56.1:0.0                   
          3. [oracle@rac1 ~]$ cd /u01/soft/database                    
          4. [oracle@rac1 database]$ ./runInstaller                                
          5. [root@rac1 ~]# /u01/oracle/app/oraInventory/orainstRoot.sh  
          6. [root@rac1 ~]# /u01/oracle/app/11.2.0/root.sh


          24、接下来使用grid用户执行asmca创建磁盘组,使用oracle用户执行dbca命令安装数据库

          25、检查已经安装成功




          [html] view plain copy



          1. [grid@rac1 ~]$ crs_stat -t  
          2. Name           Type           Target    State     Host          
          3. ------------------------------------------------------------  
          4. ora.DATA.dg    ora....up.type ONLINE    ONLINE    rac1          
          5. ora.DATA2.dg   ora....up.type OFFLINE   OFFLINE                 
          6. ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1          
          7. ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac1          
          8. ora.VOTE.dg    ora....up.type ONLINE    ONLINE    rac1          
          9. ora.VOTE2.dg   ora....up.type OFFLINE   OFFLINE                 
          10. ora.asm        ora.asm.type   ONLINE    ONLINE    rac1          
          11. ora.cvu        ora.cvu.type   ONLINE    ONLINE    rac1          
          12. ora.gsd        ora.gsd.type   OFFLINE   OFFLINE                 
          13. ora....network ora....rk.type ONLINE    ONLINE    rac1          
          14. ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1          
          15. ora.ons        ora.ons.type   ONLINE    ONLINE    rac1          
          16. ora.rac.db     ora....se.type ONLINE    ONLINE    rac1          
          17. ora....SM1.asm application    ONLINE    ONLINE    rac1          
          18. ora....C1.lsnr application    ONLINE    ONLINE    rac1          
          19. ora.rac1.gsd   application    OFFLINE   OFFLINE                 
          20. ora.rac1.ons   application    ONLINE    ONLINE    rac1          
          21. ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1          
          22. ora....SM2.asm application    ONLINE    ONLINE    rac2          
          23. ora....C2.lsnr application    ONLINE    ONLINE    rac2          
          24. ora.rac2.gsd   application    OFFLINE   OFFLINE                 
          25. ora.rac2.ons   application    ONLINE    ONLINE    rac2          
          26. ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2          
          27. ora....ry.acfs ora....fs.type ONLINE    ONLINE    rac1          
          28. ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac1
          1.  


          三、DataGuard部署部分



             前面部分我们已经搭建了RAC环境了,此时我们需要另外一台服务器做standby database,在以下步骤之前,请确保该服务器已经安装好oracle库软件。

          主库配置及相关操作

          1、确认主库处于归档模式




          [html] view plain copy


          1. SQL>
          2. Database log mode              Archive Mode  
          3. Automatic archival             Enabled  
          4. Archive destination            +DATA  
          5. Oldest online log sequence     135  
          6. Next log sequence to archive   136  
          7. Current log sequence           136

          2、如果不是归档模式,必须先调整为归档模式




          [html] view plain copy



          1. SQL>


          3、主库设为FORCE LOGGING模式




          [html] view plain copy


          1. SQL>
          2. SQL>
          3.   
          4. NAME      LOG_MODE     FOR  
          5. --------- ------------ ---  
          6. RAC       ARCHIVELOG   YES

          4、查询主库日志文件




          [html] view plain copy


          1. SQL>
          2.   
          3.    THREAD#     GROUP#    MEMBERS BYTES/1024/1024  
          4. ---------- ---------- ---------- ---------------  
          5.          1          1          1              50  
          6.          1          2          1              50  
          7.          2          3          1              50  
          8.          2          4          1              50


          5、为主库添加6组standby log文件,以便它们自动被传送到备库。(一般比主库多一组)




          [html] view plain copy


          1. SQL>
          2. SQL>
          3. SQL>
          4. SQL>
          5. SQL>
          6. SQL>


             查询添加的日志文件


          [html] view plain copy


          1. SQL>
          2.   
          3.     GROUP#    THREAD# BYTES/1024/1024 STATUS  
          4. ---------- ---------- --------------- ----------  
          5.         11          1              50 UNASSIGNED  
          6.         12          1              50 UNASSIGNED  
          7.         13          1              50 UNASSIGNED  
          8.         14          2              50 UNASSIGNED  
          9.         15          2              50 UNASSIGNED  
          10.         16          2              50 UNASSIGNED  
          11.   
          12. 6 rows selected.


          6、修改主库初始化参数文件




          [html] view plain copy



            1. SQL> alter system set log_archive_config='DG_CONFIG=(rac,rac_dg)' scope=both sid='*';  
            2. SQL> alter system set log_archive_dest_2='SERVICE=o4db_dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rac_dg' scope=both sid='*';  
            3. SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';  
            4. SQL> alter system set log_archive_max_processes=8 scope=both sid='*';  
            5. SQL> alter system set db_file_name_convert='/oradata/rac/','+DATA/rac/datafile' scope=spfile sid='*';  
            6. SQL> alter system set log_file_name_convert='/oradata/rac/','+DATA/rac/onlinelog' scope=spfile sid='*';  
            7. SQL> alter system set standby_file_management=AUTO scope=both sid='*';  
            8. SQL> alter system set fal_server='rac_dg' scope=both sid='*';


            7、查看配置是否生效,通过下列语句查询




            [html] view plain copy



            1. SQL>
            2. SQL>
            3. SQL>
            4. SQL>
            5. db_file_name_convert                               /oradata/rac, +DATA/rac/datafile  
            6. log_file_name_convert                              /oradata/rac, +DATA/rac/onlinelog  
            7. log_archive_dest_1                                 LOCATION=+DATA  
            8. log_archive_dest_2                                 SERVICE=rac_dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rac_dg
            9. log_archive_dest_state_1                           enable  
            10. log_archive_dest_state_2                           ENABLE  
            11. fal_server                                         rac_dg  
            12. log_archive_config                                 DG_CONFIG=(rac,rac_dg)  
            13. log_archive_format                                 %t_%s_%r.arc  
            14. log_archive_max_processes                          8  
            15. standby_file_management                            AUTO  
            16. remote_login_passwordfile                          EXCLUSIVE  
            17. db_name                                            rac  
            18. db_unique_name                                     rac  
            19.   
            20. 14 rows selected.


            8、配置主库本地NET服务名(两个节点,包括standby database节点)




            [html] view plain copy


            1. [oracle@rac1 ~]$ vi /u01/oracle/app/11.2.0/network/admin/tnsnames.ora   
            2. RAC
            3. DESCRIPTION
            4. ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))  
            5. CONNECT_DATA
            6. SERVER = DEDICATED)  
            7. SERVICE_NAME = rac)  
            8.     )  
            9.   )  
            10.   
            11. RAC_DG
            12. DESCRIPTION
            13. ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.10)(PORT = 1521))  
            14. CONNECT_DATA
            15. SERVER = DEDICATED)  
            16. SERVICE_NAME = rac_dg)  
            17.     )  
            18.   )


            9、在主库中创建StandbyControl File,并上传到standby节点




            [html] view plain copy


            1. SQL>
            2. [oracle@rac1 ~]$ scp /tmp/control_dg.ctl 192.168.56.10:/oradata/rac/control01.ctl

            10、主库做全库备份




            [html] view plain copy



            1. RMAN>
            2.   
            3. Starting backup at 25-MAY-17  
            4. using target database control file instead of recovery catalog  
            5. allocated channel: ORA_DISK_1  
            6. channel ORA_DISK_1: SID=34 instance=rac1 device type=DISK
            7. channel ORA_DISK_1: starting full datafile backup set  
            8. channel ORA_DISK_1: specifying datafile(s) in backup set  
            9. input datafile file number=00001 name=+DATA/rac/datafile/system.256.939291779  
            10. input datafile file number=00002 name=+DATA/rac/datafile/sysaux.257.939291779  
            11. input datafile file number=00003 name=+DATA/rac/datafile/undotbs1.258.939291779  
            12. input datafile file number=00005 name=+DATA/rac/datafile/undotbs2.264.939292069  
            13. input datafile file number=00004 name=+DATA/rac/datafile/users.259.939291779  
            14. input datafile file number=00006 name=+DATA/rac/datafile/test.411.944053153  
            15. input datafile file number=00007 name=+DATA/rac/datafile/test.412.944053495  
            16. channel ORA_DISK_1: starting piece 1 at 25-MAY-17  
            17. channel ORA_DISK_1: finished piece 1 at 25-MAY-17  
            18. piece handle=/u01/oracle/backup/rac_20170525_10 tag=TAG20170525T211359 comment=NONE
            19. channel ORA_DISK_1: backup set complete, elapsed time: 00:02:08  
            20. channel ORA_DISK_1: starting full datafile backup set  
            21. channel ORA_DISK_1: specifying datafile(s) in backup set  
            22. including current control file in backup set  
            23. including current SPFILE in backup set  
            24. channel ORA_DISK_1: starting piece 1 at 25-MAY-17  
            25. channel ORA_DISK_1: finished piece 1 at 25-MAY-17  
            26. piece handle=/u01/oracle/backup/rac_20170525_11 tag=TAG20170525T211359 comment=NONE
            27. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01  
            28. Finished backup at 25-MAY-17


            11、scp备份集到standby节点




            [html] view plain copy


            1. [oracle@rac1 backup]$ scp /u01/oracle/backup/* 192.168.56.10:/oradata/backup/  
            2. oracle@192.168.56.10's password:   
            3. rac_20170525_10                                                100% 1261MB   7.5MB/s   02:48   
            4. rac_20170525_11                                                100%   18MB  18.0MB/s   00:01

            12、为standby创建密码文件




            [html] view plain copy



              1. [oracle@rac1 ~]$ scp /u01/oracle/app/11.2.0/dbs/orapwrac1 192.168.56.10:/u01/oracle/app/11.2.0/dbs/orapwrac  
              2. oracle@192.168.56.10's password:   
              3. orapwrac1                                                      100% 1536     1.5KB/s   00:00


              standbydatabase配置部分

              1、修改初始化文件如下




              [html] view plain copy


              1. [oracle@racdg dbs]$ cat /u01/oracle/app/11.2.0/dbs/initrac.ora   
              2. *.audit_file_dest='/u01/oracle/app/admin/rac/adump'
              3. *.audit_trail='db'
              4. *.compatible='11.2.0.4.0'
              5. *.control_files='/oradata/rac/control01.ctl'
              6. *.db_block_size=8192
              7. *.db_create_file_dest='/oradata/rac'
              8. *.db_domain=''
              9. *.db_name='rac'
              10. *.db_unique_name='rac_dg'
              11. *.diagnostic_dest='/u01/oracle/app'
              12. *.dispatchers='(PROTOCOL=TCP) (SERVICE=racXDB)'
              13. *.fal_server='rac'
              14. *.log_archive_config='DG_CONFIG=(rac,rac_dg)'
              15. *.log_archive_dest_1='LOCATION=/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rac_dg'
              16. #*.log_archive_dest_2='SERVICE=rac LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rac OPTIONAL PROPEN=15 MAX_FAILURE=10 NET_TIMEOUT=30'
              17. *.log_archive_dest_2='SERVICE=rac LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rac'
              18. *.log_archive_dest_state_2='enable'
              19. *.log_file_name_convert='+DATA/rac/onlinelog','/oradata/rac'  
              20. *.db_file_name_convert='+DATA/rac/datafile','/oradata/rac'  
              21. *.log_archive_format='%t_%s_%r.dbf'
              22. *.log_archive_max_processes=8
              23. *.open_cursors=300
              24. *.pga_aggregate_target=536870912
              25. *.processes=150
              26. *.remote_login_passwordfile='exclusive'
              27. *.standby_file_management='AUTO'
              28. *.sga_target=2147483648
              29. *.undo_tablespace='UNDOTBS1'

              2、创建相关目录路径




              [html] view plain copy


              1. [oracle@racdg dbs]$ mkdir -p /u01/oracle/app/admin/rac/adump  
              2. [oracle@racdg dbs]$ mkdir -p /oradata/rac  
              3. [oracle@racdg dbs]$ mkdir -p /oradata/arch

              3、创建监听器




              [html] view plain copy


              1. [oracle@racdg dbs]$ vi /u01/oracle/app/11.2.0/network/admin/listener.ora   
              2. LISTENER
              3. DESCRIPTION_LIST
              4. DESCRIPTION
              5. ADDRESS = (PROTOCOL = TCP)(HOST = racdg)(PORT = 1521)))  
              6. DESCRIPTION
              7. ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))  
              8.      )  
              9.     )  
              10. ADR_BASE_LISTENER

              4、配置备库本地NET服务名(与主库一致)




              [html] view plain copy


              1. [oracle@racdg dbs]$ cat /u01/oracle/app/11.2.0/network/admin/tnsnames.ora   
              2. RAC
              3. DESCRIPTION
              4. ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.100)(PORT = 1521))  
              5. CONNECT_DATA
              6. SERVER = DEDICATED)  
              7. SERVICE_NAME = rac)  
              8.     )  
              9.   )  
              10.   
              11. rac_dg
              12. DESCRIPTION
              13. ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.10)(PORT = 1521))  
              14. CONNECT_DATA
              15. SERVER = DEDICATED)  
              16. SERVICE_NAME = rac_dg)  
              17.     )  
              18.   )

              主库tnsping测试(确保监听打开)




              [html] view plain copy



              1. [oracle@rac1 tmp]$ tnsping rac_dg  
              2. TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 26-MAY-2017 00:37:30  
              3. Copyright (c) 1997, 2013, Oracle.  All rights reserved.  
              4.   
              5. Used parameter files:  
              6. Used TNSNAMES adapter to resolve the alias  
              7. Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.10)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac_dg)))  
              8. OK (0 msec)


              备库tnsping测试(确保监听打开)




              [html] view plain copy


              1. [oracle@racdg dbs]$ tnsping rac  
              2. TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 25-MAY-2017 22:32:43  
              3. Copyright (c) 1997, 2013, Oracle.  All rights reserved.  
              4. Used parameter files:  
              5. Used TNSNAMES adapter to resolve the alias  
              6. Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.100)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac)))  
              7. OK (0 msec)

              5、启动到mount状态




              [html] view plain copy


              1. SQL>
              2. ORACLE instance started.  
              3.   
              4. Total System Global Area 2137886720 bytes  
              5. Fixed Size                  2254952 bytes  
              6. Variable Size             553650072 bytes  
              7. Database Buffers         1577058304 bytes  
              8. Redo Buffers                4923392 bytes  
              9. Database mounted.

              6、使用rman恢复备库




              [html] view plain copy


              1. [oracle@racdg ~]$ rman target /  
              2. Recovery Manager: Release 11.2.0.4.0 - Production on Thu May 25 22:36:41 2017  
              3. Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.  
              4. connected to target database: RAC (DBID=2527273880, not open)  
              5. RMAN>
              6. using target database control file instead of recovery catalog  
              7. searching for all files that match the pattern /oradata/backup  
              8.   
              9. List of Files Unknown to the Database
              10. =====================================  
              11. File Name: /oradata/backup/rac_20170525_11  
              12. File Name: /oradata/backup/rac_20170525_10  
              13. Do you really want to catalog the above files (enter YES or NO)? yes  
              14. cataloging files...  
              15. cataloging done  
              16. List of Cataloged Files
              17. =======================  
              18. File Name: /oradata/backup/rac_20170525_11  
              19. File Name: /oradata/backup/rac_20170525_10

              [html] view plain copy



              [html] view plain copy



              [html] view plain copy


              1. RMAN>
              2. 2>
              3. 3>
              4. 4>
              5. 5>
              6. 6>
              7. 7>
              8. 8>
              9. 9>
              10. 10>
              11. 11>
              12. 12>
              13. 13>
              14. 14>
              15. 15>
              16. 16>
              17. 17>
              18. 18>
              19. 19>
              20.   
              21. allocated channel: ch00  
              22. channel ch00: SID=148 device type=DISK
              23.   
              24. allocated channel: ch01  
              25. channel ch01: SID=24 device type=DISK
              26.   
              27. allocated channel: ch02  
              28. channel ch02: SID=149 device type=DISK
              29.   
              30. allocated channel: ch03  
              31. channel ch03: SID=25 device type=DISK
              32. executing command: SET NEWNAME  
              33. executing command: SET NEWNAME  
              34. executing command: SET NEWNAME  
              35. executing command: SET NEWNAME  
              36. executing command: SET NEWNAME  
              37. executing command: SET NEWNAME  
              38. executing command: SET NEWNAME  
              39. Starting restore at 25-MAY-17  
              40. channel ch00: starting datafile backup set restore  
              41. channel ch00: specifying datafile(s) to restore from backup set  
              42. channel ch00: restoring datafile 00001 to /oradata/rac/system.dbf  
              43. channel ch00: restoring datafile 00002 to /oradata/rac/sysaux.dbf  
              44. channel ch00: restoring datafile 00003 to /oradata/rac/undotbs1.dbf  
              45. channel ch00: restoring datafile 00004 to /oradata/rac/users.dbf  
              46. channel ch00: restoring datafile 00005 to /oradata/rac/undotbs2.dbf  
              47. channel ch00: restoring datafile 00006 to /oradata/rac/test.dbf  
              48. channel ch00: restoring datafile 00007 to /oradata/rac/test01.dbf  
              49. channel ch00: reading from backup piece /oradata/backup/rac_20170525_10  
              50. channel ch00: piece handle=/oradata/backup/rac_20170525_10 tag=TAG20170525T211359
              51. channel ch00: restored backup piece 1  
              52. channel ch00: restore complete, elapsed time: 00:00:45  
              53. Finished restore at 25-MAY-17  
              54.   
              55. datafile 1 switched to datafile copy  
              56. input datafile copy RECID=10 STAMP=944955143 file name=/oradata/rac/system.dbf  
              57. datafile 2 switched to datafile copy  
              58. input datafile copy RECID=11 STAMP=944955143 file name=/oradata/rac/sysaux.dbf  
              59. datafile 3 switched to datafile copy  
              60. input datafile copy RECID=12 STAMP=944955143 file name=/oradata/rac/undotbs1.dbf  
              61. datafile 4 switched to datafile copy  
              62. input datafile copy RECID=13 STAMP=944955143 file name=/oradata/rac/users.dbf  
              63. datafile 5 switched to datafile copy  
              64. input datafile copy RECID=14 STAMP=944955143 file name=/oradata/rac/undotbs2.dbf  
              65. datafile 6 switched to datafile copy  
              66. input datafile copy RECID=15 STAMP=944955143 file name=/oradata/rac/test.dbf  
              67. datafile 7 switched to datafile copy  
              68. input datafile copy RECID=16 STAMP=944955143 file name=/oradata/rac/test01.dbf  
              69. released channel: ch00  
              70. released channel: ch01  
              71. released channel: ch02  
              72. released channel: ch03


              7、standby开启日志应用




              [html] view plain copy


              1. SQL>


              8、备库查询进程状态(注意RFS进程和MRP0进程




              [html] view plain copy



              1. SQL>
              2.   
              3. PROCESS   CLIENT_P  SEQUENCE#    THREAD# STATUS  
              4. --------- -------- ---------- ---------- ------------  
              5. ARCH      ARCH              0          0 CONNECTED  
              6. ARCH      ARCH              0          0 CONNECTED  
              7. ARCH      ARCH              0          0 CONNECTED  
              8. ARCH      ARCH              0          0 CONNECTED  
              9. ARCH      ARCH              0          0 CONNECTED  
              10. ARCH      ARCH            140          1 CLOSING  
              11. ARCH      ARCH             48          2 CLOSING  
              12. ARCH      ARCH              0          0 CONNECTED  
              13. RFS       ARCH              0          0 IDLE  
              14. RFS       ARCH              0          0 IDLE  
              15. RFS       LGWR             49          2 IDLE  
              16. RFS       UNKNOWN           0          0 IDLE  
              17. RFS       UNKNOWN           0          0 IDLE  
              18. RFS       UNKNOWN           0          0 IDLE  
              19. RFS       UNKNOWN           0          0 IDLE  
              20. RFS       LGWR            141          1 IDLE  
              21. RFS       UNKNOWN           0          0 IDLE  
              22. RFS       UNKNOWN           0          0 IDLE  
              23. RFS       UNKNOWN           0          0 IDLE  
              24. RFS       UNKNOWN           0          0 IDLE  
              25. RFS       UNKNOWN           0          0 IDLE  
              26. MRP0      N/A             141          1 APPLYING_LOG  
              27.   
              28. 22 rows selected.


              9、主库查询进程状态(注意LNS进程




              [html] view plain copy


              1. SQL>
              2.   
              3. PROCESS   CLIENT_P  SEQUENCE#    THREAD# STATUS  
              4. --------- -------- ---------- ---------- ------------  
              5. ARCH      ARCH            139          1 CLOSING  
              6. ARCH      ARCH              0          0 CONNECTED  
              7. ARCH      ARCH            139          1 CLOSING  
              8. ARCH      ARCH              0          0 CONNECTED  
              9. ARCH      ARCH            140          1 CLOSING  
              10. ARCH      ARCH            137          1 CLOSING  
              11. ARCH      ARCH            136          1 CLOSING  
              12. ARCH      ARCH            137          1 CLOSING  
              13. <span style="color:#cc0000;">LNS</span>
              14.   
              15. 9 rows selected.

              10、对比主备库日志序列号




              [html] view plain copy


              1. SQL>
              2.   
              3.  SEQUENCE# FIRST_TIM NEXT_TIME APPLIED  
              4. ---------- --------- --------- ---------  
              5.         44 25-MAY-17 25-MAY-17 YES  
              6.         45 25-MAY-17 25-MAY-17 YES  
              7.         46 25-MAY-17 25-MAY-17 YES  
              8.         47 25-MAY-17 25-MAY-17 YES  
              9.         48 25-MAY-17 25-MAY-17 YES  
              10.         49 25-MAY-17 25-MAY-17 IN-MEMORY  
              11.        136 25-MAY-17 25-MAY-17 YES  
              12.        137 25-MAY-17 25-MAY-17 YES  
              13.        138 25-MAY-17 25-MAY-17 YES  
              14.        139 25-MAY-17 25-MAY-17 YES  
              15.        140 25-MAY-17 25-MAY-17 YES  
              16.   
              17. 11 rows selected.


              11、主库手动切换日志




              [html] view plain copy



              1. SQL>


              备库查询日志序列号




              [html] view plain copy


              1. SQL>
              2.   
              3.  SEQUENCE# FIRST_TIM NEXT_TIME APPLIED  
              4. ---------- --------- --------- ---------  
              5.         44 25-MAY-17 25-MAY-17 YES  
              6.         45 25-MAY-17 25-MAY-17 YES  
              7.         46 25-MAY-17 25-MAY-17 YES  
              8.         47 25-MAY-17 25-MAY-17 YES  
              9.         48 25-MAY-17 25-MAY-17 YES  
              10.         49 25-MAY-17 25-MAY-17 YES  
              11.        136 25-MAY-17 25-MAY-17 YES  
              12.        137 25-MAY-17 25-MAY-17 YES  
              13.        138 25-MAY-17 25-MAY-17 YES  
              14.        139 25-MAY-17 25-MAY-17 YES  
              15.        140 25-MAY-17 25-MAY-17 YES  
              16.        141 25-MAY-17 25-MAY-17 IN-MEMORY  
              17.   
              18. 12 rows selected.

              由此得知,standby已经实时应用日志了。

              12、Data Guard切换到打开模式,首先需要停止日志应用




              [html] view plain copy


              1. SQL>
              2.   
              3. Database altered.  
              4.   
              5. SQL>
              6.   
              7. Database altered.  
              8.   
              9. SQL>
              10.   
              11. Database altered.

              13、测试操作

              在主库新建一张表aa,从备库能实时查询




              [html] view plain copy


              1. SQL>
              2.   
              3. Table created.  
              4.   
              5. 主备库查询数据一致:  
              6. SQL>
              7.   
              8.   COUNT(*)  
              9. ----------  
              10.         14

                 需要注意的是,数据库只读打开后,只可以进行查询并恢复PRIMARY数据库的日志,但是不能进行修改数据。

                 至此,rac+dg的搭建部署已经完成。