手把手教你搭建Oracle 11G dataguard

一、前期准备

在准备搭建DATAGARD的时候,看过许多篇教程,按着教程去走,出现过问题,然后就不知道该如何进行下一步。

后来去看了官方文档的,整理一下思路后事情就简单多了。

以一主主库一备库为例,搭建DG的思路如下:

关闭防火墙。

配置ssh互信(非必须,减少SCP时输入密码的次数)

主库上的操作:

1)开启归档模式,开启forced logging;

2)添加standby logfile,standby logfile组比logfile组多一个;

3)修改参数文件

4)配置listener.ora 和tnsnames.ora

5)备份数据库和控制文件

备库准备:

1)将主库上的参数文件、密码文件拷贝到备库上,修改参数文件;

2)将主库上的listener.ora 和tnsnames.ora复制到备库上,修改listener.ora文件

3)将备份复制到备库上

4)在备库上创建对应的文件夹

5)启动备库到nomount模式

6)在备库上使用RMAN恢复数据库

7)备库上添加standby logfile

8)应用归档

9)查看状态

二、基本配置准备

2.1 primary服务器安装数据库软件并安装ORCL数据库,standby服务器上安装

2.2 关闭防火墙

primary服务器关闭防火墙:

standby服务器关闭防火墙

2.3 配置ssh互信

百度下“linux scp免密码”,随便找篇文章看下。

[[email protected] dbs]$ ssh-keygen -t rsa

[[email protected] dbs]$  scp ~/.ssh/id_rsa.pub [email protected]:/home/oracle/.ssh/authorized_keys

三、主库配置

1)enable forced logging:

SQL> ALTER DATABASE FORCE LOGGING;

查看是否已经是归档模式,如果是未归档模式,则将其修改成归档模式。

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;

3)配置standby logfile文件,当主库变成备库时,可以接收来自备库的日志。

alter database add standby logfile group 4 (‘/u01/app/oracle/oradata/orcl/redo_dg_021.log‘) size 50M;

alter database add standby logfile group 5 (‘/u01/app/oracle/oradata/orcl/redo_dg_022.log‘) size 50M;

alter database add standby logfile group 6 (‘/u01/app/oracle/oradata/orcl/redo_dg_023.log‘) size 50M;

alter database add standby logfile group 7 (‘/u01/app/oracle/oradata/orcl/redo_dg_024.log‘) size 50M;

3)配置主库的参数:这里有两种方式,一种是使用alter system 来修改参数,另外一种是生成静态参数文件之后修改参数;我采用的是后一种配置方式。

参数的配置参考Oracle Data Guard Concepts and Administration 11g Release 2 (11.2) E41134-03中3-3和3-4页

initorcl.ora已经有的参数,可以不用配置。

SQL> create pfile from spfile;

[[email protected] ~]$ cd $ORACLE_HOME/dbs

[[email protected] dbs]$ vim initorcl.ora

#primary

#*.db_name=‘orcl‘

*.db_unique_name=pri

*.LOG_ARCHIVE_CONFIG=‘DG_CONFIG=(pri,sty)‘

#*.control_files=‘/u01/app/oracle/oradata/orcl/control01.ctl‘,‘/u01/app/oracle/oradata/orcl/control02.ctl‘

*.LOG_ARCHIVE_DEST_1= ‘LOCATION=/u01/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pri‘

*.LOG_ARCHIVE_DEST_2= ‘SERVICE=sty ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sty‘

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.remote_login_passwordfile=‘EXCLUSIVE‘

*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

#standby role

*.FAL_SERVER=sty

*.DB_FILE_NAME_CONVERT=‘/u01/app/oracle/oradata/orcl‘,‘/u01/app/oracle/oradata/orcl‘

*.LOG_FILE_NAME_CONVERT= ‘/u01/app/oracle/oradata/orcl‘,‘/u01/app/oracle/oradata/orcl‘

*.STANDBY_FILE_MANAGEMENT=AUTO

SQL> shutdown immediate

SQL> create spfile from pfile;

4)主库上配置listener.ora 和tnsnames.ora

主库上的listener.ora :

[[email protected] admin]$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = ORCL)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = ORCL)

)

)

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.62.201)(PORT = 1521))

)

ADR_BASE_LISTENER = /u01/app/oracle

主库上的tnsnames.ora:

[[email protected] admin]$ cat tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

PRI =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.62.201)(PORT = 1521))

)

(CONNECT_DATA =

(SID = orcl)

)

)

STY =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.62.202)(PORT = 1521))

)

(CONNECT_DATA =

(SID = orcl)

)

)

修改完成之后要重启监听。

5)备份数据库和控制文件

[[email protected] admin]$ rman target sys/[email protected]

RMAN> backup database format ‘/u01/app/oracle/backup/full_db_%U‘;

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘/u01/app/oracle/backup/sty.ctl‘;

四、备库上的操作

1)将主库上的参数文件、密码文件拷贝到备库上,修改参数文件;

