Oracle 11g DataGuard物理standby配置

简介:

看到oracle官方文档说oracle 11g dataguard在物理standby机器上出于open状态也可以应用redo,所以就在本地试验了下,确实如此,这样既可以应用redo也可以进行数据查询和数据库的备份.既解决了数据的容灾也解决了主数据库的压力.

Oracle dataguard 简介

Dataguard分为2:
 
  物理standby:  此类型分为redo应用、read-only模式、read-write模式,当处于redo应用 的时候,不能进行相关的查询操作,当处于read-only,不能应用redo,但是 oracle 11G版本之后,read-only下可以应用redo,当处于read-write,  暂停从primary接受redo数据.
 
 逻辑 standby:  此类型可以在read-write模式下,可以从primary接受redo数据,并且可以应 redo.
 

关于2者的区别和特点,大家可以自己在网上进行搜索,我这里就不一一说了.
 
2种类型的相关进程:

 
物理standby相关进程
_ Remote file server (RFS)

负责从主数据库上接收归档文件

_ Archiver (ARCn)

将日志进行归档

Managed recovery process (MRP)

将归档文件应用到备用机上

 
逻辑standby相关进程
_ Remote file server (RFS)

负责从主数据库上接收归档文件

_ Archiver (ARCn)

将日志进行归档

Logical standby process (LSP)

将归档文件应用到备用机上

实验环境:

   本次试验使用vmware server 1.6虚拟机,相关的IP规划如下:

 

   192.168.137.93                primary数据库

   192.168.137.94                standby数据库

 

   2个服务器上执行如下操作:

   # vi /etc/hosts

 

 192.168.137.93                node1

   192.168.137.94                node2

软件环境

   数据库:  oracle  11G

Dataguard 配置:

primary服务器上执行如下操作

 

SQL> ALTER DATABASE FORCE LOGGING;    //primary数据库设置
                                        FORCE LOGGING模式

 
SQL> create pfile from spfile;   //创建一个pfile,可以方便编辑,我这里把spfile放到另外一个路径,oracle读取pfile.

 

pfile文件添加如下内容:

 

*.DB_UNIQUE_NAME=uqn_node1              //自定义一个
                                          unique_name名字
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(uqn_node1,uqn_node2)'  //此处为主备服务器unique_name

*.LOG_ARCHIVE_DEST_2='SERVICE=node2 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=uqn_node2'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.LOG_ARCHIVE_MAX_PROCESSES=30

*.FAL_SERVER=node2                        //这里为net
                                            service name
*.FAL_CLIENT=node1

*.STANDBY_FILE_MANAGEMENT=AUTO

 

假如数据库处在非归档模式下执行下面的sql(此步骤因是否处于归档模式而定)

 

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;

 

STANDBY数据创建控制文件

 

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oradata/wiliiwin.ctl';

SQL> ALTER DATABASE OPEN;

 

复制primary服务器的文件(数据文件、密码文件、pfile文件、控制文件)到STANDBY服务器上

 

# cd /home/oracle/dbs

# cp initora10.ora orapwora10 /home/oradata/

# cd /home/

$ scp -r admin/ oradata/ oracle@node2:/home/oradata

 

STANDBY服务器上执行下面的操作

 

$ cd /home/oradata/ora10

$ rm -rf control0*

$ mv ../wiliiwin.ctl control01.ctl

$ cp control01.ctl control02.ctl

$ cp control01.ctl control03.ctl

$ cd /home/oracle/dbs

$ mv /home/oradata/initora10.ora .

$ mv /home/oradata/orapwora10 .

$ vi initora10.ora                        //需要把里面的内
                                            容稍微修改下
 

  *.DB_UNIQUE_NAME=uqn_node2              //自定义一个
                                            unique_name名字
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(uqn_node1,uqn_node2)'  //此处为主备服务器的unique_name

*.LOG_ARCHIVE_DEST_2='SERVICE=node1 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=uqn_node1'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.LOG_ARCHIVE_MAX_PROCESSES=30

*.FAL_SERVER=node1                        //这里为net
                                            service name
*.FAL_CLIENT=node2

