--测试环境:
    OS:Redhat linux(64)
    Primary:
    IP:192.168.94.198
    SID:dgdb1
    Hostname:dg1
    DB_UNIQUE_NAME:dgdb1
    Database:10.2.0.1(64)
 
    Standby:
    IP:192.168.94.199
    SID:dgdb1
    Hostname:dg2
    DB_UNIQUE_NAME:dgdb1_s
    Database:10.2.0.1(64)

--实施DG前的准备工作
   --开启数据库logging及数据库archivelog
       --开启数据库logging
          SQL> alter database force logging;
--检查数据库是否开启archivelog
SQL> archive log list; 
--如果数据库未开启archivelog,则要开启archivelog
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog; 
--检查数据库是否开启archivelog
SQL> archive log list;

--创建相应目录(根据具体情况,primary和standby端要一致)
       --Standby:
          mkdir –p /export/home/oracle/product/10.2.0/oradata/dgdb1
          mkdir –p /export/home/oracle/product/10.2.0/admin/dgdb1/adump
          mkdir –p /export/home/oracle/product/10.2.0/admin/dgdb1/bdump
          mkdir –p /export/home/oracle/product/10.2.0/admin/dgdb1/cdump
          mkdir –p /export/home/oracle/product/10.2.0/admin/dgdb1/udump
          mkdir –p /export/home/oracle/product/10.2.0/admin/dgdb1/dpdump
          mkdir –p /export/home/oracle/product/10.2.0/admin/dgdb1/pfile 
          mkdir –p /export/home/oracle/archive
          mkdir -p /export/home/oracle/bak
       --primary:
          mkdir –p /export/home/oracle/archive
          mkdir -p /export/home/oracle/bak

--修改或新增listener.ora 和tnsnames.ora(或者用GUI工具配置)
    --注意:listener.ora 中新增的部分在括号内而非括号外
    --primary端:
--listener.ora:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /export/home/oracle/product/10.2.0)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dgdb1)
      (ORACLE_HOME = /export/home/oracle/product/10.2.0)
      (SID_NAME = dgdb1)  
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

--tnsnames.ora
dgdb1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.94.198)(PORT = 1521))
    )
    (CONNECT_DATA =
(SERVER = DEDICATED) 
        (SERVICE_NAME = dgdb1)
    )
  )
  
dgdb1_s =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.94.199)(PORT = 1521))
    )
    (CONNECT_DATA =
          (SERVER = DEDICATED) 
        (SERVICE_NAME = dgdb1)
    )
  )

--standby端:
      --listener.ora:
    SID_LIST_LISTENER =
      (SID_LIST =
       (SID_DESC =
        (SID_NAME = PLSExtProc)
        (ORACLE_HOME = /export/home/oracle/product/10.2.0)
        (PROGRAM = extproc)
        )
        (SID_DESC =
        (GLOBAL_DBNAME = dgdb1)
        (ORACLE_HOME = /export/home/oracle/product/10.2.0)
        (SID_NAME = dgdb1)  
        )
       )
     LISTENER =
      (DESCRIPTION_LIST =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = dg2)(PORT = 1521))
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      )
    --tnsnames.ora
   dgdb1 =
   (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.94.198)(PORT = 1521))
     )
     (CONNECT_DATA =
       (SERVER = DEDICATED) 
       (SERVICE_NAME = dgdb1)
      )
     )
  dgdb1_s =
   (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.94.199)(PORT = 1521))
    )
    (CONNECT_DATA =
        (SERVER = DEDICATED) 
        (SERVICE_NAME = dgdb1)
     )
   )

--具体实施DG的步骤:
   --在primary上生成pfile,并修改添加相应参数,生成standby需要的pfile
       --primary端:
         oracle$>sqlplus / as sysdba
         SQL> CREATE PFILE='/export/home/oracle/standby.ora' FROM SPFILE;
       --编辑生成的pfile文件('/export/home/oracle/standby.ora'),添加如下参数:
         *.db_unique_name='dgdb_s'
         *.fal_server='dgdb1'     
         *.fal_client='dgdb_s'
         *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dgdb1,dgdb_s)'
         *.log_archive_dest_1='LOCATION=/export/home/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgdb_s'
         *.LOG_ARCHIVE_DEST_2='SERVICE=dgdb1 LGWR ASYNC=40960 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgdb1'
         *.LOG_ARCHIVE_DEST_STATE_1='ENABLE' 
         *.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
         *.standby_archive_dest='/export/home/oracle/archive'
         *.standby_file_management='AUTO'
    --修改完后拷贝到standby端
      Oracle$Scp /export/home/oracle/standby.ora  oracle@192.168.94.199:/export/home/oracle/
    --在standby端使用pfile启动实例
