DataGuard逻辑备库创建(原创)

本文主要介绍将DataGuard的物理standby转换至逻辑standby,有关于物理standby的搭建可以参见
http://czmmiao.iteye.com/blog/911083
搭建逻辑备库前的注意事项 
初始化参数配置
初始化参数的修改并不仅仅只是在待创建的Standby数据库端创建,当前的Primary数据库甚至同一个Data Guard配置中的其他Standby数据库的初始化参数都有可能需要进行修改。
对于Primary数据库,至少需要新增一个LOG_ARCHIVE_DEST_n参数,以发送REDO数据到新的Standby端,同时其他一些与Standby环境相关的参数也会涉及调整,如LOG_ARCHIVE_CONFIG及FAL_*等参数。
而对于现有的Standby数据库(如果有的话),主要是基于角色转换的考虑,有必要对一些参数提前进行设置,设置的参数对当前功能不会有任何影响或促进,如果确定不进行角色转换,那么同一个Data Guard配置中的其他Standby数据库初始化参数也可以不做任何调整。
监听和NetService配置
建议用Net Manager 工具来配置,这样不容易出现错误。
创建密钥文件
必须确保在同一个Data Guard环境中,所有数据库的SYS用户拥有相同密码,建议从其他服务器复制密钥文件到本地,然后按照密钥文件名的格式修改文件名即可。
注意Windows平台和Linux/UNIX平台下,密钥文件名的命名格式并不相同,Windows平台下密钥文件名格式为PWD[sid].ora,而Linux/UNIX平台下密钥文件名格式为orapw[sid],注意文件名的大小写哟。

停止物理备库的redo应用
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  
Database altered. 
Primary数据库生成数据字典
执行下列过程,生成LogMiner字典信息: 
SQL> EXECUTE DBMS_LOGSTDBY.BUILD;  
PL/SQL procedure successfully completed. 
该过程专门用于生成记录的元数据信息到redo log,这样改动才会被传输到逻辑standby,然后才会被逻辑standby进行SQL应用。
提示:
该过程会自动启用primary数据库的补充日志(supplemental logging)功能(如果未启用的话)。
该过程执行需要等待当前所有事务完成,因此如果当前有较长的事务运行,可能该过程执行也需要多花一些等待时间。
该过程是通过闪回查询的方式来获取数据字典的一致性,因此oracle初始化参数UNDO_RETENTION值需要设置的足够大。
注意:在Primary生成数据字典前,一定要确保待转换的物理Standby数据库已经停止REDO应用。如果已经启用了REDO应用,执行下列语句停止REDO应用:
控制文件中记录了日志文件的应用状态,正常情况下一个日志文件只会被应用一次,如果Primary生成的数据字典信息被物理Standby数据库应用了,等该物理Standby转换成逻辑Standby数据库时(不应用数据字典不代表就不能执行转换哟)就不会再应用这些文件,自然也没有Primary数据库对象的元数据,这可能会导致这部分对象的修改不能被逻辑Standby正常应用。
我们操作的根本目的是为了让逻辑Standby能够应用到这部分数据字典信息,只要能够实现这一点,是否暂停REDO应用或什么时间暂停REDO应用就无所谓了。这也我们理解另外一个问题,如果Primary生成LogMiner字典信息时,待转换的物理Standby数据库没有暂停REDO应用怎么办?好办,马上暂停REDO应用,然后Primary数据库重新生成一下LogMiner字典信息就是。

转换物理Standby为逻辑Standby 
执行下列语句,转换物理Standby为逻辑Standby:
SQL> SHOW PARAMETER DB_NAME
NAME         TYPE        VALUE
---------------------- ----------- ------------------------------
db_name        string      orcl

SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY LGDG;  
Database altered. 
执行完该语句之后,关闭数据库并重新启动到MOUNT状态:
SQL> SHUTDOWN IMMEDIATE  
ORA-01507: database not mounted  
ORACLE instance shut down.  
SQL>  STARTUP MOUNT;
ORACLE instance started.
Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size              79694068 bytes
Database Buffers           83886080 bytes
Redo Buffers                2973696 bytes
Database mounted. 
为什么要重启?因为上述操作涉及逻辑Standby数据库更名,包括DBID、INCARNATION等均已被重新初始化。
再次查看DB_NAME参数和数据库角色:
SQL> SHOW PARAMETER DB_NAME;
NAME               TYPE        VALUE
-------------------------- ----------- ------------------------------
db_name             string      LGDG
SQL> SELECT DATABASE_ROLE FROM V$DATABASE;
DATABASE_ROLE
---------------- 
LOGICAL STANDBY 
现在DB_NAME和数据库的角色都已经被修改。
4调整逻辑Standby数据库初始化参数
设置重做日志文件路径,将本地生成的归档文件和Primary数据库发送来的归档文件分开,存放到不同目录内,注意归档文件路径不要冲突,修改参数如下:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive VALID_FOR=(ONLINE_LOGFILES, ALL_ROLES) DB_UNIQUE_NAME=LGDG';     # LGDG 是dg之间区分主库和备库的唯一名中配置的 
System altered .
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='LOCATION=/u01/std
VALID_FOR=(STANDBY_LOGFILES, STANDBY_ROLE) DB_UNIQUE_NAME=LGDG'; 
System altered.

增加standby redo logfile
SQL>alter database add standby logfile group 4 '/u01/app/oracle/oradata/orcl/standby04.dbf' size 50M; 
SQL>alter database add standby logfile group 5 '/u01/app/oracle/oradata/orcl/standby05.dbf' size 50M; 
5调整逻辑Primary数据库初始化参数
SQL> alter system set log_archive_dest_1='location=/u01/archive valid_for=(online_logfiles,all_roles)  db_unique_name=orcl_pd';  
System altered.  
SQL> alter system set log_archive_dest_3='location=/u01/std valid_for=(standby_logfiles,standby_role)  db_unique_name=orcl_pd';  
System altered. 
SQL>alter database add standby logfile group 4 '/u01/app/oracle/oradata/orcl/standby04.dbf' size 50M; 
SQL>alter database add standby logfile group 5 '/u01/app/oracle/oradata/orcl/standby05.dbf' size 50M; 
6打开逻辑Standby
由于逻辑Standby与Primary数据库事务并不一致,因此第一次打开时必须指定RESETLOGS子句,执行语句如下:
SQL> ALTER DATABASE OPEN RESETLOGS;
Database altered. 
然后执行下列SQL命令开始应用REDO数据:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY ; 
Database altered. 
重新执行启动REDO应用的命令,附加APPLY IMMEDIATE子句,以打开实时应用(由于当前REDO应用已经启动,因此我们首先停止REDO应用):
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;  
Database altered.  
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;  
Database altered. 
7验证环境
所有配置完成,接下来尝试在Primary数据库端执行修改操作,看看是否能够分别在逻辑Standby和物理Standby端应用。
首先在Primary数据库端执行下列语句,向tmp1表插入一条新记录并提交:
SQL> insert into scott.dept values(1,'dave','dmm');
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered. 
接下来看看逻辑Standby的同步情况:
SQL> select * from scott.dept;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
         1 dave           dmm 
提示: 细心观察重做日志,发现逻辑Standby有一点设计得很好,从Primary数据库接收到的重做日志文件文件,应用过之后就会自动删除,节省了磁盘空间。
OK,至此逻辑Standby创建成功.

参考至:http://ylw6006.blog.51cto.com/470441/676137
            http://www.5ienet.com/note/html/dg/logical-standby-created-step-by-step.shtml

            http://blog.csdn.net/tianlesoftware/article/details/5564179
本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

作者:czmmiao 原文地址:http://czmmiao.iteye.com/blog/1330652

时间: 2025-01-29 08:13:03

DataGuard逻辑备库创建(原创)的相关文章

【DATAGUARD】 基于同一个主机建立物理备库和逻辑备库 (三)

[DATAGUARD] 基于同一个主机建立物理备库和逻辑备库 (三) blog文档结构图:         需求: 在同一台机器配置10g单实例+物理dg+逻辑dg,即一个主库上挂2个备库,一个物理备库,一个逻辑备库,总体思路为:先搭建2台物理dg,然后将其中的一台转换为逻辑dg   之前发布过一步一步搭建 oracle 11gR2 rac + dg,这里的dg为物理dg,但是实际自己使用过程中发现需要开3个虚拟机,机器特卡,所以决定在同一台机器上再搭建一台物理和逻辑dg. 一步一步搭建 ora

