尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便。但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知其然不知其所以然,Dataguard的本质没有吃透,也不利于其维护和调优。

本配置文档基于Oracle官方文档,目的在于加深大家对于Dataguard的了解。

本配置的结果是最大性能模式下的异步传输 ,因此在参数文件中,只涉及基本的主备参数,没有考虑switchover和最大性能模式下的real time apply。在监听的配置中,也没有考虑Data Guard Broker的应用情况

配置环境:

主库:                                                                         备库:

操作系统版本:           Oracle Linux 6.3                             Oracle Linux 6.3

数据库版本:              Oracle 11.2.0.1.0                           Oracle 11.2.0.1.0

主机名:                    node1.being.com                           node2.being.com

IP:                          192.168.1.11                                192.168.1.12

db_name                   orcl                                              victor

db_unique_name        orcl                                               orcl

instance_name           orcl                                              victor

service_names            orcl                                              victor

注意:1. Dataguard中只需要db_unique_name保持一致即可

2. 主库中除了安装Oracle软件以外,还需要dbca建库。而备库中,只需要安装Oracle软件即可,即在./runInstaller安装过程中,第三步选择install software only

即可

3. 主备库的ORACLE_BASE=/u01/app/oracle,ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1/db_1

一、配置监听

1> 主库上

[oracle@node1 ~]$ cd $ORACLE_HOME/network/admin/

[oracle@node1 admin]$ cat tnsnames.ora

TO_VICTOR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = victor)
)
)

其中to_victor为网络服务名,在后面配置log_archive_dest_2和fal_server中会用到

2> 备库上

[oracle@node2 ~]$ cd $ORACLE_HOME/network/admin/

[oracle@node2 admin]$ cat tnsnames.ora

TO_ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

注意:该配置只是基于基本的Dataguard配置,没有考虑Dataguard broker的配置

二、主库环境准备  -->> 在node1上操作

1> 将数据库设置为归档模式

SQL> archive log list   -->>若Database log mode为No Archive Mode,则表示该数据库运行在非归档模式下。进行以下操作

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> alter database open;

2> 将数据库设置为Force Logging模式

SQL> select force_logging from v$database;  -->>若为NO,则进行以下操作

SQL> alter database force logging;

3> 修改主库参数文件

SQL> alter system set log_archive_config='dg_config=(orcl,victor)';

-->> 代表该Dataguard是两个节点,一主一从,若要配置多个节点,则需要在此处添加。

SQL> alter system set log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(online_logfiles,primary_role) db_unique_name=orcl';

-->> location代表本地归档。在这里我们使用闪回区作为在线日志文件的归档目录,在实际生产环境中,如果归档日志是归档在本地文件系统上,不建议使用闪回区,因为闪回区和数据库软件是在同一个目录下,如果归档日志过多,闪回区空间增长过快,容易造成磁盘空间不足,这样容易使数据库挂掉。valid_for代表该归档目录只有在该库为主库,归档在线日志文件时才有效。

SQL> alter system set log_archive_dest_2='service=to_victor async valid_for=(online_logfiles,primary_role) db_unique_name=victor';

-->> service后面接的是网络服务名

SQL> alter system set log_archive_dest_state_1='enable';

SQL> alter system set log_archive_dest_state_2='enable';

SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;  -->> 设置密码文件的权限,该设置需重启数据库才能生效

SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;  -->> 设置归档日志的格式,该设置需重启数据库才能生效

-->> 最后两项可不用显性设定

三、 为备库创建各种文件 -->> 在node1上操作

1> 密码文件

[oracle@node1 ~]$ cd $ORACLE_HOME/dbs/

[oracle@node1 dbs]$ orapwd file=orapworcl entries=5 force=y password=oracle

2> 参数文件

SQL> create pfile='/home/oracle/orcl.ora' from spfile;

3> 备份数据库

对数据库做备份有多种办法,包括冷备、在线热备、RMAN备份,在这里我们使用RMAN备份

[oracle@node1 ~]$ mkdir /home/oracle/rman

[oracle@node1 ~]$ rman target /

RMAN> backup database format '/home/oracle/rman/full_%U';

4> 备份控制文件

SQL> alter system switch logfile;

SQL> alter database create standby controlfile as '/home/oracle/victor.ctl';

四、将上述四类文件copy到备库

[oracle@node1 ~]$ scp $ORACLE_HOME/dbs/orapworcl oracle@192.168.1.12:/u01/app/oracle/product/11.2.0.1/db_1/dbs/orapwvictor

[oracle@node1 ~]$ scp /home/oracle/orcl.ora oracle@192.168.1.12:/home/oracle/victor.ora

[oracle@node1 ~]$ scp -r /home/oracle/rman/ oracle@192.168.1.12:/home/oracle/rman

[oracle@node1 ~]$ scp /home/oracle/victor.ctl oracle@192.168.1.12:/home/oracle

五、 创建备库

1> 修改参数文件

[oracle@node2 ~]$ vim victor.ora

*.audit_file_dest='/u01/app/oracle/admin/victor/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/victor/control01.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
db_unique_name=victor
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(protocol=TCP)'
*.log_archive_config='dg_config=(orcl,victor)'
*.log_archive_dest_1='location=/u01/archivelog valid_for=(standby_logfiles,standby_role) db_unique_name=victor'
*.log_archive_dest_state_1='enable'
*.memory_target=471859200
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_servers=1
*.undo_tablespace='UNDOTBS1'
fal_server=to_orcl
db_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/victor/'
log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/victor/’
standby_file_management=auto

2> 创建参数文件中相应的目录

