创建之前要对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. PID204特种部队

    特种部队   题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库.当他们到达 ...

  2. [App Store Connect帮助]三、管理 App 和版本(2.5)输入 App 信息:本地化 App Store 信息

    在添加 App 至您的帐户之后,您可以在“App 信息”页面添加语言并输入本地化元数据.若要查看受支持的语言列表,请参见 App Store 本地化.若要了解您可以本地化的属性,请参见必填项.可本地化 ...

  3. HttpPostedFileBase 基类

    public void uploadDocMentSave(string Type)        { if (Request.Files.Count > 0)            { Htt ...

  4. 【洛谷2904/BZOJ1617】[USACO08MAR]跨河River Crossing(动态规划)

    题目:洛谷2904 分析: 裸dp-- dp方程也不难想: \(dp[i]\)表示运\(i\)头牛需要的最短时间,\(sum[i]\)表示一次运\(i\)头牛(往返)所需的时间,则 \[dp[i]=m ...

  5. cocos2dx实现单机版三国杀(一)

    首先需要一个UI交互类 GameUI   -layer 一个游戏驱动类,负责游戏逻辑的循环 暂时定为GameScene- scene GameScene obj 调用update 更新游戏,addch ...

  6. Java 开源博客 Solo 1.3.0 发布 - Docker 支持

    Solo 1.3.0 正式发布了,感谢一直以来关注 B3log 开源的朋友! 可以通过一个命令启动(不需要安装数据库.部署容器),也可以通过 war 方式部署容器,连接 MySQL.这应该是史上最容易 ...

  7. TCP的send与recv函数小结

    Send函数: 在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数 ...

  8. python 分割文件、组合文件

    import glob big_file = open('index.sql', 'rb') bak_file = 'index_bak' i = 1 while True: chunk = big_ ...

  9. dos命令在vba中应用

    正常情况下想要遍历文件夹和子文件夹,可以采用递归的方式 Sub ListFilesTest() With Application.FileDialog(msoFileDialogFolderPicke ...

  10. docker安装后出现Cannot connect to the Docker daemon

    启动docker service docker start docker安装后出现Cannot connect to the Docker daemon You need to add user in ...