zoukankan      html  css  js  c++  java
  • RAC+单节点搭建DG

    primary RAC to single standby

    参考文献:
    RAC+单实例DATAGUARD 配置   http://blog.csdn.net/miyatang/article/details/9979579

    配置要点
    rac为主时:
        rac中的每个实例都需要配置传输日志
    单节点为主时:
        向rac中的其中一个节点传输日志
        在rac中的其中一个节点上启动MRP进程

    创建standby redo log 日志组
    RAC中的每个thread都需要创建对应的standby redo log。创建原则和单实例一样:
    --在主库创建standbylogfile是便于发生角色转换后备用?
    --sandby redo log创建原则:?
    --a)、确保standbyredo log的大小与主库online redolog的大小一致???
    --b)、如主库为单实例数据库:standbyredo log组数=主库日志组总数+1?
    --c)、如果主库是RAC数据库:standby redo log组数=(每线程的日志组数+1)*线程数?
    --d)、不建议复用standbyredo log,避免增加额外的I/O以及延缓重做传输?

    查看rac中联机日志
    SQL> select thread#,group#,members,bytes/1024/1024 from v$log;

       THREAD#     GROUP#    MEMBERS BYTES/1024/1024
    ---------- ---------- ---------- ---------------
             1          1          1              50
             1          2          1              50
             2          3          1              50
             2          4          1              50
             
    SQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;

        GROUP# STATUS  TYPE    MEMBER
    ---------- ------- ------- ------------------------------------------------------------
             2         ONLINE  +DATA/paydb/onlinelog/group_2.262.927484759
             1         ONLINE  +DATA/paydb/onlinelog/group_1.261.927484751
             3         ONLINE  +DATA/paydb/onlinelog/group_3.266.927485173
             4         ONLINE  +DATA/paydb/onlinelog/group_4.267.927485181
             
    RAC有两个redo thread,每个thread有两个日志组,每个日志组有一个日志文件,文件大小为50M,所以要针对每个thread需要3组standby redo,大小为50M
    创建6个日志组,每个日志组有一个日志文件

    单实例standby:
    alter database add standby logfile thread 1 group 5('/data0/u01/app/data/oradata/orcl11g/standby_redo05.log') size 50m;
    alter database add standby logfile thread 1 group 6('/data0/u01/app/data/oradata/orcl11g/standby_redo06.log') size 50m;
    alter database add standby logfile thread 1 group 7('/data0/u01/app/data/oradata/orcl11g/standby_redo07.log') size 50m;
    alter database add standby logfile thread 2 group 8('/data0/u01/app/data/oradata/orcl11g/standby_redo08.log') size 50m;
    alter database add standby logfile thread 2 group 9('/data0/u01/app/data/oradata/orcl11g/standby_redo09.log') size 50m;
    alter database add standby logfile thread 2 group 10('/data0/u01/app/data/oradata/orcl11g/standby_redo10.log') size 50m;

    primary rac下:
    alter database add standby logfile thread 1 group 5 size 50M,group 6 size 50M ,group 7 size 50M ;
    alter database add standby logfile thread 2 group 8 size 50M,group 9 size 50M ,group 10 size 50M ;

    监听配置
    将10.100.211.250 db-scan 加入standby的hosts文件
    静态注册监听
    standby:
    [oracle@test02 admin]$ cat listener.ora
    LISTENER =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(Host = 10.100.211.30)(Port = 1521))
      )


    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = orcl11g)
          (ORACLE_HOME = /data0/u01/app/oracle/product/11.2.0/dbhome_1)
          (SID_NAME = orcl)
        )
      )
    rac已自动注册了动态监听,监听scan-ip:1521,无需再静态注册(创建listener.ora文件)
    rac两节点和单节点standby上tnsname.ora一致
    [oracle@test02 admin]$ cat tnsnames.ora                                                                                                                              
    PAYDB =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = db-scan)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = paydb)
        )
      )
    SIGDB =   
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.211.30)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl11g)
        )
      )
     
    每个节点上检查:
        tnsping SIGDB   
        tnsping PAYDB   

    参数配置
    数据文件目录和归档日志文件目录查看:
    rac:
    SQL> select file#,name from v$datafile;

         FILE# NAME
    ---------- ------------------------------------------------------------
             1 +DATA/paydb/datafile/system.256.927484413
             2 +DATA/paydb/datafile/sysaux.257.927484413
             3 +DATA/paydb/datafile/undotbs1.258.927484415
             4 +DATA/paydb/datafile/users.259.927484415
             5 +DATA/paydb/datafile/example.264.927484777
             6 +DATA/paydb/datafile/undotbs2.265.927485095
             7 +DATA/paydb/datafile/paybiz01.dbf
    归档日志目录:
    log_archive_dest_1                   string      LOCATION=+DATA/archlog
    standby 单节点
    SQL> select file#,name from v$datafile;   

         FILE# NAME
    ---------- ------------------------------------------------------------
             1 /data0/u01/app/data/oradata/orcl11g/system01.dbf
             2 /data0/u01/app/data/oradata/orcl11g/sysaux01.dbf
             3 /data0/u01/app/data/oradata/orcl11g/undotbs01.dbf
             4 /data0/u01/app/data/oradata/orcl11g/users01.dbf
             5 /data0/u01/app/oracle/product/11.2.0/dbhome_1/dbs/catlog01.d
               bf
    归档日志目录:
    log_archive_dest_1                   string      location=/data0/arch        

    primary rac上操作:
    alter database force logging;

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(paydb,orcl11g)';
    ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=SIGDB ASYNC LGWR VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl11g';
    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
    ALTER SYSTEM SET FAL_SERVER=SIGDB;
    ALTER SYSTEM SET FAL_SERVER=PAYDB;
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/data0/u01/app/data/oradata/orcl11g/','+DATA/paydb/datafile/' SCOPE=SPFILE;
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/data0/arch','+DATA/archlog'  SCOPE=SPFILE;
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

    在线创建物理备机
    将primary的口令文件、参数文件scp到standby,并对参数文件进行修改,重命名为init$sid.ora
    standby操作:
        create spfile from pfile
        startup nomount
    rac上操作:
    rman TARGET sys/oracle@PAYDB AUXILIARY sys/oracle@SIGDB

    DUPLICATE TARGET DATABASE
      FOR STANDBY
      FROM ACTIVE DATABASE nofilenamecheck;

    会在线备份数据文件、控制文件、tempfile、redo logfile恢复到从库

    创建完physical standby 后会自动启动到mount
    创建standby redo logfile
     

    ==========================
    DG Broker
    https://docs.oracle.com/cd/B28359_01/server.111/b28295/configure.htm#CFHICBJH

    查看磁盘:
    select dg.name,DGName, INSTANCE_NAME, DB_NAME,STATUS, from Gv$asm_diskgroup dg ;

    用于管理dg的工具,会在所有的主备库通过自己的DMON进程和配置文件进行通信,可以配置dg或管理已配置好的dg及监控dg状态
    支持primary和standby是单实例或rac,支持一主多从,从的个数上限是9个
    会在主和从上启动DMON进程,通过参数DG_BROKER_START 控制是否启动dg broker,此参数默认是false,不启动
    broker的配置文件是二进制文件,有默认的路径;允许有多份,通过指定参数DG_BROKER_CONFIG_FILEn来进行创建配置文件;如果是RAC环境,每个实例都要有Broker配置文件,放在共享存储上;

    配置DG Broker
    SQL> show parameter broker;

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    dg_broker_config_file1               string      /data0/u01/app/oracle/product/
                                                     11.2.0/dbhome_1/dbs/dr1orcl02.
                                                     dat
    dg_broker_config_file2               string      /data0/u01/app/oracle/product/
                                                     11.2.0/dbhome_1/dbs/dr2orcl02.
                                                     dat
    dg_broker_start                      boolean     FALSE

    SQL> alter system set dg_broker_config_file1='+DATA/dr1orcl11g.dat';
    SQL> alter system set dg_broker_config_file2='+DATA/dr2orcl11g.dat';
    开启dg broker
    SQL> alter system set dg_broker_start=true;
    连接到主库
    DGMGRL> connect sys/oracle@PAYDB
    创建配置文件
    DGMGRL> help create
    DGMGRL> CREATE CONFIGURATION primary AS PRIMARY DATABASE IS paydb CONNECT IDENTIFIER IS PAYDB;
    Configuration "primary" created with primary database "paydb"
    条件备库配置
    ADD DATABASE <database name>  ====db_unique_name
        [AS CONNECT IDENTIFIER IS <connect identifier>]
        [MAINTAINED AS {PHYSICAL|LOGICAL}];

    DGMGRL> ADD DATABASE orcl11g AS CONNECT IDENTIFIER IS SIGDB MAINTAINED AS PHYSICAL;
    Database "orcl11g" added
    DGMGRL> enable configuration;


    ===
    rac 修改参数文件
    如果我们直接使用: create pfile from spfile 命令穿件pfile,那么生成的pfile 文件将覆盖原有$ORACLE_HOME/dbs 目录下的pfile 文件。 而在之前的pfile文件里面值保留了一条指向spfile存放位置的记录。 这样修改之后,就会造成数据库启动时会因为找不到spfile文件而读取本地的pfile文件,而不是共享设备上的spfile文件。这样对参数管理上就会带来麻烦,也带来其他的隐患。
    正确做法
    SQL> create pfile='/data0/app/oracle/initpaydb.ora' from spfile;
    修改后
    SQL> create spfile='+DATA/paydb/spfilepaydb.ora' from  pfile='/data0/app/oracle/initpaydb.ora'

    主从(physical standby)切换:
    switchover
        原主库会重启成为新的备库
        为参与switchover的其他的备库会接受并应用来自新的主库的redo log
    broker的行为:
        主库或备库如果是rac,只会保证一个实例启动,其他的实例均关闭,如果无法关闭则需要手工关闭
        首先将主库切换为备,将目标备库切换为主
        修改不broker的配置文件
        重启新备库,应用redo,如果原主库是rac,重启在switchover之前关闭的实例
        将新的主库启动到读写状态,如果原备库是rac,则重启在switchover之前关闭的实例
    failover
    两种模式complete和immediate,前者是在备库应用完日志之后再进行切换,后者是直接切换
        如果目标备库是rac,broker将会指示CRS关闭除应用日志的实例之外的其他实例,如果关闭失败,则需要手动关闭,然后再次执行难failover命令;
        在failover期间不可以打开任何新的实例
        broker会指示CRS重启在failover前关闭的其他的实例
        更改保护模式:
            如果failover前的数据库保护模式是maximum protection,则在failover后被重置为maximum performance
            maximum protection:
                在事务提交之前会保证将事务变更信息写到online redo log,并保证同步到至少一个备库上,保证数据0丢失
            maximum performance:
                在事务提交之前会将事务变更信息写到online redo log 然后提交,然后再同步到从库,主库down掉后不能保证数据不丢失
            
    DGMGRL> FAILOVER TO database-name [IMMEDIATE];

  • 相关阅读:
    SQLAlchemy技术文档(中文版)(全)
    Python 学习 第17篇:sqlalchemy 读写SQL Server数据库
    环境:Pycharm2019.1 + Win10 + Python3.7.3
    PyInstaller打包python脚本的一些心得
    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)
    简单使用xlwt
    python xlwt写入excel操作
    Python中xlrd模块解析
    python使用pip离线安装库
    pip的基本使用和离线安装Python第三方库
  • 原文地址:https://www.cnblogs.com/Bccd/p/6362817.html
Copyright © 2011-2022 走看看