一、主机描述

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

oracle DataGuard 主从 踩过坑的的更多相关文章

  1. oracle dataguard主从切换

    前言: 众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据:另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动 ...

  2. Oracle DataGuard主库丢失归档日志后备库的RMAN增量恢复一例

    第一部分  问题描述和环境状态确认 ----1. 问题场景 Oracle DataGuard主库丢失archivelog,如何不重建备库完成同步? 在Oracle DataGuard主从同步过程中可能 ...

  3. Oracle Dataguard故障转移(failover)操作

    注意:故障转移会破坏DG的主从关系,使其变为互不相关的2个数据库,谨慎使用. (一)故障转移操作流程图 (二)故障转移操作流程 备注:以下操作步骤与上面流程图步骤一一对应 STEP1:刷新所有未发送到 ...

  4. Oracle DataGuard故障转移(failover)后使用RMAN还原失败的主库

    (一)DG故障转移后切换为备库的方法 在DG执行故障转移之后,主库与从库的关系就被破坏了.这个时候如果要恢复主从关系,可以使用下面的3种方法: 将失败的主库重新搭建为备库,该方法比较耗时: 使用数据库 ...

  5. 从零开始学 Java - Spring 支持 CORS 请求踩的坑

    谁没掉进过几个大坑 记得好久之前,总能时不时在某个地方看到一些标语,往往都是上面一个伟人的头像,然后不管是不是他说的话,下面总是有看起来很政治正确且没卵用的屁话,我活到目前为止,最令我笑的肚子痛得是下 ...

  6. Oracle Dataguard之failover

    Oracle Dataguard中,角色转换包含两类:Switchover和Failover.上文<Oracle Dataguard之switchover>中,我们已经谈过了switcho ...

  7. Oracle Dataguard之switchover

    Oracle Dataguard的角色转换包含两类:Switchover和Failover.Switchover指主备之间角色转换,主库降为备库,备库升级为主库.而failover则是指主库出现问题时 ...

  8. Oracle Dataguard之Real-Time Apply

    Oracle Dataguard一共支持三种模式:最大可用模式(Maximum Availability),最大性能模式(Maximum Performance),最大保护模式(Maximum Pro ...

  9. Oracle Dataguard之物理standby的基本配置

    尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便.但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知 ...

随机推荐

  1. SpringBoot启动

    一.启动时加载数据,就用CommandLineRunner 只需要将类实现CommandLineRunner,并且加上Component注解,还可以通过Order来控制启动顺序. @Component ...

  2. SICP 习题 (2.8) 解题总结:区间的减法

    SICP 习题 2.8 须要我们完毕区间运算的减法.区间运算的加法书中已经有了,代码例如以下: (define (add-interval x y) (make-interval (+ (lower- ...

  3. 基于配置的Spring MVC3

    网上查找的spring mvc3大部分都是基于注射的方式,总感觉注射有点怪怪.不利于后期扩展和项目管理,于是特意写下这篇基于xml配置的Spring MVC3.以供大家參考. 怎么建立web项目和下载 ...

  4. django 模板使用静态文件

    1.新建项目 2.新建app,并在install_app中添加该app 3.和app文件夹并列新建static.和TEMPLATES  文件夹,分别放静态文件和模板 4.setting.py中设置 T ...

  5. ORM是什么?

    对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据 ...

  6. 请教中文的OCR软件哪个最好?

    对原件,有这几种:1,全中文(含标点,一些英文符号)2,中英文(英文较多,或英文占大多数)3,全英文(这个用finereader8.0) 針對1.2 紫光 超星阅读器自带的OCR组件 尚书七号搞定全中 ...

  7. angular.js快速入门 hello world

    我们整个系列的学习会去写一个简单blog雏形,如果有精力再完善美化. 但是这篇还是要从HelloWorld开始学习. angular.js 文件加载我们选用 bootstrap中文网提供的一个cdn服 ...

  8. poj2151--Check the difficulty of problems(概率dp第四弹,复杂的计算)

    Check the difficulty of problems Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5009   ...

  9. iOS 碰撞检測以及事件响应

    */ //碰撞检測 //碰撞检測de过程 //碰撞检測 //碰撞检測 //碰撞检測 //UIApplication-> UIWindow-> UIController-> 视图控制器 ...

  10. 告诉你38个MySQL数据库的小技巧

    无论是运维.开发.测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库.学MySQL,到底是要学习它的哪些东西呢? 1.如何快速掌握MySQL? 培养兴趣 兴趣是最好的老师,不论学习 ...