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 11.2.0.3 x64 (只安装oracle数据库软件,no netca dbca)
数据库sid名 : orcl


3. DataGuard启动顺序

启动顺序:先启备库,后启主库
关闭顺序:先关主库,后关备库


二、主数据库配置

1. 配置hosts文件

# vi /etc/hosts

192.168.233.200  rman
192.168.233.150  slave


2. 修改配置lisener监听文件

$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora  

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

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


3. 修改配置tnsname.ora文件

说明:ORCL是主库的服务名,DG是备库的服务名。

$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

DG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = abc)
    )
  )


4. 修改配置成规档模式

1)、检查数据库是否处于归档状态

SQL> archive log list;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;


2)、将主库设置为 FORCE LOGGING 模式

SQL> alter database force logging;
SQL> select force_logging from v$database;

FORCE_LOG
———
YES 


5. 修改参数文件

SQL> 
alter system set db_unique_name='ORCL' scope=spfile;  
alter system set log_archive_config='DG_CONFIG=(ORCL,DG)';  
alter system set log_archive_dest_1='LOCATION=/u01/archivelog/ valid_for=(all_logfiles,all_roles) 

db_unique_name=ORCL' scope=spfile; 
alter system set log_archive_dest_2='SERVICE=DG lgwr async valid_for=(online_logfile,primary_role) 

db_unique_name=DG';  
alter system set fal_client='ORCL';  
alter system set fal_server='DG';  
alter system set standby_file_management=auto;  
alter database add standby logfile group 4 '/u01/app/oracle/oradata/orcl/standby_redo04.log' size 50M; alter database add standby logfile group 5 '/u01/app/oracle/oradata/orcl/standby_redo05.log' size 50M; 
alter database add standby logfile group 6 '/u01/app/oracle/oradata/orcl/standby_redo06.log' size 50M; alter database add standby logfile group 7 '/u01/app/oracle/oradata/orcl/standby_redo07.log' size 50M; 

 

shutdown immediate  
startup  
create pfile from spfile;  


6. 将pfile文件拷贝到备库。
$ scp /u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora 192.168.233.150:/home/oracle/

 

三、备库配置

1. 配置hosts文件

# vi /etc/hosts

192.168.233.200  rman
192.168.233.150  slave


2. 修改配置lisener监听文件

$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora  

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

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

注意:这里配置的是静态监听,下面在duplicate数据库时启动到nomount状态,nomount状态下数据库不动态去注册监听。


3. 修改配置tnsname.ora文件

说明:ORCL是主库的服务名,DG是备库的服务名。

$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

DG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


测试服务名连通性:
tnsping ORCL
tnsping DG


4. 创建11g数据库基本目录

# su - oracle

mkdir -p /u01/app/oracle/admin/orcl/{adump,dpdump,pfile,scripts}  
mkdir -p /u01/app/oracle/oradata/orcl  
mkdir -p /u01/app/oracle/fast_recovery_area/orcl
mkdir -p /u01/archivelog


5. 修改pfile参数文件

$ vi /home/oracle/initorcl.ora 

orcl.__db_cache_size=314572800
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=339738624
orcl.__sga_target=503316480
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=167772160
orcl.__streams_pool_size=4194304
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.db_unique_name='DG'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='DG'
*.fal_server='ORCL'
*.log_archive_config='DG_CONFIG=(ORCL,DG)'
*.log_archive_dest_1='LOCATION=/u01/archivelog/ valid_for=(all_logfiles,all_roles) db_unique_name=DG'
*.log_archive_dest_2='SERVICE=ORCL lgwr async valid_for=(online_logfile,primary_role) db_unique_name=ORCL'
*.memory_target=842006528
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

 

说明:修改DG相关配置参数。

 


6. 创建口令文件

# su - oracle
$ orapwd file='/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl' password=oracle entries=10


7. 启动到nomount状态

$ sqlplus /nolog
SQL> conn / as sysdba;
SQL> create spfile from pfile='/home/oracle/initorcl.ora';  
SQL> startup nomount;



四、 开始在RMAN duplicate数据库


1. RMAN同进连接主库与备库

$ rman target sys/oracle@ORCL auxiliary sys/oracle@DG

恢复管理器: Release 11.2.0.3.0 - Production on 星期日 8月 4 00:53:40 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: ORCL (DBID=1350215700)
已连接到辅助数据库: ORCL (未装载)


2. 开始duplicate数据库

RMAN> duplicate target database for standby nofilenamecheck from active database;

启动 Duplicate Db 于 04-8月 -13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=19 设备类型=DISK

内存脚本的内容:
{
   backup as copy reuse
   targetfile  '/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl' auxiliary format 
 '/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl'   ;
}
正在执行内存脚本

