• Oracle10g物理DG详细配置方法及步骤


    --测试环境:
        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;

  • 相关阅读:
    Spring:ContextLoaderListener作用
    正确理解UNICODE UTF8等编码方式
    context:propertyplaceholder/元素
    org.springframework.web.context.ContextLoaderListener作用
    javascript下ie7,ie8的Date Bug的解决
    margin负值的几种妙用
    小米note3,华为手机,软键盘弹出之后,页面上定位的元素布局会乱掉
    当padding,margin,top为百分比值,具体数值如何计算
    PHP处理二维数组合并 时间复杂度O(n)
    redis常用操作整理
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/8759078.html
Copyright © 2020-2023  润新知