生产库上在线不停机搭建dataguard

database

此方案适合于生产运营中的数据库,DB服务器停机时间非常苛刻,或无法停机维护的情况下,如支付,电商等业务,可通过该方案在线部署Dataguard,对客户系统无任何影响。

      此方案适合于生产运营中的数据库,DB服务器停机时间非常苛刻,或无法停机维护的情况下,如支付,电商等业务,可通过该方案在线部署Dataguard,对客户系统无任何影响。

一、基础信息

操作系统:windows2008

数据库:11.2.0.3

配置信息:

说明

主机名

IP地址

db_name

sid

DB_UNIQUE_NAME

Service_name

主库

dg1

192.168.16.14

orcl

orcl

orcl

orcl

备库

dg2

192.168.16.15

orcl

orcl

orclbak

orclbak

二、准备工作

按照要求创建相应的主数据库和备用数据库,并删除备用数据库的数据文件、控制文件,两个数据库的所有路径需要一致;

三、搭建数据库

主库的操作: 

1.确认主库参数

SQL> select name,open_mode,database_role,log_mode,force_logging from v$database;

NAME      OPEN_MODE            DATABASE_ROLE    LOG_MODE     FOR

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

ORCL      READ WRITE           PRIMARY          ARCHIVELOG   YES

SQL> show parameter name

NAME                                 TYPE        VALUE

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

db_file_name_convert                 string

db_name                              string      orcl

db_unique_name                       string      orcl

global_names                         boolean     FALSE

instance_name                        string      orcl

lock_name_space                      string

log_file_name_convert                string

processor_group_name                 string

service_names                        string      orcl

2.设置数据库的归档模式

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            E:u01fast_recovery_areaorcl

最早的联机日志序列     833

下一个存档日志序列   835

当前日志序列           835

归档模式的设置:

1、shutdown abort;

2、alter database mount;

3、alter database archive log;

4、alter database open;

3.开启force logging

SQL> alter database force logging;

SQL> select name,DB_UNIQUE_NAME,database_role,log_mode,force_logging from v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    LOG_MODE     FOR

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

ORCL      orcl                           PRIMARY          ARCHIVELOG   YES

4.主库配置监听

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = CLRExtProc)

      (ORACLE_HOME = E:u01product11.2.0dbhome_1)

      (PROGRAM = extproc)

      (ENVS = "EXTPROC_DLLS=ONLY:E:u01product11.2.0dbhome_1inoraclr11.dll")

    )

  )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-QS00S09CJ12)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

ADR_BASE_LISTENER = E:u01

5.配置主库的TNSNAMES.ORA并和密码文件一起传到备库

# tnsnames.ora Network Configuration File: E:u01product11.2.0dbhome_1NETWORKADMIN

nsnames.ora

# Generated by Oracle configuration tools.

ORCL=

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SID = ORCL)

      (UR=A)

      )

  )

ORCLBAK =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orclbak)

      (UR=A)    --这里记得加这个,否无法连接nomount状态下备库

    )

  )

传输监听文件到备库:

6.修改主库pfile参数

--前提是采用spfile启动,并且业务不能停,可用下列命令动态设置:

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG="DG_CONFIG=(orcl,orclbak)"   ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= "LOCATION=E:u01fast_recovery_areaorcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl" 

ALTER SYSTEM SET LOG_ARCHIVE_DEST_2="SERVICE=orclbak  LGWR ASYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclbak" 

ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1="ENABLE";                     

ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2="DEFER";   --这里先设置关闭                                                                                                                                          

ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT="AUTO";            

ALTER SYSTEM SET FAL_SERVER=orclbak;   

ALTER SYSTEM SET FAL_CLIENT=orcl;    

下面是可选,如果路相同,忽略下面操作:  

ALTER SYSTEM SET DB_FILE_NAME_CONVERT="E:u01oradataorcl","E:u01oradataorcl" scope=spfile;

ALTER SYSTEM SET LOG_FILE_NAME_CONVERT="E:u01oradataorcl","E:u01oradataorcl" scope=spfile;

 

7.全备主库,并传输备份集到备库的相同位置

run

{

 allocate channel c0 device type disk;

 allocate channel c1 device type disk;

 CONFIGURE CONTROLFILE AUTOBACKUP ON;

 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO "e:orabakman/%F";

 backup  database format "e:orabakora11g_full_db_%d_%T_%u.bak";

 BACKUP ARCHIVELOG ALL FORMAT "e:orabakora11g_arc_%s_%p_%t.bak";

 }   

8.修改备库参数并将备库启动至nomount状态(参考主库进行,主要是service_name要反过来)

DB_UNIQUE_NAME=orclbak

LOG_ARCHIVE_CONFIG="DG_CONFIG=(orcl,orclbak)" 

LOG_ARCHIVE_DEST_1= "LOCATION=E:u01fast_recovery_areaorcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclbak" 

LOG_ARCHIVE_DEST_2= "SERVICE=orcl  LGWR ASYNC affirm VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl" 

LOG_ARCHIVE_DEST_STATE_1=ENABLE 

