zoukankan      html  css  js  c++  java
  • DG 物理Standby创建

    为了最大的降低硬件需求,此处创建的data guard处于同一台机器,但其创建过程与多机并无差别。我们分两阶段配置,分别是配置primary数据库和standby 数据库。

    一、Primary数据库配置及相关操作

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

    如果不是归档模式,通过以下方式进行设置

    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;

    2. 将Primary数据库置为force logging模式。

    SQL> alter database force logging;

    3. 创建standby数据库控件文件

    SQL> alter database create standby controlfile as 'c:\LearnOracle\backup\jsspdg01.ctl';

    4. 创建primary数据库客户端初始化参数文件

    此处修改项较多,我们直接创建并修改pfile,然后再通过pfile重建spfile,当然也可以通过alter system set 命令直接修改spfile内容。

    SQL> create pfile from spfile;

    并将该初始化参数文件复制一份做为standby数据库的客户端初始化参数文件

    SQL> host copy c:\oracle\dbs\pfileORCL.ora c:\LearnOracle\backup\initjsspdg.ora

    修改客户端初始化参数文件,地曾加下列内容:

    DB_UNIQUE_NAME=orcl
    
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,jsspdg)'
    LOG_ARCHIVE_DEST_1='LOCATION=c:\oradata\orcl\
    VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'
    LOG_ARCHIVE_DEST_2='SERVICE=jsspdg LGWR ASYNC
    VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jsspdg'
    LOG_ARCHIVE_DEST_STATE_1=ENABLE
    LOG_ARCHIVE_DEST_STATE_2=ENABLE
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    #--------配置standby 角色的参数用于角色转换
    FAL_SERVER=jsspdg
    FAL_CLIENT=orcl
    DB_FILE_NAME_CONVERT='oradata\jsspdg','oradata\orcl'
    LOG_FILE_NAME_CONVERT='oradata\jsspdg','oradata\orcl'
    STANDBY_FILE_MANAGEMENT=AUTO

    通过pfile重建spfile

    SQL> shutdown immediate
    ...
    SQL> create spfile from pfile='initORCL.ora';

    5. 配置listener及net service names

    二、Standby数据库配置及相关操作

    1. 通过ORADIM创建新的OracleService

    ORADIM -new -sid jsspdg

    2. 创建密码文件,注意保持sys密码与primary数据库一致

    orapwd file=c:\database\PWDjsspdg.ora password=oracle entries=30

    3. 创建目录

    C:\oracle\admin\jsspdg>mkdir adump

    4. 修改初始化参数文件

    db_unique_name=jsspdg
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,jsspdg)'
    DB_FILE_NAME_CONVERT='oradata\orcl','oradata\jsspdg'
    LOG_FILE_NAME_CONVERT='oradata\orcl','oradata\jsspdg'
    LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
    LOG_ARCHIVE_DEST_1='LOCATION=c:\oradata\jsspdg\
    VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jsspdg'
    LOG_ARCHIVE_DEST_STATE_1=ENABLE
    #---下列参数用于角色切换
    LOG_ARCHIVE_DEST_2='SERVICE=orcl LGWR ASYNC
    VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
    LOG_ARCHIVE_DEST_STATE_2=ENABLE
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    FAL_SERVER=orcl
    FAL_CLIENT=jsspdg
    STANDBY_FILE_MANAGEMENT=AUTO

    注意同时修改*_dest的路径

    通过该pfile创建spfile

    SQL> create spfile from pfile='C:\learnOracle\backup\initjsspdg.ora';

    5. 启动standby到nomount

    SQL> startup nomount;

    6. 复制文件

      a). 连接到primary和standby数据

    set oracle_sid=jsspdg
    
    RMAN target sys/oracle@orcl auxiliary/

      b). 创建standby控制文件

    RMAN> copy current controlfile for standby to 'c:\oradata\jsspdg\control01.ctl';

      c). 生成standby数据库

    RMAN> duplicate target database for standby;

      d). 重建临时表空间数据

      如果standby数据库不会转为primary就无需创建。

    SQL>alter tablespace temp add tempfile 'c:\oradata/jsspdg/temp01.dbf' size 100M

      e). 创建适当的日志文件组

      一般而言,standby redo 日志文件组数要比primary 数据库的online redo 日志文件组数至少多一个

    SQL> alter database add standby LOGFILE
         GROUP 4 ('c:\ORADATA/jsspdg/pdg_red04.log') SIZE 100M,
         GROUP 5 ('c:\ORADATA/jsspdg/pdg_red05.log') SIZE 100M,
         GROUP 6 ('c:\ORADATA/jsspdg/pdg_red06.log') SIZE 100M,

    删除一个日志文件组
    SQL> alter database drop standby logfile group 6

      另外,从可靠性方面考虑,建议在primary 数据库也创建standby redologs,这样一旦发生切换,不会影响primary 做为standby 的正常运行。

    7. 启动redo应用

    SQL> alter database recover managed standby database disconnect from session;

    8. 查看同步情况

    首先连接到primary数据库

    SQL> show parameter instance_name;
    ..
    SQL> alter system switch logfile;
    ...
    SQL> select max(sequence#) from v$archived_log;

    连接到standby数据库

    SQL> show parameter instance_name;
    ...
    SQL> select max(sequence#) from v$archived_log;

    9. 暂停应用

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

    注意,此时只是暂时redo应用,并不是停止standby数据库,standby仍会保持接收只不过不会再应用接收到的归档,直到你再次启动redo应用为止。

  • 相关阅读:
    ATM项目分析
    Python常用模块大全
    一文了解@Conditional注解说明和使用
    Spring IOC源码分析之-刷新前的准备工作
    Spring Cloud Zuul API服务网关之请求路由
    ArrayList相关方法介绍及源码分析
    记一次序列化的JSON解析问题
    大型网站架构演化发展历程
    Spring Cloud Ribbon负载均衡
    Spring Cloud Hystrix 服务容错保护
  • 原文地址:https://www.cnblogs.com/landexia/p/2615916.html
Copyright © 2011-2022 走看看