[[email protected] admin]$ cd $ORACLE_HOME/dbs

[[email protected] dbs]$ scp initorcl.ora orapworcl [email protected]:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/

修改参数文件:

vim /u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora

*.db_name=‘orcl‘

*.DB_UNIQUE_NAME=sty

*.control_files=‘/u01/app/oracle/oradata/orcl/control01.ctl‘,‘/u01/app/oracle/flash_recovery_area/orcl/control02.ctl‘

*.DB_FILE_NAME_CONVERT=‘/u01/app/oracle/oradata/orcl‘,‘/u01/app/oracle/oradata/orcl‘

*.LOG_FILE_NAME_CONVERT= ‘/u01/app/oracle/oradata/orcl‘,‘/u01/app/oracle/oradata/orcl‘

*.LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

*.LOG_ARCHIVE_DEST_1=‘LOCATION=/u01/app/oracle/arch  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sty‘

*.LOG_ARCHIVE_DEST_2=‘SERVICE=pri ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pri‘

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

*.STANDBY_FILE_MANAGEMENT=AUTO

*.FAL_SERVER=pri

标红的是修改的部分

密码文件说明:主库上有授权或者收回sysdba时,要更新备库上的密码文件。

2)将主库上的listener.ora 和tnsnames.ora复制到备库上,修改listener.ora文件

主库上执行:

[[email protected] admin]$ scp listener.ora tnsnames.ora [email protected]:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/

备库上执行:

[[email protected] ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/

[[email protected] admin]$ vim listener.ora

将host中的201 改成202,也就是将host改成备库机器上的IP,tnsnames.ora不用修改。

修改完成之后要重启监听

3)将备份复制到备库上