LOG_ARCHIVE_DEST_STATE_2=ENABLE 

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc 

FAL_SERVER=orcl

FAL_CLIENT=orclbak

STANDBY_FILE_MANAGEMENT=AUTO 

 9.启动备库监听

# listener.ora Network Configuration File: E:u01product11.2.0dbhome_1

etworkadminlistener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = CLRExtProc)

      (ORACLE_HOME = E:u01product11.2.0dbhome_1)

      (PROGRAM = extproc)

      (ENVS = "EXTPROC_DLLS=ONLY:E:u01product11.2.0dbhome_1inoraclr11.dll")

    )

  )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-4GH7UKQEEOC)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

SID_LIST_LISTENER =

 (SID_LIST =

   (SID_DESC =

     (GLOBAL_DBNAME = orcl)

     (ORACLE_HOME = E:u01product11.2.0dbhome_1)

     (SID_NAME = orcl)

   )

 )

ADR_BASE_LISTENER = E:u01

10.进行备库的恢复

C:UsersAdministrator>rman target /

恢复管理器: Release 11.2.0.3.0 - Production on 星期五 2月 26 17:35:52 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: ORCL (DBID=1389423916)

RMAN>  connect  auxiliary sys/*******@orclbak

已连接到辅助数据库: ORCL (未装载)

开始复制数据库: 

RMAN> duplicate target database for standby nofilenamecheck;

启动 Duplicate Db 于 26-2月 -16

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: SID=2091 设备类型=DISK

内存脚本的内容:

{

   restore clone standby controlfile;

}

正在执行内存脚本

启动 restore 于 26-2月 -16

使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集

通道 ORA_AUX_DISK_1: 正在还原控制文件

通道 ORA_AUX_DISK_1: 正在读取备份片段 D:ORABAKC-1389423916-20160226-00

通道 ORA_AUX_DISK_1: 段句柄 = D:ORABAKC-1389423916-20160226-00 标记 = TAG20160226T140701

通道 ORA_AUX_DISK_1: 已还原备份片段 1

通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:04

输出文件名=E:U01ORADATAORCLCONTROL01.CTL

完成 restore 于 26-2月 -16

内存脚本的内容:

{

   sql clone "alter database mount standby database";

}

正在执行内存脚本

sql 语句: alter database mount standby database

内存脚本的内容:

{

   set newname for tempfile  1 to

 "E:U01ORADATAORCLTEMP01.DBF";

   switch clone tempfile all;

   set newname for datafile  1 to

 "E:U01ORADATAORCLSYSTEM01.DBF";

   set newname for datafile  2 to

 "E:U01ORADATAORCLSYSAUX01.DBF";

   set newname for datafile  3 to

 "E:U01ORADATAORCLUNDOTBS01.DBF";

   set newname for datafile  4 to

 "E:U01ORADATAORCLUSERS01.DBF";

   set newname for datafile  5 to

 "E:U01ORADATAORCLGIS01.DBF";

   set newname for datafile  6 to

 "E:U01ORADATAORCLGIS02.DBF";

   set newname for datafile  7 to

 "E:U01ORADATAORCLGIS03.DBF";

   set newname for datafile  8 to

 "E:U01ORADATAORCLGIS04.DBF";

   set newname for datafile  9 to

 "E:U01ORADATAORCLGIS05.DBF";

   set newname for datafile  10 to

 "E:U01ORADATAORCLGIS06.DBF";

   set newname for datafile  11 to

 "E:U01ORADATAORCLGIS07.DBF";

   set newname for datafile  12 to

 "E:U01ORADATAORCLGIS08.DBF";

   set newname for datafile  13 to

 "E:U01ORADATAORCLGIS09.DBF";

   set newname for datafile  14 to

 "E:U01ORADATAORCLGIS10.DBF";

   restore

   clone database

   ;

}

正在执行内存脚本

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为 E:U01ORADATAORCLTEMP01.DBF

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 26-2月 -16

使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集

通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件

通道 ORA_AUX_DISK_1: 将数据文件 00001 还原到 E:U01ORADATAORCLSYSTEM01.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00002 还原到 E:U01ORADATAORCLSYSAUX01.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00006 还原到 E:U01ORADATAORCLGIS02.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00008 还原到 E:U01ORADATAORCLGIS04.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00010 还原到 E:U01ORADATAORCLGIS06.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00012 还原到 E:U01ORADATAORCLGIS08.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00014 还原到 E:U01ORADATAORCLGIS10.DBF

通道 ORA_AUX_DISK_1: 正在读取备份片段 D:ORABAKORCL_FULL_DB_ORCL_20160226_39QUSTI8.BAK

通道 ORA_AUX_DISK_1: 段句柄 = D:ORABAKORCL_FULL_DB_ORCL_20160226_39QUSTI8.BAK 标记 = TAG20160226T105816

通道 ORA_AUX_DISK_1: 已还原备份片段 1

通道 ORA_AUX_DISK_1: 还原完成, 用时: 02:08:38

通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集

通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件

通道 ORA_AUX_DISK_1: 将数据文件 00003 还原到 E:U01ORADATAORCLUNDOTBS01.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00004 还原到 E:U01ORADATAORCLUSERS01.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00005 还原到 E:U01ORADATAORCLGIS01.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00007 还原到 E:U01ORADATAORCLGIS03.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00009 还原到 E:U01ORADATAORCLGIS05.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00011 还原到 E:U01ORADATAORCLGIS07.DBF

通道 ORA_AUX_DISK_1: 将数据文件 00013 还原到 E:U01ORADATAORCLGIS09.DBF

通道 ORA_AUX_DISK_1: 正在读取备份片段 D:ORABAKORCL_FULL_DB_ORCL_20160226_38QUSTI8.BAK

通道 ORA_AUX_DISK_1: 段句柄 = D:ORABAKORCL_FULL_DB_ORCL_20160226_38QUSTI8.BAK 标记 = TAG20160226T105816

通道 ORA_AUX_DISK_1: 已还原备份片段 1

通道 ORA_AUX_DISK_1: 还原完成, 用时: 02:36:38

完成 restore 于 26-2月 -16

内存脚本的内容:

{

   switch clone datafile all;

}

正在执行内存脚本

数据文件 1 已转换成数据文件副本

输入数据文件副本 RECID=2 STAMP=904861333 文件名=E:U01ORADATAORCLSYSTEM01.DBF

数据文件 2 已转换成数据文件副本

输入数据文件副本 RECID=3 STAMP=904861334 文件名=E:U01ORADATAORCLSYSAUX01.DBF

数据文件 3 已转换成数据文件副本

输入数据文件副本 RECID=4 STAMP=904861334 文件名=E:U01ORADATAORCLUNDOTBS01.DBF

数据文件 4 已转换成数据文件副本

输入数据文件副本 RECID=5 STAMP=904861334 文件名=E:U01ORADATAORCLUSERS01.DBF

数据文件 5 已转换成数据文件副本

输入数据文件副本 RECID=6 STAMP=904861334 文件名=E:U01ORADATAORCLGIS01.DBF

数据文件 6 已转换成数据文件副本

输入数据文件副本 RECID=7 STAMP=904861334 文件名=E:U01ORADATAORCLGIS02.DBF

数据文件 7 已转换成数据文件副本

输入数据文件副本 RECID=8 STAMP=904861334 文件名=E:U01ORADATAORCLGIS03.DBF

数据文件 8 已转换成数据文件副本

输入数据文件副本 RECID=9 STAMP=904861334 文件名=E:U01ORADATAORCLGIS04.DBF

数据文件 9 已转换成数据文件副本

输入数据文件副本 RECID=10 STAMP=904861335 文件名=E:U01ORADATAORCLGIS05.DBF

数据文件 10 已转换成数据文件副本

输入数据文件副本 RECID=11 STAMP=904861335 文件名=E:U01ORADATAORCLGIS06.DBF

数据文件 11 已转换成数据文件副本

输入数据文件副本 RECID=12 STAMP=904861335 文件名=E:U01ORADATAORCLGIS07.DBF

数据文件 12 已转换成数据文件副本

输入数据文件副本 RECID=13 STAMP=904861335 文件名=E:U01ORADATAORCLGIS08.DBF

数据文件 13 已转换成数据文件副本

输入数据文件副本 RECID=14 STAMP=904861335 文件名=E:U01ORADATAORCLGIS09.DBF

数据文件 14 已转换成数据文件副本

输入数据文件副本 RECID=15 STAMP=904861335 文件名=E:U01ORADATAORCLGIS10.DBF

完成 Duplicate Db 于 26-2月 -16

 

RMAN>

12.将主库的LOG_ARCHIVE_DEST_STATE_2设置为ENABLE

ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2="ENABLE";

 

13.添加standby redo log --如本身主库已建立standby redo log,此步骤可省去

SQL> select member from v$logfile;

#主库增加 STANDBY LOGFILE

ALTER DATABASE ADD STANDBY LOGFILE group 4("E:u01oradatastandby_logslog1.rdo") SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE group 5("E:u01oradatastandby_logslog2.rdo") SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE group 6("E:u01oradatastandby_logslog3.rdo") SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE group 7("E:u01oradatastandby_logslog4.rdo") SIZE 200M;

#备库增加STANDBY LOGFILE

SQL> select member from v$logfile; 

ALTER DATABASE ADD STANDBY LOGFILE group 4("E:u01oradatastandby_logslog1.rdo") SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE group 5("E:u01oradatastandby_logslog2.rdo") SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE group 6("E:u01oradatastandby_logslog3.rdo") SIZE 200M;

ALTER DATABASE ADD STANDBY LOGFILE group 7("E:u01oradatastandby_logslog4.rdo") SIZE 200M;

14.最后在备库开启active dataguard

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

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  

SQL> ALTER DATABASE OPEN;

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

©版权声明:本文为天凯DBS的原创文章,转载请附上原文出处链接及本声明,否则将追究法律责任。

更多DBA案例请关注访问天凯DBS!

以上是 生产库上在线不停机搭建dataguard 的全部内容, 来源链接: utcz.com/z/531567.html

回到顶部