11G DG搭建--rman方式

DG创建

 

环境

这次创建DG的环境是

Database11.2.0.3

主备库的oracle软件安装路径都在/u01/app/oracle下面。

主库IP地址:20.4.1.81

备库IP地址:20.4.1.79

 

 

准备TNS

在主库上编辑tns文件,然后拷贝到备库上。

[oracle@2F ~]$ cat /u01/app/oracle/product/11.2.0/db/network/admin/tnsnames.ora

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

# Generated by Oracle configuration tools.

 

ORCL =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )

 

#连接到主库的tns

zd_pri =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = pri)

    )

  )

 

#连接到备库的tns

zd_std =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = std)

    )

  )

配置好之后,将该tnsname.ora拷贝的standby库上。

验证一下tnsping,和使用sqlplus登陆一下,连接是通的

[oracle@2F ~]$ tnsping zd_pri

 

TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 08-MAR-2014 14:33:21

 

Copyright (c) 1997, 2011, Oracle.  All rights reserved.

 

Used parameter files:

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 20.4.1.81)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = pri)))

OK (0 msec)

[oracle@2F ~]$ sqlplus system/oracle@zd_pri

 

SQL*Plus: Release 11.2.0.3.0 Production on Sat Mar 8 14:33:35 2014

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL>

 

配置主备库的listener.ora文件(如果不做switch over就不需要做),添加SID_LIST

SID_LIST_LISTENER=

  (SID_LIST =

         (SID_DESC=

                   (GLOBAL_DBNAME=pri)

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

                   (SID_NAME=orcl)

         )

  )

添加这个的时候,需要注意的是SID_LIST_LISTENER必须定格写,不然会报错。

在备库的时候也需要添加如下内容

 

SID_LIST_LISTENER=

  (SID_LIST =

         (SID_DESC=

                   (GLOBAL_DBNAME=std)

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

                   (SID_NAME=orcl)

         )

  )

 

修改主库的相关项:

alter database force logging;

alter database archivelog;

 