--在primary端用命令创建数据库密码文件,并接拷贝至standby端相同路径下(如已存在,可直接拷贝)
  --primary端手工创建数据库密码文件
 Oracle$orapwd file=... password=...
  --primary端拷贝数据库密码文件至standby端
 Oracle$Scp /export/home/oracle/product/10.2.0/database/PWDdgdb1.ora oracle@192.168.94.199:/export/home/oracle/product/10.2.0/database
--standby端:
Oracle$set oracle_sid=dgdb1
Oracle$sqlplus / as sysdba
SQL> startup nomount pfile=’/export/home/oracle/standby.ora’
SQL> CREATE SPFILE FROM PFILE='/export/home/oracle/standby.ora';
    --在primary端修改相应参数
      --primary端:
        Oracle$sqlplus / as sysdba
        SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT = AUTO scope=both;
        SQL> ALTER SYSTEM SET fal_server='dgdb1_s' scope=both;
        SQL> ALTER SYSTEM SET fal_client='dgdb1' scope=both;
        SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(dgdb1_s,dgdb1)' scope=both;
        SQL> ALTER SYSTEM SET log_archive_dest_1='LOCATION=/export/home/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgdb1' scope=both;
        SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=dgdb1_s LGWR ASYNC=40960 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgdb1_s' scope=both;
        SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1='ENABLE' scope=both;
        SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE' scope=both;
        SQL> ALTER SYSTEM SET standby_archive_dest='/export/home/oracle/archive' scope=both;

--在primary端开始使用rman备份数据库
  --primary端:
    Oracle$rman target /
    RMAN>backup full format='/u01/app/oracle/bak/ora10g_%d_%T_%s' database include current controlfile for standby plus archivelog format='/u01/app/oracle/bak/arch_%d_%T_%s';