*.STANDBY_FILE_MANAGEMENT=AUTO

 

$ lsnrctl start                       //primary
                                      STANDBY服务器上都执行

 

在主服务器上启动数据库实例

SQL> startup;

$ sqlplus system/oracle@node1    //primarySTANDBY服务器上都进行测试下看时候能正常连接

 

STANDBY服务器上启动数据库实例

 

//创建4stanby redo 大小最好与主服务器大小相同,并且多一个文件,最好在Primary服务器上也做如下操作,方便之后的角色切换.

 

SQL> startup mount;

SQL> alter database add standby logfile group 4 '/home/oradata/ora10/stdREDO01.LOG' size 50m;  

SQL> alter database add standby logfile group 5 '/home/oradata/ora10/stdREDO02LOG' size 50m;

SQL> alter database add standby logfile group 6 '/home/oradata/ora10/stdREDO03LOG' size 50m;

SQL> alter database add standby logfile group 7 '/home/oradata/ora10/stdREDO04LOG' size 50m;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;     //启动实时应用

测试dataguard数据是否同步

测试同步是否正常方法1

 

STANDBY服务器:

 

SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 

SEQUENCE# FIRST_TIM NEXT_TIME

---------- --------- ---------

         4 04-MAY-10 04-MAY-10

         5 04-MAY-10 04-MAY-10

 

Primary服务器:

 

SQL> ALTER SYSTEM SWITCH LOGFILE;  //触发归档

 

现在再回到STANDBY服务器上:

 

SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 

 SEQUENCE# FIRST_TIM NEXT_TIME

---------- --------- ---------

         4 04-MAY-10 04-MAY-10

         5 04-MAY-10 04-MAY-10

         6 04-MAY-10 04-MAY-10

 

SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 

 SEQUENCE# APP

---------- ---

         4 YES

         5 YES

         6 YES

 

发现有一条新的记录,说明同步是正常的.

 

测试同步是否正常方法2

 

Primary服务器上创建一个表

 

SQL> create table wiliiwin(id integer, name char(10));

SQL> insert into wiliiwin values(1,'wiliiwin');

SQL> insert into wiliiwin values(2,'wiliiwiner');

SQL> insert into wiliiwin values(3,'wiliiwinsi');

SQL> ALTER SYSTEM SWITCH LOGFILE;

 

STANDBY服务器上

 

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  //取消执行redo

    

   //报错ORA-16136: Managed Standby Recovery not active

     是由于MRP0服务没有启动,如下是查看各服务状态sql语句

 

   SQL>select process,status,sequence# from v$managed_standby;

 
   SQL>RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; //启动MRP0服务

 

 

SQL> ALTER DATABASE OPEN;             //打开数据库,由于使用
                                       的oracle 11g 所以现
                                       在也可以应用redo.

SQL> select * from wiliiwin;

 

        ID NAME

---------- ----------

         1 wiliiwin

         2 wiliiwiner

         3 wiliiwinsi      //可以看到数据已经同步过来了,
                             于oracle 11G open状态下也可
                             以执行redo,所以现在在primary
                             相关的操,STANDBY也照样可以同
                             步过来

 

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;  //使STANDBY恢复到mount状态




本文转自 vfast_chenxy 51CTO博客,原文链接:http://blog.51cto.com/chenxy/701784,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
540 93
|
Oracle Java 关系型数据库
【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的物理存储结构
Oracle的物理存储结构包括数据文件、联机重做日志文件、控制文件、归档日志文件、参数文件、告警日志文件、跟踪文件和备份文件。这些文件在硬盘上存储数据库的各种数据和日志信息,确保数据库的正常运行和故障恢复。视频讲解和详细说明见原文。
251 0
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
2163 3
|
Oracle 关系型数据库 Linux
Oracle11g Linux单机STANDBY配置
环境:RHEL 4 U5+Oracle 11.1.0.6 主库SID:ora11g 备用库SID:standby 主库数据文件存放目录:/home/oracle/opt/oradata/or...
878 0
|
5月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
311 0
|
8月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
6月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
429 8
|
8月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
399 11