[oracle@2F ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on Sat Mar 8 13:10:11 2014

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> archive log list

Database log mode        No Archive Mode

Automatic archival         Disabled

Archive destination        USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     6

Current log sequence             8

SQL> select force_logging from v$database;

 

FOR

---

NO

 

SQL> alter database force logging;

 

Database altered.

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

 

Total System Global Area 4.0486E+10 bytes

Fixed Size              2237088 bytes

Variable Size              4026535264 bytes

Database Buffers    3.6373E+10 bytes

Redo Buffers                84631552 bytes

Database mounted.

SQL> alter database archivelog;

 

Database altered.

 

SQL> alter database open;

 

Database altered.

 

SQL> archive log list;

Database log mode        Archive Mode

Automatic archival         Enabled

Archive destination        USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     6

Next log sequence to archive   8

Current log sequence             8

SQL> select force_logging from v$database;

 

FOR

---

YES

 

在操作的时候,我是先将主库参数文件修改好

[oracle@2F ~]$ cat $ORACLE_HOME/dbs/initorcl.ora

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4322230272

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=13519290368

*.processes=250

*.remote_login_passwordfile='EXCLUSIVE'

*.sessions=280

*.sga_target=40557871104

*.undo_tablespace='UNDOTBS1'

#以上部分是数据库原来的参数,如果有跟下面的相同的参数,就将上面的删除

*.db_unique_name='pri'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(pri,std)'

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

*.LOG_ARCHIVE_DEST_2='SERVICE=zd_std LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=std'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

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

*.LOG_ARCHIVE_MAX_PROCESSES=5

*.FAL_SERVER=zd_std

*.FAL_CLIENT=zd_pri

*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/std/','/u01/app/oracle/oradata/orcl/'

*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/std/','/u01/app/oracle/oradata/orcl/'

*.STANDBY_FILE_MANAGEMENT=AUTO

需要解释一下这个几个参数

db_unique_name 是数据库的唯一名字,这个需要跟备库有区别

LOG_ARCHIVE_CONFIG 是标注DG环境下的数据库的unique_name

LOG_ARCHIVE_DEST_1  是数据库归档的路径,location表明归档的路径。VALID_FOR=(ALL_LOGFILES,ALL_ROLES)   DB_UNIQUE_NAME=pri' 表明主库的db_unique_name pri valid_for表示,当该市里的角色为all_roles的时候,all_logfiles所有的文件都归档当location指定的位置上。

LOG_ARCHIVE_DEST_2='SERVICE=zd_std LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=std'

表示数据第二个归档路径,其中service指定的tnsname.ora中配置的tnsname,指定的备库的连接字符串,同样valid_for表示,该实例作为primay_role的时候,online_logfiles归档到service指定的路径,db_unique_name指定的备库的唯一名字

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE 启动用这两个归档路径

*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc   归档日志的文件命名格式

*.LOG_ARCHIVE_MAX_PROCESSES=5             归档进程的最大数量。

*.FAL_SERVER=zd_std   当在本实例是standby角色的时候取日志的目标服务器

*.FAL_CLIENT=zd_pri    当本实例是standby角色的时候,指定的客户端,一般是本实例的tns

*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/std/','/u01/app/oracle/oradata/orcl/' 数据文件转化,如果路径一样,就不需要转换,如果不一样的存放路径就需要转换。

*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/std/','/u01/app/oracle/oradata/orcl/'

日志文件的路径转换

*.STANDBY_FILE_MANAGEMENT=AUTO   standby文件的管理方式

 

 

以下是备库的参数文件,注意标红的部分的不同。因为角色的不同,所以这些参数就会有不同的地方。

*.audit_file_dest='/u01/app/oracle/admin/std/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/u01/app/oracle/oradata/std/control01.ctl','/u01/app/oracle/fast_recovery_area/std/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4322230272

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=13519290368

*.processes=250

*.remote_login_passwordfile='EXCLUSIVE'

*.sessions=280

*.sga_target=40557871104

*.undo_tablespace='UNDOTBS1'

 

*.db_unique_name='std'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(pri,std)'

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

*.LOG_ARCHIVE_DEST_2='SERVICE=zd_pri LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=pri'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

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

*.LOG_ARCHIVE_MAX_PROCESSES=5

*.FAL_SERVER=zd_pri

*.FAL_CLIENT=zd_std

*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/std/'

*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/std/'

*.STANDBY_FILE_MANAGEMENT=AUTO

 

给主库增加standby logfile

alter database add standby logfile group 4 size 50M;

alter database add standby logfile group 5 size 50M;

alter database add standby logfile group 6 size 50M;

alter database add standby logfile group 7 size 50M;

这个standby的日志大小,必须跟online redo log的大小一样,组数要比redo log多一组。

 

 

给主库添加密码文件,如果主库的密码文件没有的话,需要这样添加

[oracle@2F dbs]$ orapwd file='/u01/app/oracle/product/11.2.0/db/dbs/orapworcl' password=oracle

 

在备库上补建参数文件中的相关文件夹

[oracle@2D ~]$ mkdir -p /u01/app/oracle/admin/std/adump

[oracle@2D ~]$ mkdir -p /u01/app/oracle/oradata/std

[oracle@2D ~]$ mkdir -p /u01/app/oracle/fast_recovery_area/std

[oracle@2D ~]$ mkdir -p /u01/app/oracle/arch/std

 

 

 

利用备库的参数文件启动备库到nomount状态,可以先创建spfile后,在启动到nomount

[oracle@2D ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on Sat Mar 8 13:53:06 2014

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SQL> startup nomount

ORACLE instance started.

 

Total System Global Area 4.0486E+10 bytes

Fixed Size              2237088 bytes

Variable Size              3758099808 bytes

Database Buffers    3.6641E+10 bytes

Redo Buffers                84631552 bytes

 

rman连接两个库做复制

rman target sys/oracle@zd_pri auxiliary sys/oracle@zd_std

duplicate target database for standby from active database;

[oracle@2D admin]$ rman target sys/oracle@zd_pri auxiliary sys/oracle@zd_std

 

Recovery Manager: Release 11.2.0.3.0 - Production on Sat Mar 8 14:10:27 2014

 

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

 

connected to target database: ORCL (DBID=1369450057)

connected to auxiliary database: ORCL (not mounted)

 

RMAN> duplicate target database for standby from active database;

 

Starting Duplicate Db at 08-MAR-14

using target database control file instead of recovery catalog

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=313 device type=DISK

 

contents of Memory Script:

{

   backup as copy reuse

   targetfile  '/u01/app/oracle/product/11.2.0/db/dbs/orapworcl' auxiliary format

 '/u01/app/oracle/product/11.2.0/db/dbs/orapworcl'   ;

}

executing Memory Script

 

Starting backup at 08-MAR-14

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=106 device type=DISK

Finished backup at 08-MAR-14

 

contents of Memory Script:

{

   backup as copy current controlfile for standby auxiliary format  '/u01/app/oracle/oradata/std/control01.ctl';

   restore clone controlfile to  '/u01/app/oracle/fast_recovery_area/std/control02.ctl' from

 '/u01/app/oracle/oradata/std/control01.ctl';

}

executing Memory Script

 

Starting backup at 08-MAR-14

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

copying standby control file

output file name=/u01/app/oracle/product/11.2.0/db/dbs/snapcf_orcl.f tag=TAG20140308T141113 RECID=3 STAMP=841673473

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 08-MAR-14

 

Starting restore at 08-MAR-14

using channel ORA_AUX_DISK_1

 

channel ORA_AUX_DISK_1: copied control file copy

Finished restore at 08-MAR-14

 

contents of Memory Script:

{

   sql clone 'alter database mount standby database';

}

executing Memory Script

 

sql statement: alter database mount standby database

 

contents of Memory Script:

{

   set newname for tempfile  1 to

 "/u01/app/oracle/oradata/std/temp01.dbf";

   switch clone tempfile all;

   set newname for datafile  1 to

 "/u01/app/oracle/oradata/std/system01.dbf";

   set newname for datafile  2 to

 "/u01/app/oracle/oradata/std/sysaux01.dbf";

   set newname for datafile  3 to

 "/u01/app/oracle/oradata/std/undotbs01.dbf";

   set newname for datafile  4 to

 "/u01/app/oracle/oradata/std/users01.dbf";

   set newname for datafile  5 to

 "/u01/app/oracle/oradata/std/example01.dbf";

   backup as copy reuse

   datafile  1 auxiliary format

 "/u01/app/oracle/oradata/std/system01.dbf"   datafile

 2 auxiliary format

 "/u01/app/oracle/oradata/std/sysaux01.dbf"   datafile

 3 auxiliary format

 "/u01/app/oracle/oradata/std/undotbs01.dbf"   datafile

 4 auxiliary format

 "/u01/app/oracle/oradata/std/users01.dbf"   datafile

 5 auxiliary format

 "/u01/app/oracle/oradata/std/example01.dbf"   ;

   sql 'alter system archive log current';

}

executing Memory Script

 

executing command: SET NEWNAME

 

renamed tempfile 1 to /u01/app/oracle/oradata/std/temp01.dbf in control file

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

Starting backup at 08-MAR-14

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf

output file name=/u01/app/oracle/oradata/std/system01.dbf tag=TAG20140308T141120

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting datafile copy

input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf

output file name=/u01/app/oracle/oradata/std/sysaux01.dbf tag=TAG20140308T141120

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting datafile copy

input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf

output file name=/u01/app/oracle/oradata/std/example01.dbf tag=TAG20140308T141120

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07

channel ORA_DISK_1: starting datafile copy

input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf

output file name=/u01/app/oracle/oradata/std/undotbs01.dbf tag=TAG20140308T141120

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03

channel ORA_DISK_1: starting datafile copy

input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf

output file name=/u01/app/oracle/oradata/std/users01.dbf tag=TAG20140308T141120

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 08-MAR-14

 

sql statement: alter system archive log current

 

contents of Memory Script:

{

   switch clone datafile all;

}

executing Memory Script

 

datafile 1 switched to datafile copy

input datafile copy RECID=3 STAMP=841673486 file name=/u01/app/oracle/oradata/std/system01.dbf

datafile 2 switched to datafile copy

input datafile copy RECID=4 STAMP=841673486 file name=/u01/app/oracle/oradata/std/sysaux01.dbf

datafile 3 switched to datafile copy

input datafile copy RECID=5 STAMP=841673486 file name=/u01/app/oracle/oradata/std/undotbs01.dbf

datafile 4 switched to datafile copy

input datafile copy RECID=6 STAMP=841673486 file name=/u01/app/oracle/oradata/std/users01.dbf

datafile 5 switched to datafile copy

input datafile copy RECID=7 STAMP=841673486 file name=/u01/app/oracle/oradata/std/example01.dbf

Finished Duplicate Db at 08-MAR-14

 

RMAN> exit

 

 

Recovery Manager complete.

 

此时查看备库的状态

SQL> select status from v$instance ;

 

STATUS

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

MOUNTED

 

 

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

 

Database altered.

 

此时可以在alert日志中看到

Sat Mar 08 14:13:00 2014

alter database recover managed standby database disconnect from session

Attempt to start background Managed Standby Recovery process (orcl)

Sat Mar 08 14:13:00 2014

MRP0 started with pid=23, OS id=28042

MRP0: Background Managed Standby Recovery process started (orcl)

 started logmerger process

Sat Mar 08 14:13:05 2014

Managed Standby Recovery not using Real Time Apply

表明DG不是实时应用的,因此在主库switch logfile的时候,在备库的alert日志中需要等待一段时间才能看到这个切换日志应用操作。

 

将日志的应用改为实时应用

alter database recover managed standby database cancel;

alter database recover managed standby database using current logfile disconnect from session;

此时再在备库的日志中可以看到

Sat Mar 08 14:19:44 2014

alter database recover managed standby database using current logfile disconnect from session

Attempt to start background Managed Standby Recovery process (orcl)

Sat Mar 08 14:19:44 2014

MRP0 started with pid=23, OS id=28265

MRP0: Background Managed Standby Recovery process started (orcl)

 started logmerger process

Sat Mar 08 14:19:49 2014

Managed Standby Recovery starting Real Time Apply

 

 

至此DG搭建完毕,可见rman搭建DG还是很快的。

 

猜你喜欢

转载自blog.csdn.net/guduchangjian/article/details/20780547