--备份完毕后,把相应备份文件拷贝到丛库的相应目录(目录必须一致)
    Oracle$Scp /export/home/oracle/bak/* oracle@192.168.94.199:/export/home/oracle/bak/

--使用duplicate 还原standby数据库
  --primary端:
    Oracle$rman target / auxiliary sys/system@dgdb1_s
    RMAN> duplicate target database for standby nofilenamecheck dorecover;

--收尾工作及开启dg
  --standby端建立standby log(至少比redo多一组):
    Oracle$sqlplus / as sysdba
    SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/export/home/oracle/product/10.2.0/oradata/dgdb1/redo04.log') size 50M;
    SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/export/home/oracle/product/10.2.0/oradata/dgdb1/redo05.log') size 50M;
    SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/export/home/oracle/product/10.2.0/oradata/dgdb1/redo06.log') size 50M;
    SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/export/home/oracle/product/10.2.0/oradata/dgdb1/redo07.log') size 50M;
  --开启服务(standby端):
    SQL> alter database recover managed standby database disconnect from session;

--测试服务是否正常 
  --standby端(看归档日志号):
    SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
  --primary端(强制一个日志切换):
    SQL> alter system switch logfile;
  --standby端(看归档日志号):
    SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
  --standby端(看应用归档日志的号):
    SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

--实现primary、standby的切换:
  --primary端:
    SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  --primary端(上一步的结果必须是”TO STANDBY”才可以)
    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
    --OR(上一步结果为”SESSIONS ACTIVE”,且解决不掉)
    SQL>ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
  --Primary端:
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
  --standby端:
    SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; 
  --standby端(上一步的结果必须是”TO STANDBY”才可以):
    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
    --OR(上一步结果为”SESSIONS ACTIVE”,且解决不掉)
    SQL>ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
  --打开新的primary:
    SQL>ALTER DATABASE OPEN;
    --OR(最后一次启动后以read only模式打开过)
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP;

--在新standby上重新启动log apply services(如果必要):
  SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
  --OR(后台模式 )
  SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
  --OR(实时应用redo)
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
  --新primary端(开始发送redo 数据到新standby端):
    SQL> ALTER SYSTEM SWITCH LOGFILE;

Oracle10g物理DG详细配置方法及步骤的更多相关文章

  1. PL/SQL Developer 连接Oracle数据库详细配置方法

    PL/SQL Developer 连接Oracle数据库详细配置方法 近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server).本文现对监听配置作一简单介绍,给出 ...

  2. 关于Apache的配置方法和步骤

    一.下载.安装和卸载 网址:https://httpd.apache.org/docs/current/platform/windows.html#down 点击ApacheHaus,在里面下载任何版 ...

  3. 二级缓存EhCache在几种应用技术的配置方法和步骤总结

    一:Spring和Ehcache缓存集成 业务问题:如果仓库不经常变动,大量进出库,总是需要查询仓库列表 (列表重复) ,使用缓存优化 ! 阅读spring规范29章节 第一步: 导入ehcache的 ...

  4. PHP环境(apache,PHP,Mysql)详细配置方法

    1.安装Apache ,直接运行安装即可,我们将其安装到D:\PHP\Apache/目录下 2.将PHP压缩包解压内容放到指定目录(例如:D:\PHP\Php5,将目录中的PHP.iniDevelop ...

  5. 在SRAM、FLASH中调试代码的配置方法(附详细步骤)

    因为STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试.除此之外,SRAM 存储器的写入速度比在内部 FLASH 中要 ...

  6. Cotex-M3内核STM32F10XX系列时钟及其配置方法

    一.背景 最近做个项目,需要使用STM32,还是以前一样的观点,时钟就是MCU心脏,供血即时钟频率输出,想要弄明白一个MCU,时钟是一个非常好的切入点.言归正传,网上已经有太多大神详述过STM32的详 ...

  7. STM32串口——中断方式的一般配置方法

    #include "stm32f10x.h" /************************************************ 该程序讲解串口程序的一般配置方法: ...

  8. STM32串口程序的一般配置方法

    #include "stm32f10x.h" /************************************************ 该程序讲解串口程序的一般配置方法: ...

  9. centos ftp服务器搭建 vsftpd 匿名访问配置方法 ftp 550 Failed to open file 错误处理

    vsftpd是linux下常用的ftp服务软件,配置起来其实不复杂,只是网上很多文章,配置后都无法成功.我使用它是用于局域网内部分享文件的,所以使用匿名的方式. ftp本身密码是明文传输的,如果需要安 ...

随机推荐

  1. URL中“#”

    2010年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http://twitter.com/username改版后,就变成了h ...

  2. Shiro入门这篇就够了【Shiro的基础知识、回顾URL拦截】

    前言 本文主要讲解的知识点有以下: 权限管理的基础知识 模型 粗粒度和细粒度的概念 回顾URL拦截的实现 Shiro的介绍与简单入门 一.Shiro基础知识 在学习Shiro这个框架之前,首先我们要先 ...

  3. python 练完这些,你的函数编程就ok了

    文件处理相关 1,编码问题 (1)请问python2与python3中的默认编码是什么? python 2.x默认的字符编码是ASCII,默认的文件编码也是ASCII python 2.x默认的字符编 ...

  4. redis分片和哨兵

    1 Redis的使用 1.1 Redis入门案例 1.1.1 什么样的数据使用缓存 说明:使用缓存其实为了减少用户查询数据库的时间.如果数据频繁的变更.不适用缓存.缓存中的数据应该保存修改频率不高的数 ...

  5. CCF-CSP 201709-4通信网络

    问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只能单向传递信息,即一条从部门a到部门b的通路只能由a向b传递信息.信息可以通过中转的方式进行传递,即如果a能将信息 ...

  6. 在使用document.getElementById('xxx').files[0]时,关于计算图片大小

    在使用文件上传属性时,一直好奇图片上传的大小时如何计算的,最近在使用中认识到的计算方式:  首先,图片大小的存储基本单位是字节(byte).每个字节是由8个比特(bit)组成.所以,一个字节在十进制中 ...

  7. JSON基础(JavaScript)

    1.在JS中使用JSON,先将字符转换为JOSN格式然后就可以直接使用: var obj = JSON.parse(cInfoObj) $('#staffName').val(obj.candidat ...

  8. gif文件解析

    详细资料:http://blog.csdn.net/wzy198852/article/details/17266507 MD5:98206F88B84CCC399C840C8EEC902CCF GI ...

  9. selenium2自动化测试学习笔记(四)

    今天是学习selenium2第四天.总结下今天的学习成果,自动登录网易邮箱并写信发送邮件. 知识点or坑点: 1.模块化编写测试模块(类似java里的抽象方法,js的函数编写) from 包名 imp ...

  10. 在Python中使用Redis

    在Python中要使用Redis数据库,首先要安装redis 之前的博客中有写到在命令行模式下操作Redis数据库. 要在项目中使用的话可以这么做: 通过初始化 redis.Redis,得到返回的对象 ...