【DATAGUARD】 基于同一个主机建立物理备库和逻辑备库(一)

[DATAGUARD] 基于同一个主机建立物理备库和逻辑备库(一)      之前发布过一步一步搭建 oracle 11gR2 rac + dg,这里的dg为物理dg,但是实际自己使用过程中发现需要开3个虚拟机,机器特卡,所以决定在同一台机器上再搭建一台物理和逻辑dg. 一步一步搭建 oracle 11gR2 rac + dg 之前传(一) http://blog.itpub.net/26736162/viewspace-1290405/  一步一步搭建oracle 11gR2 rac+dg之环

Oracle Data Guard学习(5) 创建逻辑备库

在创建逻辑备库之前,必须得先创建物理备库,关于如何创建物理备库,请参考<Data Guard 系列 (4) - 在不停主库的情况下创建物理备库>. 1. 在物理备库上停止日志应用服务 SYS@jkka> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; Database altered. 2. 重新设置主库为将来的角色转换做准备(switchover) 逻辑备库和物理备库不一样,在进行SQL应用的时候还会产生日志,即逻辑备库的

逻辑备库的Swichover和Failover

逻辑备库的Switchover  检查Primary数据库状态 查看当前Primary数据库状态:SQL>  SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS -------------------- TO STANDBY  如果该查询返回TO STANDBY 或SESSIONS ACTIVE则表示状态正常,可以执行转换操作,如果是其他值,你就需要重新检查一下Data Guard配置,如看看LOG_ARCHIVE_DEST_n

Oracle 11g Dataguard物理备库配置(一) Duplicate配置

Oracle 11g Dataguard Duplicate物理备库配置(一)之物理备库创建配置 # ver:1.5 第五次修改 # modify: 2013.8.16 # author: koumm 说明: 本文安装配置了Oracle 11g Dataguard通过duplicate方式创建物理备库. 比起上次配置有以下不同点: 1. 主备库目录结构不同. 2. 采用duplicate方式创建物理备库. 一.环境介绍 1. 主数据库环境 操作系统版本  : OEL5.8 x64 数据库版本  

Oracle 11g DataGuard 物理备库配置及Active DataGuard测试

说明: 本文安装配置了Oracle 11g Dataguard 物理备库,并测试了11g Dataguard 物理备库新特性Active Data Guard, 是Oracle Database Enterprise Edition的一个功能,需要额外授权,本文只用于测试. 一.环境介绍 1. 主数据库环境 操作系统版本: OEL5.8 x64 数据库版本  : Oracle 11.2.0.3 x64 数据库sid名 : orcl 2. 备库环境 操作系统版本: OEL5.8 x64 数据库版本

求教oracle dataguard 主备库日志无法同步的问题

问题描述 求教oracle dataguard 主备库日志无法同步的问题 现在做data guard 测试,试了很多次,主库的日志一直 无法同步到备份库.求高手解答. 测试环境 主库::操作系统 redhat 5.8 地址 192.168.1.135 数据库版本 oracle 10.2.0 备库: 操作系统 redhat 5.8 地址 192.168.1.3 数据库版本 oracle 10.2.0 主库参数文件 orcl.__db_cache_size=390070272 orcl.__java

11g 逻辑备库简单故障处理

模拟同步失败 备库创建唯一性索引 SQL> create unique index idx_scott_t_1 on scott.t(user_id); Index created. 主库插入重复数据 SQL> insert into scott.t select * from scott.t; 36 rows created. SQL> commit; Commit complete. 备库自动停止同步 Mon Sep 29 17:22:32 2014 LOGSTDBY: SQL Ap

Oracle 11g Dataguard物理备库配置(五) broker switchover测试

本文采用Oracle 11g Dataguard broker switchover测试 1. 采用dataguard broker 测试switchover 1) 主库情况 SQL> select open_mode,database_role,db_unique_name from v$database; OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME -------------------- ---------------- ---