启动 backup 于 04-8月 -13
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=21 设备类型=DISK
完成 backup 于 04-8月 -13

内存脚本的内容:
{
   backup as copy current controlfile for standby auxiliary format  '/u01/app/oracle/oradata/orcl/control01.ctl';
   restore clone controlfile to  '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl' from 
 '/u01/app/oracle/oradata/orcl/control01.ctl';
}
正在执行内存脚本

启动 backup 于 04-8月 -13
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
复制备用控制文件
输出文件名=/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f 标记=TAG20130804T005344 RECID=7 STAMP=822531224
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 04-8月 -13

启动 restore 于 04-8月 -13
使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 已复制控制文件副本
完成 restore 于 04-8月 -13

内存脚本的内容:
{
   sql clone 'alter database mount standby database';
}
正在执行内存脚本

sql 语句: alter database mount standby database

内存脚本的内容:
{
   set newname for tempfile  1 to 
 "/u01/app/oracle/oradata/orcl/temp01.dbf";
   switch clone tempfile all;
   set newname for datafile  1 to 
 "/u01/app/oracle/oradata/orcl/system01.dbf";
   set newname for datafile  2 to 
 "/u01/app/oracle/oradata/orcl/sysaux01.dbf";
   set newname for datafile  3 to 
 "/u01/app/oracle/oradata/orcl/undotbs01.dbf";
   set newname for datafile  4 to 
 "/u01/app/oracle/oradata/orcl/users01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format 
 "/u01/app/oracle/oradata/orcl/system01.dbf"   datafile 
 2 auxiliary format 
 "/u01/app/oracle/oradata/orcl/sysaux01.dbf"   datafile 
 3 auxiliary format 
 "/u01/app/oracle/oradata/orcl/undotbs01.dbf"   datafile 
 4 auxiliary format 
 "/u01/app/oracle/oradata/orcl/users01.dbf"   ;
   sql 'alter system archive log current';
}
正在执行内存脚本

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为 /u01/app/oracle/oradata/orcl/temp01.dbf

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 backup 于 04-8月 -13
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/orcl/system01.dbf

输出文件名=/u01/app/oracle/oradata/orcl/system01.dbf 标记=TAG20130804T005352
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:09:20
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/orcl/sysaux01.dbf
输出文件名=/u01/app/oracle/oradata/orcl/sysaux01.dbf 标记=TAG20130804T005352
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:03:48
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/orcl/undotbs01.dbf
输出文件名=/u01/app/oracle/oradata/orcl/undotbs01.dbf 标记=TAG20130804T005352
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:25
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/orcl/users01.dbf
输出文件名=/u01/app/oracle/oradata/orcl/users01.dbf 标记=TAG20130804T005352
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
完成 backup 于 04-8月 -13

sql 语句: alter system archive log current

内存脚本的内容:
{
   switch clone datafile all;
}
正在执行内存脚本

数据文件 1 已转换成数据文件副本
输入数据文件副本 RECID=7 STAMP=822532054 文件名=/u01/app/oracle/oradata/orcl/system01.dbf
数据文件 2 已转换成数据文件副本
输入数据文件副本 RECID=8 STAMP=822532054 文件名=/u01/app/oracle/oradata/orcl/sysaux01.dbf
数据文件 3 已转换成数据文件副本
输入数据文件副本 RECID=9 STAMP=822532054 文件名=/u01/app/oracle/oradata/orcl/undotbs01.dbf
数据文件 4 已转换成数据文件副本
输入数据文件副本 RECID=10 STAMP=822532054 文件名=/u01/app/oracle/oradata/orcl/users01.dbf
完成 Duplicate Db 于 04-8月 -13

RMAN> 
RMAN> 

RMAN> exit
Recovery Manager complete.

3. 查看备库状态

说明:duplicate数据库之后,备库只是处于mount状态,查看备库状态。

[oracle@slave orcl]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.3.0 Production on 星期日 8月 4 01:09:07 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> conn / as sysdba;
已连接。


# 查看备库状态

SQL>  select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE           DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED             PHYSICAL STANDBY DG

 

4. 将备库置与应用日志模式状态

SQL> alter database recover managed standby database using current logfile disconnect from session;  
Database altered.  

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY DG

 

5. 验证物理备库日志应用

1)主库上操作

SQL> conn / as sysdba;
SQL> create user abc identified by abc ;
用户已创建。

SQL> grant dba to abc;
授权成功。

SQL> conn abc/abc
已连接。

SQL> create table abc ( id integer , name char(10));
表已创建。

SQL> insert into abc values ( 0 , 'aaa' );
已创建 1 行。

SQL> commit;
提交完成。

SQL> conn / as sysdba;
已连接。

