创建之前要对DG的环境有一个总体的规划和了解。

                                                                 规划

IP

192.168.3.161

192.168.3.162

SID

ITID

ITID

DB_UNIQUE_NAME

Itid1

Itid2

DATA BASE SOFTWARE

/u01/app/oracle/product/11.2.0/dbhome_1

/u01/app/oracle/product/11.2.0/dbhome_1

DATA FILE  

/oracle_asm/standby/itid1/datafile/itid

/oracle_asm/standby/itid2/datafile/itid

ARCHIVE LOG

/oracle_asm/standby/itid1/arch

/oracle_asm/standby/itid2/arch

DEBUG LOG

Log File

/oracle_asm/standby/itid1/datafile/itid

/oracle_asm/standby/itid2/datafile/itid

上面就是我准备设置DG的整个环境规划。其中Debug Log这里是空,因为在规划阶段我想Debug Log有很多种比如 adump bdump cdump ddump.所以索性先空着不管。其实真正搭建DG的时候这一步也确实可以不用管,因为DG一般是在两个一样的机器上装的,DEBUG LOG的目录如果用默认,那么都会是一样的。接下来,开始搭建DG.

1. 创建单实例DB。

这一步没什么好讲的,就是安装oracle创建一个DB。当然也可以是RAC的,不过为了是为简便采用了单实例DB。

注意:如果你是在RAC环境中创建单实例DB。 Cluster一定是要启动着的。否则会报错。我开始用crsctl stop cluster –all吧cluster关闭。结果在用DBCA创建DB的时候遇到错误说:

prcr-1055 cluster membership check failed for node

所以一定要启动cluster再创建. crsctl start cluster –all

2. 准备primary database

Enable Forced Logging

Force logging主要是避免有些操作不写redo log。这样在standby端就无法应用。使用下面的命令来查看是否是force logging模式 select force_logging from v$database; 如果不是则用下面的SQL来激活force logging。 alter database force logging;

Configure Redo Transport Authentication

Oracle DG使用oracle net session来传输redo数据和控制信息。这些传输redo的session通过SSL或者password file来认证。这里所说的password file就是存储sys的password file.这里我们只关注使用password file的验证方式。那么这一步我们要做什么呢? 什么也不需要。只要保证password file存在并且在后面的步骤中把这个password file copy 到其它的standby database中去就可以了。Oracle DG要求 DG中所有的数据库的sys都使用相同的password。

Configure the Primary Database to Receive Redo Data

这一步可选。因为这一步是配置当前的primary数据库从其它的standby数据库接受redo log。很明显这是为了切换后当前数据库可能变成standby而准备的。

  • 配置primary的standby redo log
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid1/standby_redo/slog1.rdo') size 50m;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid1/standby_redo/slog2.rdo') size 50m;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid1/standby_redo/slog3.rdo') size 50m;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid1/standby_redo/slog4.rdo') size 50m;

Database altered
  • 设置log_archive_dest_3参数
log_archive_dest_3='LOCATION=/oracle_asm/standby/itid1/arch_from_standbyredo VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'

这一步是为了在切换过来后,standby数据库可以从standby redo log中提取log然后归档。

要注意这里涉及到修改参数文件以及spfile生成pfile和pifle生成spfile的问题。修改这个参数需要在pfile中手动改,我们要先生成pfile然后修改pfile然后用pfile生成spfile。

  • 设置primary database的initialization parameter

首先创建pfile。因为我们要编辑initialization parameter需要pfile

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

需要编辑的参数如下

*.db_name='itid'
*.db_unique_name='itid1'
*.log_archive_config='DG_CONFIG=(itid1,itid2)'
*.control_files='/oracle_asm/standby/itid1/datafile/itid/control01.ctl','/oracle_asm/standby/itid1/datafile/itid/control02.ctl'
*.log_archive_dest_1='LOCATION=/oracle_asm/standby/itid1/arch'
*.LOG_ARCHIVE_DEST_2='SERVICE=itid2 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=itid2'
*.LOG_ARCHIVE_DEST_3='LOCATION=/oracle_asm/standby/itid1/standby_redo VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'
*.remote_login_passwordfile='EXCLUSIVE' *。FAL_SERVER=itid2
*。DB_FILE_NAME_CONVERT='/oracle_asm/standby/itid2/datafile/itid','/oracle_asm/standby/itid1/datafile/itid'
*。LOG_FILE_NAME_CONVERT='/oracle_asm/standby/itid2/datafile/itid','/oracle_asm/standby/itid1/datafile/itid'
*。STANDBY_FILE_MANAGEMENT=AUTO

主要看一下以下参数

Log_archive_config控制从远端数据库接受或者发送redo。详细了解可以查阅文档。

Log_archive_dest_1很简单是本地的archive路径。

Log_archive_dest_2是配置通过异步的模式发送redo给itid2。发送给itid2以后,如果itid2有standby redo,就放在standby redo中。