[[email protected] backup]$ scp /u01/app/oracle/backup/* [email protected]:/u01/app/oracle/backup

4)在备库上创建对应的文件夹

[[email protected] oracle]$ cd $ORACLE_BASE

[[email protected] oracle]$ ls

arch  backup  checkpoints  database  product

[[email protected] oracle]$ mkdir -p oradata/orcl

[[email protected] oracle]$ mkdir -p admin/orcl/adump

[[email protected] oracle]$ mkdir -p admin/orcl/dpdump

[[email protected] oracle]$ mkdir -p admin/orcl/pfile

5)启动备库到nomount模式

SQL>create spfile from pfile=‘/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora‘;

SQL> startup nomount;

6)在备库上使用RMAN恢复数据库

[[email protected] ~]$ rman target sys/[email protected]

RMAN> connect auxiliary /

run {

allocate auxiliary channel c1 device type disk;

allocate auxiliary channel c2 device type disk;

duplicate target database for standby nofilenamecheck dorecover;

release channel c1;

release channel c2;

}

虽然最后出现了这个问题,但备库还是可以打开的。

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of Duplicate Db command at 06/08/2016 17:38:36

RMAN-03015: error occurred in stored script Memory Script

RMAN-06053: unable to perform media recovery because of missing log

RMAN-06025: no backup of archived log for thread 1 with sequence 16 and starting SCN of 1010403 found to restore

RMAN-06025: no backup of archived log for thread 1 with sequence 15 and starting SCN of 1009794 found to restore

7)备库上添加standby logfile

备库上添加standby logfile,我做测试时,v$logfile视图里有standby logfile group4 至group 7,而/u01/app/oracle/oradata/orcl并没有这些文件,所以要先把这几组日志删除再重建:

SQL>alter database open;#未试过在mount状态创建standby日志

SQL> alter database drop logfile group 4;

SQL> alter database drop logfile group 5;

SQL> alter database drop logfile group 6;

SQL> alter database drop logfile group 7;

SQL>alter database add standby logfile group 4 (‘/u01/app/oracle/oradata/orcl/redo_dg_021.log‘) size 50M;

SQL>alter database add standby logfile group 5 (‘/u01/app/oracle/oradata/orcl/redo_dg_022.log‘) size 50M;

SQL>alter database add standby logfile group 6 (‘/u01/app/oracle/oradata/orcl/redo_dg_023.log‘) size 50M;

SQL>alter database add standby logfile group 7 (‘/u01/app/oracle/oradata/orcl/redo_dg_024.log‘) size 50M;

8)应用归档

--应用归档

SQL>shutdown immediate;

SQL>startup mount;

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

--退出归档

alter database recover managed standby database cancel;

9)查看状态

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

SEQUENCE# FIRST_TIME          NEXT_TIME      APPLIED

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

15 08-JUN-16          08-JUN-16      YES

16 08-JUN-16          08-JUN-16      YES

17 08-JUN-16          08-JUN-16      YES

18 08-JUN-16          08-JUN-16      YES

19 08-JUN-16          08-JUN-16      YES

20 08-JUN-16          08-JUN-16      YES

21 08-JUN-16          08-JUN-16      IN-MEMORY

说明DG已经搭建成功

注:如果备库处于open状态,告警日志中会出现:ORA-16058: 未装载备用数据库实例的告警信息。

时间: 2024-10-10 22:55:07

手把手教你搭建Oracle 11G dataguard的相关文章

手把手教你搭建Oracle Secure Global Desktop演示环境

你可以在这里找到原文. 前提条件 已经安装和配置好下列OS环境:- Oracle Linux 6.5 64bit- Hostname: sgd.example.com- IP: 192.168.56.110 已经配置好一个可用的Yum源. 本例使用了一个本地FTP(ftp://192.168.56.254/pub/iso)作为Yum源.而且,SGD的安装包已经下载好,重命名为SGD5.2forLin.zip,同时上传到这个FTP上(ftp://192.168.56.254/pub/SGD5.2f

ORACLE 11G DataGuard的一些高级管理案例研究

搭建完了ORACLE 11G dataguard后,也做了角色切换的实验,有switchover已经failover,感觉受益颇多,而后继续研究了下dataguard的一些高级管理功能,所谓冰山一角,ORACLE果然博大精深,总结记录如下:1,ORACLE 11G dataguard的高级管理1.1.READ ONLY/WRITE模式打开物理STANDBY一般standby都是可以设置为mount状态的,于物理standby 可以有效分担primary 数据库压力,提升资源利用,实际上说的就是这

手把手教你搭建LyncServer2013之准备篇(一)

这次实验的拓扑结构如下: 首先准备AD域,把DC这台服务器提升为域服务器,在这里,域服务器的安装就不上图了,DNS会随域控制器的安装一起安装,这次安装的Lync版本为Lync Server 2013,规划的Lync内部WEB地址和外部WEB地址一样,都为pool01.iSusan.cn,而两台Lync前端做为DNS轮询负载,所以在DNS下需要加入如下A记录: 192.168.137.12 pool01.iSusan.cn 192.168.137.13 pool01.iSusan.cn 192.1

手把手教你搭建LyncServer2013之CA准备(二)

首先进行CA服务的安装,安装完后在组策略中配置计算机证书自动申请 到此,证书服务器已经安装完成,下一步开始配置计算机自动证书申请 手把手教你搭建LyncServer2013之CA准备(二),布布扣,bubuko.com

手把手教你搭建LyncServer2013之Lync后端存储准备(三)

这次实验的Lync后端存储安装的是SQL Server 2012,配置了高可用,两台做Mirror,一台做见证服务器,实现故障的自动转移,SQL Server的安装需要.net Framwork 3.5的支持,所以在安装SQL之前,我们先来安装.net Framework 3.5 安装完.net Framework 3.5后,我们开始第一台SQL Server 2012的安装 到此第一台Lync后端存储服务器已经安装好,因为我这次实验中需要安装监控和存档角色,所以在安装数据库的时候选择了三个功能

手把手教你搭建LyncServer2013之准备Active Directry(四)

进行Lync安装之前,我们需要对域架构进行扩展,下面在LyncFE01上插入Lync Server 2013光盘 前端服务器需要安装的功能组件: Add-WindowsFeature RSAT-ADDS,Web-Server,Web-Static-Content,Web-Default-Doc,Web-Http-Errors,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Http-Logging,Web-Log-Librar

Linux Oracle 11g dataguard物理standby 配置过程

这两天研究了下oracle 11g dataguard 物理standby 功能,总体来说这个功能满足公司需求,好了,不多说了,以下是详细的配置过程. 数据库的安装可以参考之前写的六步搞定Linux Oracle 11gR2 配置安装 注意:分别在主库和备库都安装上oracle软件,不装数据库. 主库: IP:192.168.77.5 主机名:nod1 ORACLE_SID=test ORACLE_BASE=/oracle/app/oracle ORACLE_HOME=/oracle/app/o

Oracle 11g dataguard三种模式以及实时查询(Real-time query)功能设置

之前我们讨论过<Linux Oracle 11g dataguard物理standby 配置过程>, 但是在实际过程中会遇到不同的问题,首先我们讨论下ORACLE DATAGUARD的三种模式, 保护最大化:这种模式的配置可以保证主库和备库的同步,任何情况下主库的损毁都不会导致已提交数据的丢失.如果主库和备库之间的网络出现问题,或者备库本身出现问题,都会导致主库停止数据处理. 可用最大化:这种模式和上面一种类似,也是会保证主库和备库的同步,区别在于,当网络或备库不可用时,主库仍然可以继续处理.

手把手教你搭建LyncServer2013之发布Office Web App服务器(十二)

上一篇中,我们已经完成了Office Web App服务器的部署,在组织内部已经实现了PPT和OneNote的共享,但是我们仍然与外部用户无法实现PPT的共享,只能实现简单的IM和会议,那么要实现在外部共享PPT和OneNote,我们需要把我们的Office Web App服务器发布到公网,但是由于我现在只有一个公网IP地址,因我们发布反向代理服务器的时候已经占用了公网的IP地址的443端口,而我们的Office  Web App服务器也需要用到公网的443端口,所以我们今天再次用到微软的TMG