SQL> archive log list;
数据库日志模式            存档模式
自动存档                  启用
存档终点                  /u01/archivelog/
最早的联机日志序列        18
下一个存档日志序列        20
当前日志序列              20
SQL> 


2)备库上验证

SQL> archive log list;
数据库日志模式            存档模式
自动存档                  启用
存档终点                  /u01/archivelog/
最早的联机日志序列        18
下一个存档日志序列        0
当前日志序列              20

SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

 SEQUENCE# FIRST_TIME     NEXT_TIME      APPLIED
---------- -------------- -------------- ---------
        12 04-8月 -13     04-8月 -13     YES
        13 04-8月 -13     04-8月 -13     YES
        14 04-8月 -13     04-8月 -13     YES
        15 04-8月 -13     04-8月 -13     YES
        16 04-8月 -13     04-8月 -13     YES
        17 04-8月 -13     04-8月 -13     YES
        18 04-8月 -13     04-8月 -13     YES
        19 04-8月 -13     04-8月 -13     YES
        20 04-8月 -13     04-8月 -13     IN-MEMORY

已选择9行。

说明: IN-MEMORY是11G的新特性。

 

五、将备库置于Active DataGuard模式,体验实时查询


在Oracle 11g之前,物理备库(physical Standby)在应用redo的时候,数据库需要处于mount状态。从11g开始,应用redo的时

候,物理备库可以处于read-only模式,这就称为Active Data Guard 。通过Active Data Guard,可以在物理备库进行查询或者

导出数据,从而减少对主库的访问和压力。


1. 备库上操作

1) 查看备库当前状态 mount

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY DG


2) 取消备库的自动恢复

SQL> alter database recover managed standby database cancel;
数据库已更改。


3) OPEN备库为只读模式(Dataguard只能启动到readonly模式)

SQL> alter database open;
数据库已更改。


SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY


4)打开实时应用状态模式

SQL> alter database recover managed standby database using current logfile disconnect;
数据库已更改。


SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ ONLY WITH APPLY PHYSICAL STANDBY DG

 

2. 主库上操作执行DDL,DML操作

# su - oracle

$ sqlplus /nolog
SQL> conn / as sysdba;

SQL> create tablespace abc datafile '/u01/app/oracle/oradata/orcl/abc.dbf' size 10m autoextend on next 10m;
表空间已创建。

SQL> conn abc/abc
已连接。
SQL> insert into abc values (1 , 'bbb');
已创建 1 行。

SQL> commit;
提交完成。

SQL> 


3. 备库上查看

SQL> select name from v$tablespace;

NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
ABC

已选择6行。


SQL> conn abc/abc;
已连接。

SQL> select * from abc;

        ID NAME
---------- ----------
         0 aaa
         1 bbb


主备的修改很快在备库上应用。

 


本文转自 koumm 51CTO博客,原文链接:http://blog.51cto.com/koumm/1263870,如需转载请自行联系原作者


相关文章
|
1月前
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Dept实体类和对应的配置信息
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Dept实体类和对应的配置信息
18 1
|
30天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之和Oracle数据同步必须是使用主库吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用合集之和Oracle数据同步必须是使用主库吗
|
1月前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
12天前
|
SQL DataWorks 安全
DataWorks产品使用合集之在进行测试数据集成时,目标库的数据是源库数据的3倍量,是什么导致的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之在进行测试数据集成时,目标库的数据是源库数据的3倍量,是什么导致的
|
1月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之可以通过配置Oracle数据库的schema注册表来监测表结构的变化吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
28 1
|
1月前
|
安全 IDE Java
Java串口通信技术探究2:RXTX库单例测试及应用
Java串口通信技术探究2:RXTX库单例测试及应用
42 4
|
1月前
|
测试技术 API 持续交付
【专栏】Python在自动化测试与单元测试中的应用,强调其简洁语法和丰富库的优势
【4月更文挑战第27天】本文探讨了Python在自动化测试与单元测试中的应用,强调其简洁语法和丰富库的优势。文章分为三部分:首先,阐述自动化测试的重要性及Python的易学性、库支持、跨平台和社区支持;其次,介绍了Python的Unittest标准测试框架和Pytest第三方框架的特点与用法;最后,讨论了Web UI和API自动化测试实践,并提出持续集成、测试金字塔等最佳实践。Python为软件开发的测试环节提供了强大支持,帮助构建更稳定的系统。
|
1月前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
29 3
|
1月前
|
敏捷开发 人工智能 Oracle
Oracle PLM Agile936 单点登录配置方式
Oracle PLM Agile936 单点登录配置方式
|
1月前
|
Oracle Java 关系型数据库
实时计算 Flink版产品使用合集之支持 Oracle 整库同步吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

推荐镜像

更多