Log_archive_dest_3其实是当切换后本地变成standby后用来把standby redo中的文件提取到archive用的。

Enable archiving

这一部不用详细描述。如果需要知道可以查看官方文档。

3. Create a Backup Copy of the Primary Database Datafiles Primary

Oracle推荐的是使用rman。不过这种小规模的偶然性备份用用户管理的方式更简便。而且更清晰。我们采用用户管理的热备份方式。

SQL> select TABLESPACE_NAME,FILE_NAME from dba_data_files order by TABLESPACE_NAME;

TABLESPA FILE_NAME
-------- ------------------------------------------------------------------------------------
SYSAUX /oracle_asm/standby/itid1/datafile/itid/sysaux01.dbf
SYSTEM /oracle_asm/standby/itid1/datafile/itid/system01.dbf
UNDOTBS1 /oracle_asm/standby/itid1/datafile/itid/undotbs01.dbf
USERS /oracle_asm/standby/itid1/datafile/itid/users01.dbf SQL> alter tablespace system begin backup; Tablespace altered. SQL> host cp /oracle_asm/standby/itid1/datafile/itid/system01.dbf /oracle_asm/standby/itid2/datafile/itid/system01.dbf SQL> alter tablespace system end backup; Tablespace altered. SQL> alter tablespace sysaux begin backup; Tablespace altered. SQL> host cp /oracle_asm/standby/itid1/datafile/itid/sysaux01.dbf /oracle_asm/standby/itid2/datafile/itid/sysaux01.dbf SQL> alter tablespace sysaux end backup; Tablespace altered. SQL> alter tablespace UNDOTBS1 begin backup; Tablespace altered. SQL> host cp /oracle_asm/standby/itid1/datafile/itid/undotbs01.dbf /oracle_asm/standby/itid2/datafile/itid/undotbs01.dbf SQL> alter tablespace UNDOTBS1 end backup; Tablespace altered. SQL> alter tablespace USERS begin backup; Tablespace altered. SQL> host cp /oracle_asm/standby/itid1/datafile/itid/users01.dbf /oracle_asm/standby/itid2/datafile/itid/users01.dbf SQL> alter tablespace USERS end backup; Tablespace altered.

4 从primary数据库为standby数据库创建一个control file

SQL> alter database create standby controlfile as '/oracle_asm/standby/itid2/datafile/itid/control01.ctl';

Database altered.

SQL> alter database create standby controlfile as '/oracle_asm/standby/itid2/datafile/itid/control02.ctl';

Database altered.

注意这种方式创建controlfile 一定是要在mount状态下,否则control file可能会出现scn不一致的情况。 当然你可以只创建一个contrl file然后ocpy到不同的地方。

5 为standby数据库创建parameter file

下列参数要注意

*.control_files='/oracle_asm/standby/itid2/datafile/itid/control01.ctl','/oracle_asm/standby/itid2/datafile/itid/control02.ctl'
*.DB_FILE_NAME_CONVERT='/oracle_asm/standby/itid1/datafile/itid','/oracle_asm/standby/itid2/datafile/itid'
*.db_unique_name='itid2'
*.FAL_SERVER='itid1'
*.log_archive_dest_1='LOCATION=/oracle_asm/standby/itid2/arch'
*.LOG_ARCHIVE_DEST_2='SERVICE=itid1 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=itid1'
*.LOG_ARCHIVE_DEST_3='LOCATION=/oracle_asm/standby/itid2/standby_redo VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'
*.LOG_FILE_NAME_CONVERT='/oracle_asm/standby/itid1/datafile/itid','/oracle_asm/standby/itid2/datafile/itid'

6 把刚才创建的文件copy到standby数据库

包括 数据文件 控制文件 参数文件

Set Up the Environment to Support the Standby Database Standby

copy密码文件

要和足以的是如果sysdba或者sysoper权限被赋予或者回收,这个文件也要重新copy。

为standby和primary配置listener

在primary这边我用netca创建了一个监听在1528的listener LISTENER_ITID1。因为不是默认端口,要手动注册。过程非常简单。先把listener.ora中关于这个listener的定义copy到tnsname.ora中。这样oracle就能够认识LISTENER_ITID1。然后在sqlplus中运行以下命令:

SQL> alter system set local_listener='LISTENER_ITID1' scope=both;

System altered.

SQL> alter system register;

System altered.

SQL> alter system register;

System altered.

在standby端也是一样。 但是要注意的是我们有一个参数

创建oracle net service name

使用netca创建。在primary和standby上都做。简单的说就是在tnsname.ora中配置让itid1认识 itid2. Itid2认识itid1

创建spfile

SQL> create spfile from pfile='pfilefromracnode1.ora';

File created.

8 启动standby

首先启动到mount

startup mount

