zoukankan      html  css  js  c++  java
  • oracle DataGuard 主从 踩过坑的

    一、主机描述

       dbprimary: 192.168.1.57 主机名称db1
       dbstandby: 192.168.1.58 主机名成db2
       SID: orcl

    二、配置tns,配置好的文件内容:

    dbprimary的listener.ora (/db/app/oracle/product/11.2.0/network/admi目录下):
    # Generated by Oracle configuration tools.
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = orcl)
          (ORACLE_HOME = /db/app/oracle/product/11.2.0)
          (GLOBAL_DBNAME = orcl)
        )
      )

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = db1)(PORT = 1521))
        )
      )

    dbstandby的listener.ora:
    # Generated by Oracle configuration tools.

    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = orcl)
          (ORACLE_HOME = /db/app/oracle/product/11.2.0)
          (GLOBAL_DBNAME = orcl)
        )
      )

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = db2)(PORT = 1521))
        )
      )

    dbprimary和dbstandby上的tnsnames.ora是一样的
    # Generated by Oracle configuration tools.

    DBSTANDBY =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = db2)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )

    DBPRIMARY =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = db1)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )

     然后在两台机器上分别检查配置是否正确
     oracle>lsnrctl stop
     oracle>lsnrctl start
     oracle>lsnrctl status
     oracle>tnsping dbprimary
     oracle>tnsping dbstandby
     oracle>sqlplus sys/password@dbprimary as sysdba
     oracle>sqlplus sys/password@dbstandby as sysdba

    三、在dbprimary上操作
    1. oracle> mkdir /db/app/oracle/oradata/archive
    2. cd /db/app/oracle/product/11.2.0/dbs

    oracle> cp orapworcl orapworcl.bak
    oracle> orapwd file=orapw$ORACLE_SID password=oracle entries=30 force=y

    产生密码文件oraworcl,一定要拷贝到从库上,就算从库执行同样的命令也不行
    3. 备份并重新创建pfile文件

    oracle>mv initorcl.ora initorcl.ora.bak

    oracle>sqlplus sys/password as sysdba
    sql>create pfile from spfile;

    在/db/app/oracle/product/11.2.0/dbs下生成initorcl.ora 在initorcl.ora文件后面增加内容:
    *.DB_UNIQUE_NAME='dbprimary'
    *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbprimary, dbstandby)'
    *.LOG_ARCHIVE_DEST_1='LOCATION=/db/app/oracle/oradata/archive/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbprimary'
    *.LOG_ARCHIVE_DEST_2='SERVICE=dbstandby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbstandby'
    *.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
    *.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
    *.LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'
    *.LOG_ARCHIVE_MAX_PROCESSES=30
    *.FAL_SERVER='dbstandby'
    *.FAL_CLIENT='dbprimary'

    *.DB_FILE_NAME_CONVERT='dbstandby','dbprimary'
    *.STANDBY_FILE_MANAGEMENT='AUTO'

    4. 备份并重新创建spfile文件

    oracle>mv spfileorcl.ora spfileorcl.ora.bak

    oracle>sqlplus sys/password as sysdba

    sql>create spfile from pfile;
     sql>startup mount;
     sql>alter database archivelog;
     sql>alter database open;
     sql>archive log list; 查看是否处于log模式,如果不是执行如下命令
     sql>alter database force logging; 改变为logging模式
     sql>alter database create standby controlfile as '/db/app/oracle/oradata/standby01.ctl'; 创建dbstandby上的控制文件
     sql>shutdown immediate;
     
    5. 把/db/app/oracle/oradata打包传到dbstandby服务器, 把 /db/app/oracle/product/11.2.0/dbs/oraworcl也传过去


    四、在dbstandby服务器上操作
    1. oracle>sqlplus sys/password as sysdba
       sql>shutdown immediate;
    2. oracle>cd /db/app/oracle
       oracle>mv oradata  oradata.bak
       把刚才传过来的包解压
       oracle>cd oradata
       oracle>cp standby01.ctl standby02.ctl
       oracle>cp standby01.ctl standby03.ctl
    3. 备份并重新创建pfile文件

    oracle>mv initorcl.ora initorcl.ora.bak

    sql>create pfile from spfile
     修改initorcl.ora中的*.control_files参数
    *.control_files='/db/app/oracle/oradata/standby01.ctl','/db/app/oracle/oradata/standby02.ctl','/db/app/oracle/oradata/standby03.ctl'
     增加
    *.DB_UNIQUE_NAME='dbstandby'
    *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbprimary, dbstandby)'
    *.LOG_ARCHIVE_DEST_1='LOCATION=/db/app/oracle/oradata/archive/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbstandby'
    *.LOG_ARCHIVE_DEST_2='SERVICE=dbprimary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbprimary'
    *.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
    *.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
    *.LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'
    *.LOG_ARCHIVE_MAX_PROCESSES=30
    *.FAL_SERVER='dbprimary'
    *.FAL_CLIENT='dbstandby'

    *.DB_FILE_NAME_CONVERT='dbstandby','dbprimary'
    *.STANDBY_FILE_MANAGEMENT='AUTO'
        
    4. 备份并重新创建spfile文件

    oracle>mv spfileorcl.ora spfileorcl.ora.bak

    oracle>sqlplus sys/password as sysdba

    sql>create spfile from pfile;
    sql>shutdown immediate;

    到此为止,已经完成了oracle DataGuard主备的所有配置

    五、主备配置验证,及数据库重启步骤

    (重点)在主库(db1)服务器上开启两个命令窗口,分别使用sqlplus登录主库和备库

    登录主库

    sqlplus sys/oracle@DBPRIMARY as sysdba

    登录备库

    sqlplus sys/oracle@DBSTANDBY as sysdba

    1.关闭主库

    SHUTDOWN IMMEDIATE;

    2.关闭备库

    SHUTDOWN IMMEDIATE;

    3.启动备库到mount

    startup mount;

    4.启动主库

    startup;

    5.打开备库

    alter database open;

    6.开启备库上的同步服务

    alter database recover managed standby database disconnect from session;

    7.检查是否工作正常

    (备)sql>select max(sequence#) from v$archived_log;
    (主)sql>alter system switch logfile;
    (主)sql>select max(sequence#) from v$archived_log; 查看当前sequence
    (备)sql>select max(sequence#) from v$archived_log;
    如果dbstandby的sequence跟着改变,说明已经好了

    8. select dest_name,status,error from v$archive_dest;  察看相应的归档路径的状态是否valid,否则根据error信息进行处理

    9. 可以查看alert日志文件
     /db/app/oracle/diag/rdbms/dbprimary/orcl/alert/log.xml
     /db/app/oracle/diag/rdbms/dbprimary/orcl/trace/alert_orcl.log

  • 相关阅读:
    谈谈一些有趣的CSS题目(十四)-- 纯 CSS 方式实现 CSS 动画的暂停与播放!
    Oracle 12c CDB PDB
    sqlplus 调试存储过程
    Oracle 存储过程A
    %notfound的理解——oracle存储过程 .
    ORA-04091: table xxx is mutating, trigger/function may not see it
    JQuery Div scrollTop ScrollHeight
    JQuery JSON Servlet
    div 移动
    HTML 三角符号
  • 原文地址:https://www.cnblogs.com/gaoyuechen/p/9515764.html
Copyright © 2011-2022 走看看