• 配置DataGaurd(ORACLE DG)


    配置网络连通

    vi /etc/hosts

    主机创建/查看归档目录,创建备库在线日志目录

    mkdir /u02/oradata/ann01/archive_log
    mkdir /u02/oradata/ann01/standby

    在备机上创建相关目录(保证如下几项与主库一致)

    mkdir $ORACLE_BASE/admin
    mkdir $ORACLE_BASE/admin/ann01
    mkdir $ORACLE_BASE/admin/ann01/{a,b,c,u,dp}dump(此项11G有所不同)
    mkdir /u02/oradata/ann01
    mkdir /u02/oradata/ann01/archive_log
    mkdir /u02/oradata/ann01/standby

    修改主库为归档模式

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;

    修改主库的force logging设置

    alter database force logging;

    在主库上添加standby log

    alter database add standby logfile group 11('/u02/oradata/ann01/standby/sta_redo11.log') size 50M; 
    alter database add standby logfile group 12('/u02/oradata/ann01/standby/sta_redo12.log') size 50M; 
    alter database add standby logfile group 13('/u02/oradata/ann01/standby/sta_redo13.log') size 50M; 
    alter database add standby logfile group 14('/u02/oradata/ann01/standby/sta_redo14.log') size 50M; 

    修改主库的参数文件

    create pfile from spfile;

    在pfile中添加:

    db_unique_name=ann01_01
    log_archive_config='DG_CONFIG=(ann01_01,ann01_02)'
    log_archive_dest_1='LOCATION=/u02/oradata/ann01/archive_log VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ann01_01'
    log_archive_dest_2='SERVICE=ann01_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ann01_02'
    fal_server=ann01_02
    fal_client=ann01_01
    standby_file_management='AUTO'

    创建spfile

    create spfile from pfile;

    启动主库并创建备库的控制文件

    alter database create standby controlfile as '/u02/oradata/ann01/standby/sta.ctl';

    修改主库和备库的监听和服务名配置,关闭主库,停止主库监听

    shutdown immediate;
    lsnrctl stop;

    编辑listener.ora,改为:

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = linux_v1.com)(port = 1521))
        )
      )
    
    ADR_BASE_LISTENER = /u01/app/oracle

    编辑tnsnames.ora,改为:

    ANN01_01 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.2)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = ann01_01.com)
        )
      )
    
    ANN01_02 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.159.3)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = ann01_02.com)
        )
      )

    启动主库监听

    lsnrctl start

    停止备库监听

    lsnrctl stop

    修改备库监听listener.ora和tnsnames.ora
    listener.ora修改为:

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = linux_v2.com)(port = 1521))
        )
      )
    
    ADR_BASE_LISTENER = /u01/app/oracle

    tnsnames.ora修改为:

    ANN01_02 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = linux_v2.com)(port = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = ann01_02.com)
        )
      )
    
    ANN01_01 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = linux_v1.com)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = ann01_01.com)
        )
      )

    启动备库监听

    lsnrctl start

    启动主库,用netmgr在主机和备机上测试主库的orcl1服务是否正常,正常后关闭主库;

    关闭主库,在主库上创建数据库密码文件并复制到备机的$ORACLE_HOME/dbs目录下,在备机上进行还原操作

    shutdown immediate;
    orapwd file=$ORACLE_HOME/dbs/orapwann01 password=123456 entries=3;
    scp orapwann01 192.168.159.3:$ORACLE_HOME/dbs/

    复制参数文件,控制文件(/u02/oradata/ann01/standby/sta.ctl),数据文件至备机;

    添加standby log,此处因前面主库是先添加备库日志组再备份控制文件,故此处只需将主库的备库日志组拷贝到备库相关目录即可。


    启动备库,修改备库到standby状态

    startup nomount;
    alter database mount standby database;

    打开备库至只读状态

    alter database open read only;

    应用或者取消应用日志

    alter database recover managed standby database disconnect from session;
    alter database recover managed standby database cancel;

    检查有效性

    select open_mode,database_role,switchover_status,protection_mode,protection_level from v$database;
    select sequence#,name,applied from v$archived_log order by sequence#;
    select dest_id,status,destination,error from v$archive_dest;
    select status,type,database_mode,destination,db_unique_name,recovery_mode from v$archive_dest_status;
    select timestamp,message from v$dataguard_status;
    select process,status,thread#,sequence#,client_pid from v$managed_standby;
    心有猛虎,细嗅蔷薇。
  • 相关阅读:
    【洛谷4251】 [SCOI2015]小凸玩矩阵(二分答案,二分图匹配)
    JXOI2019游记
    luogu4884 多少个1?
    数论难点选讲
    计树问题小结
    codeforces选做1.0
    POI2015选做
    后缀自动机小结
    bzoj4008 [HNOI2015]亚瑟王
    bzoj1500 [NOI2005]维修数列
  • 原文地址:https://www.cnblogs.com/assassinann/p/DataGuard.html
Copyright © 2020-2023  润新知