在standby端创建sandby redolog group

ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid2/standby_redo/slog1.rdo') size 50m;
ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid2/standby_redo/slog2.rdo') size 50m;
ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid2/standby_redo/slog3.rdo') size 50m;
ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid2/standby_redo/slog4.rdo') size 50m;
log_archive_dest_3='LOCATION=/oracle_asm/standby/itid2/arch_from_standbyredo VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'

其中log archive这个参数是用来从standby redo中提取redo 放入archive。

创建online redo  

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid2/datafile/log1.rdo') size 50m;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid2/datafile/log2.rdo') size 50m;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle_asm/standby/itid2/datafile/log3.rdo') size 50m;

Database altered.

让standby 开动redo apply

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

Oracle_Data_Gard Create a physical standby database的更多相关文章

  1. 【原】Configuring Oracle Data Guard In Physical Standby Database

    作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...

  2. Physical Standby Database Failover

    1.物理standby failover 切换 故障转移时在一些糟糕的事情发生时执行的计划外事件,需要将生产库移动到DR站点.有意思的是,这时候人们通常忙来忙去,试图弄明白发生了什么,需要做些什么才能 ...

  3. Flashing Back a Failed Primary Database into a Physical Standby Database(闪回FAILOVER失败的物理备库)

    文档操作依据来自官方网址:https://docs.oracle.com/cd/E11882_01/server.112/e41134/scenarios.htm#SBYDB4888 闪回FAILOV ...

  4. Creating a Physical Standby Database 11g

    1.Environment Item Primary database standby database Platform Redhat 5.4 Redhat 5.4 Hostname gc1 gc2 ...

  5. 转 Logs are not shipped to the physical standby database

    http://www.oracle-ckpt.com/dataguard_troubleshoot_snapper/ ######sample primay scripts: spool dg_Pri ...

  6. 使用RMAN DUPLICATE...FROM ACTIVE DATABASE创建物理standby database

    Applies to: Oracle Server - Enterprise Edition - Version 11.1.0.6 to 11.2.0.4 [Release 11.1 to 11.2] ...

  7. duplicate命令创建physical standby数据库报RMAN-03015 ORA-17628

    The following error is reported trying to create a Physical Standby database using "duplicate f ...

  8. 聊聊Oracle 11g的Snapshot Standby Database(下)

    3.Snapshot Standby行为研究 下面我们分析一下Snapshot Standby的工作性质和行为性质.我们在主库方向研究当前状态. --主库日志情况 SQL> select gro ...

  9. Creating a Physical Standby from Primary on Version 12c (Doc ID 1570958.1)

    Creating a Physical Standby from Primary on Version 12c (Doc ID 1570958.1) APPLIES TO: Oracle Databa ...

随机推荐

  1. [App Store Connect帮助]三、管理 App 和版本(2.2)输入 App 信息:设置 App 分级

    您必须设置 App 分级,这是一项平台版本信息属性,用于在 App Store 上实施家长控制.App Store Connect 提供了一份内容描述列表,通过该列表,您可以确定相应内容在您 App ...

  2. [Swift通天遁地]三、手势与图表-(5)创建带有标题、图例、坐标轴的柱形图表

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. Vue解决移动端localhost无数据问题

    正常web端调用后台接口时使用localhost或者ip都能访问后台数据,但是在移动端上使用localhost却无法访问后台数据 这时候需要把localhost改成ip就可以在移动端上访问后台数据了

  4. 聪明的kk --- 搜索超时

    二话没说上去搜索 , 果不其然 华丽超时 . #include<stdio.h> #include<string.h> #include<math.h> #incl ...

  5. [转]linux之patch命令

    转自:http://blog.chinaunix.net/uid-9525959-id-2001542.html patch [选项] [原始文件 [补丁文件]] [功能] 给文件1应用补丁文件变成另 ...

  6. 【PostgreSQL-9.6.3】触发器实例

    1. 创建一个触发器,表中的行在任何时候被插入或更新时,当前用户名和时间也会被标记在该行中.并且它会检查雇员的姓名以及薪水. --创建测试表 CREATE TABLE emp ( empname te ...

  7. [Windows Server 2008] 查看ASP.net详细错误信息

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:查看IIS ...

  8. JS监听事件错误:Uncaught TypeError: xx(函数名)is not a function at HTMLInputElement.onclick

    事件监听一直出错,提示已定义的函数名不是一个函数,折腾了好久才想到,原来是函数名和JS内部关键字重名造成的. 以前也遇到过这种情况,但因为发生的概率比较小,就没太在意,但是这次感觉这方面确实需要注意, ...

  9. 【YOLO】只检测人

    一.修改源代码 cfg/coco.data classes= #修改成1 train = /home/pjreddie/data/coco/trainvalno5k.txt valid = coco_ ...

  10. C# 调用win32API 获取进程句柄 有毛用???

    private void button2_Click(object sender, EventArgs e) { Process[] ProceddingCon = Process.GetProces ...