[oracle@node2 ~]$ mkdir -p /u01/app/oracle/admin/victor/adump

[oracle@node2 ~]$ mkdir /u01/archivelog

[oracle@node2 ~]$ mkdir -p /u01/app/oracle/oradata/victor

[oracle@node2 ~]$ cp /home/oracle/victor.ctl /u01/app/oracle/oradata/victor/control01.ctl

3> 创建备库

[oracle@node2 ~]$ sqlplus / as sysdba

SQL> create spfile from pfile='/home/oracle/victor.ora';

SQL> startup mount

[oracle@node2 ~]$ rman target /

RMAN> restore database;

RMAN> alter database open;

SQL> alter database recover managed standby database disconnect from session;

六、测试

1> 在备库上查询归档日志的序列号

SQL> select sequence# from v$archived_log;

2> 在主库上切换一次日志

SQL> alter system switch logfile;

3> 在备库上查询归档日志的序列号,看是否有增加

SQL> select sequence# from v$archived_log;

4> 在备库上查询归档日志是否被应用

SQL> select sequence#,applied from v$archived_log;

当然,也可以用具体案例进行测试,譬如在主库中新建一张表,对表进行增、删、改,然后切换日志,看备库能否应用。

Oracle Dataguard之物理standby的基本配置的更多相关文章

  1. Oracle Dataguard之Real-Time Apply

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

  2. 9. Oracle DataGuard的介绍

    一. Oracle DataGuard简介 Oracle DataGuard:简称DG.是由一个Primary Database(主库)和一个或者多个Standby Database(备库)组成.对O ...

  3. Oracle DataGuard 物理Standby 搭建(上)

    物理standby database 环境搭建 Arch asysnc Oracle Dataguard host IP Oracle_sid DB_unique_name FAL_server FA ...

  4. Oracle DataGuard 物理Standby 搭建(下)

    主备库切换 Switchover 一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUAR ...

  5. Oracle Data Guard 创建物理Standby数据库

    创建物理备库 机器名                    a1                    a2                    IP:                    192 ...

  6. 【DATAGUARD】物理dg配置客户端无缝切换 (八.4)--ora-16652 和 ora-16603错误

    [DATAGUARD]物理dg配置客户端无缝切换 (八.4)--ora-16652 和 ora-16603错误 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读 各 ...

  7. 【DATAGUARD】物理dg配置客户端无缝切换 (八.3)--客户端TAF 配置

    [DATAGUARD]物理dg配置客户端无缝切换 (八.3)--客户端TAF 配置 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读 各位技术爱好者,看完本文后,你 ...

  8. 【DATAGUARD】物理dg配置客户端无缝切换 (八.2)--Fast-Start Failover 的配置

    [DATAGUARD]物理dg配置客户端无缝切换 (八.2)--Fast-Start Failover 的配置 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读 各 ...

  9. 【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置

    [DATAGUARD]物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读 各位技 ...

随机推荐

  1. 无法导入以下密钥文件: xxxx.pfx,该密钥文件可能受密码保护 的解决方案

    无法导入以下密钥文件: xxxx.pfx,该密钥文件可能受密码保护.若要更正此问题,请尝试再次导入证书,或手动将证书安装到具有以下密钥容器名称的强名称 CSP: VS_KEY_A5A29909FF6D ...

  2. [Xpand] Error 1 Invalid option '6' for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default

    原因是用的vs2015 默认用了c#6 ,但是在没安装.net 4.6 环境下编译失败. 解决办法很简单,修改 6 为 5 做降级就可以了. 1.nuget install DotNetCompile ...

  3. 查看当前正在运行的activity

    找到sdk的安装路径,比如我的是 D:\prostu\Android\android-sdk\tools该路径下的: hierarchyviewer.bat 双击,可以用此工具查看设备跑的是当前的哪个 ...

  4. MSP430单片机的位操作

    MSP430单片机属于RISC(Reduced Instruction Set Computer)型处理器.与普通的51单片机的复杂指令集相区别.普通51单片机执行一条指令最少需要12个时钟周期,而R ...

  5. redis持久化以及主从服务器的配置

    作者:silenceper 日期:2013-10-03 原文地址:http://silenceper.com/archives/959.html redis 与memcached 最大的一个区别就是R ...

  6. IOS 通过苹果开放API检测更新

    #define APPID @"1067207206" -(void)onCheckVersion { NSDictionary *infoDic = [[NSBundle mai ...

  7. iOS直播直播,头都大了

    随着直播市场的火热,市场大军都逐步进入直播市场 ,腾讯旗下的NOW直播也不例外 先说说直播设计底层 一 .流媒体 1 - 伪流媒体 1.1 扫盲:边下载边播放 1.2 伪流媒体:视频不是实时播放的,先 ...

  8. Linux之RPM安装软件

    源码包 (可以看到源代码)      脚本安装包(写好的xsheel一键安装.本质还是源码包和二进制包) 二进制包(RPM包.系统默认包)      包管理系统简单,通过命令就可以安装.卸载     ...

  9. Linux + Mono 目前已经支持Entity Framework 6.1

    在上个随笔 CentOS上 Mono3.2.8运行ASP.NET MVC4经验中,步骤2中要求卸载EF 5.0,这样才能在Linux + Mono的环境中运行ASP.NET MVC4的Web应用.今天 ...

  10. C#中使用OpenSSL的公钥加密/私钥解密

    在C#中进行公钥加密/私钥解密,需要用RSACryptoServiceProvider,但是它不支持由OpenSSL生成的公钥/私钥字符串. 比如这样的公钥/私钥对( 公私钥生成方法见 http:// ...