使用RMAN DUPLICATE...FROM ACTIVE DATABASE命令来创建DataGuard物理备库

环境:

database_name:beijing
database_version:11.2.0.2.0

primary:
IP:10.0.2.118
hostname:beijing
oracle_sid:beijing

standby:
IP:10.0.2.112
hostname:shanghai
oracle_sid:shanghai

一、准备主数据库:
1、确保主数据库处于归档模式:
SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG

2、打开force logging:
SQL> alter database force logging;

Database altered.

3、创建standby redologs:
SQL> col file_name for a50
SQL> select lf.group#,member as file_name,bytes/1024/1024 as size_MB from v$logfile lf,v$log l where lf.group#=l.group# order by group#;

    GROUP# FILE_NAME                         SIZE_MB
---------- -------------------------------------------------- ----------
     1 /u01/app/oracle/oradata/beijing/redo01.log              50
     2 /u01/app/oracle/oradata/beijing/redo02.log              50
     3 /u01/app/oracle/oradata/beijing/redo03.log              50
注意:创建的standby redo大小需要和主库的redo大小保持一致
SQL> alter database add standby logfile group 4 ('/u01/app/oracle/oradata/beijing/stby04.log') size 50m;
Database altered.
SQL> alter database add standby logfile group 5 ('/u01/app/oracle/oradata/beijing/stby05.log') size 50m;
Database altered.
SQL> alter database add standby logfile group 6 ('/u01/app/oracle/oradata/beijing/stby06.log') size 50m;
Database altered.
SQL> alter database add standby logfile group 7 ('/u01/app/oracle/oradata/beijing/stby07.log') size 50m;
Database altered.
SQL> select type,member from v$logfile;

TYPE    MEMBER
------- --------------------------------------------------
ONLINE    /u01/app/oracle/oradata/beijing/redo03.log
ONLINE    /u01/app/oracle/oradata/beijing/redo02.log
ONLINE    /u01/app/oracle/oradata/beijing/redo01.log
STANDBY /u01/app/oracle/oradata/beijing/stby04.log
STANDBY /u01/app/oracle/oradata/beijing/stby05.log
STANDBY /u01/app/oracle/oradata/beijing/stby06.log
STANDBY /u01/app/oracle/oradata/beijing/stby07.log

7 rows selected.

4、修改主数据库的初始化参数:
SQL> alter system set log_archive_config='DG_CONFIG=(beijing,shanghai)';
System altered.
SQL> alter system set log_archive_dest_1='location=/archivelog/ valid_for=(ALL_LOGFILES,ALL_ROLES) db_unique_name=beijing';
System altered.
SQL> alter system set log_archive_dest_2='SERVICE=shanghai lgwr async valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=shanghai';
System altered.
SQL> alter system set log_archive_dest_state_1=enable;
System altered.
SQL> alter system set fal_server=shanghai;
System altered.
SQL> alter system set fal_client=beijing;
System altered.
SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/shanghai/','/u01/app/oracle/oradata/beijing/' scope=spfile;
System altered.
SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/shanghai/','/u01/app/oracle/oradata/beijing/' scope=spfile;
System altered.


二、配置网络:
1、在备库上配置静态监听:
[oracle@shanghai ~]$ cd $ORACLE_HOME/network/admin
[oracle@shanghai admin]$ vi listener.ora
[oracle@shanghai admin]$ cat listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
     (GLOBAL_DBNAME = shanghai)
     (ORACLE_HOME = /u01/app/oracle/product/11.2/db_1)
     (SID_NAME = shanghai)
    )
   )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = shanghai>)(PORT = 1521))
  )
2、在主库和备库上都编辑tnsnames.ora文件:
[oracle@beijing admin]$ cat tnsnames.ora
beijing =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = beijing)(PORT = 1521))
    )
    (CONNECT_DATA = (SERVICE_NAME = beijing))
  )

shanghai =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = shanghai)(PORT = 1521))
    )
    (CONNECT_DATA = (SERVICE_NAME = shanghai))
  )

检查网络配置:
[oracle@beijing admin]$ tnsping shanghai
[oracle@shanghai admin]$ tnsping beijing


三、创建备用数据库:
1、拷贝密码文件:
主数据库和备数据库的密码必须相同,所以做好的办法就是拷贝密码文件:
[oracle@beijing dbs]$ scp orapwbeijing oracle@shanghai:/u01/app/oracle/product/11.2/db_1/dbs/orapwshanghai
[oracle@shanghai dbs]$ pwd
/u01/app/oracle/product/11.2/db_1/dbs
[oracle@shanghai dbs]$ ls
hc_DBUA0.dat  init.ora  orapwshanghai
2、在备库上创建参数文件:
只需要一个参数db_name就行:
如下所示:
[oracle@shanghai dbs]$ cat initshanghai.ora
DB_NAME=beijing
DB_UNIQUE_NAME=shanghai
DB_BLOCK_SIZE=8192

3、在备库上创建相应的目录:
[oracle@shanghai ~]$ cd $ORACLE_BASE
[oracle@shanghai oracle]$ mkdir -p oradata/shanghai
[oracle@shanghai oracle]$ mkdir -p diag/rdbms/shanghai/shanghai/trace
[oracle@shanghai oracle]$ mkdir -p diag/rdbms/shanghai/shanghai/cdump
[oracle@shanghai oracle]$ mkdir -p admin/shanghai/adump
创建归档日志目录:
[root@shanghai ~]# cd /
[root@shanghai /]# mkdir archivelog
[root@shanghai /]# chown -R oracle:oinstall /archivelog

4、启动备库实例:
[oracle@shanghai ~]$ export ORACLE_SID=shanghai
[oracle@shanghai ~]$ sqlplus / as sysdba;
SQL> startup nomount pfile=$ORACLE_HOME/dbs/initshanghai.ora
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size            2225064 bytes
Variable Size          159386712 bytes
Database Buffers       50331648 bytes
Redo Buffers            5214208 bytes
5、确认可以以sysdba权限登录
[oracle@shanghai ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on Sun Dec 23 16:07:18 2012

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

SQL> conn sys/qweasd@shanghai as sysdba;
Connected.
SQL> conn sys/qweasd@beijing as sysdba;
Connected.

注意:如果遇到如下错误,则重启监听再试:
SQL> conn sys/qweasd@shanghai as sysdba;
ERROR:
ORA-12528: TNS:listener: all appropriate instances are blocking new connections
6、在主库上执行rman duplicate命令:
[oracle@beijing ~]$ rman target sys/qweasd@beijing auxiliary sys/qweasd@shanghai

Recovery Manager: Release 11.2.0.2.0 - Production on Sun Dec 23 16:29:21 2012

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

connected to target database: BEIJING (DBID=767262686)
connected to auxiliary database (not started)
RMAN> run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
spfile
  parameter_value_convert 'beijing','shanghai'
  set db_unique_name='shanghai'
  set db_file_name_convert='/beijing/','/shanghai/'
  set log_file_name_convert='/beijing/','/shanghai/'
  set control_files='/u01/app/oracle/oradata/shanghai/control01.ctl'
  set log_archive_max_processes='5'
  set fal_client='shanghai'
  set fal_server='beijing'
  set standby_file_management='AUTO'
  set log_archive_config='dg_config=(beijing,shanghai)'
  set log_archive_dest_2='service=beijing ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=beijing'
;
}


过程:
allocated channel: prmy1
channel prmy1: SID=961 device type=DISK

allocated channel: prmy2
channel prmy2: SID=1152 device type=DISK

allocated channel: prmy3
channel prmy3: SID=1344 device type=DISK

allocated channel: prmy4
channel prmy4: SID=6 device type=DISK

allocated channel: stby
channel stby: SID=91 device type=DISK

Starting Duplicate Db at 23-DEC-12

contents of Memory Script.:
{
   backup as copy reuse
   targetfile  '/u01/app/oracle/product/11.2/db_1/dbs/orapwbeijing' auxiliary format
 '/u01/app/oracle/product/11.2/db_1/dbs/orapwshanghai'   targetfile
 '/u01/app/oracle/product/11.2/db_1/dbs/spfilebeijing.ora' auxiliary format
 '/u01/app/oracle/product/11.2/db_1/dbs/spfileshanghai.ora'   ;
   sql clone "alter system set spfile= ''/u01/app/oracle/product/11.2/db_1/dbs/spfileshanghai.ora''";
}
executing Memory Script

Starting backup at 23-DEC-12
Finished backup at 23-DEC-12

sql statement: alter system set spfile= ''/u01/app/oracle/product/11.2/db_1/dbs/spfileshanghai.ora''

contents of Memory Script.:
{
   sql clone "alter system set  audit_file_dest = ''/u01/app/oracle/admin/shanghai/adump'' comment='''' scope=spfile";
   sql clone "alter system set  dispatchers = ''(PROTOCOL=TCP) (SERVICE=shanghaiXDB)'' comment='''' scope=spfile";
   sql clone "alter system set  log_archive_dest_1 = ''location=/archivelog/ valid_for=(ALL_LOGFILES,ALL_ROLES) db_unique_name=shanghai'' comment='''' scope=spfile";
   sql clone "alter system set  db_unique_name = ''shanghai'' comment='''' scope=spfile";
   sql clone "alter system set  db_file_name_convert = ''/beijing/'', ''/shanghai/'' comment='''' scope=spfile";
   sql clone "alter system set  log_file_name_convert = ''/beijing/'', ''/shanghai/'' comment='''' scope=spfile";
   sql clone "alter system set  control_files = ''/u01/app/oracle/oradata/control01.ctl'' comment='''' scope=spfile";
   sql clone "alter system set  log_archive_max_processes = 5 comment='''' scope=spfile";
   sql clone "alter system set  fal_client = ''shanghai'' comment='''' scope=spfile";
   sql clone "alter system set  fal_server = ''beijing'' comment='''' scope=spfile";
   sql clone "alter system set  standby_file_management = ''AUTO'' comment='''' scope=spfile";
   sql clone "alter system set  log_archive_config = ''dg_config=(chicago,boston)'' comment='''' scope=spfile";
   sql clone "alter system set  log_archive_dest_2 = ''service=beijing ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=beijing'' comment=''''

scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  audit_file_dest =  ''/u01/app/oracle/admin/shanghai/adump'' comment= '''' scope=spfile
sql statement: alter system set  dispatchers =  ''(PROTOCOL=TCP) (SERVICE=shanghaiXDB)'' comment= '''' scope=spfile
sql statement: alter system set  log_archive_dest_1 =  ''location=/archivelog/ valid_for=(ALL_LOGFILES,ALL_ROLES) db_unique_name=shanghai'' comment= '''' scope=spfile
sql statement: alter system set  db_unique_name =  ''shanghai'' comment= '''' scope=spfile
sql statement: alter system set  db_file_name_convert =  ''/beijing/'', ''/shanghai/'' comment= '''' scope=spfile
sql statement: alter system set  log_file_name_convert =  ''/beijing/'', ''/shanghai/'' comment= '''' scope=spfile
sql statement: alter system set  control_files =  ''/u01/app/oracle/oradata/control01.ctl'' comment= '''' scope=spfile
sql statement: alter system set  log_archive_max_processes =  5 comment= '''' scope=spfile
sql statement: alter system set  fal_client =  ''shanghai'' comment= '''' scope=spfile
sql statement: alter system set  fal_server =  ''beijing'' comment= '''' scope=spfile
sql statement: alter system set  standby_file_management =  ''AUTO'' comment= '''' scope=spfile
sql statement: alter system set  log_archive_config =  ''dg_config=(chicago,boston)'' comment= '''' scope=spfile
sql statement: alter system set  log_archive_dest_2 =  ''service=beijing ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=beijing'' comment= ''''

scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     839282688 bytes

Fixed Size                     2231128 bytes
Variable Size                574620840 bytes
Database Buffers             255852544 bytes
Redo Buffers                   6578176 bytes
allocated channel: stby
channel stby: SID=958 device type=DISK

contents of Memory Script.:
{
   backup as copy current controlfile for standby auxiliary format  '/u01/app/oracle/oradata/control01.ctl';
}
executing Memory Script

Starting backup at 23-DEC-12
channel prmy1: starting datafile copy
copying standby control file
output file name=/u01/app/oracle/product/11.2/db_1/dbs/snapcf_beijing.f tag=TAG20121223T163128 RECID=2 STAMP=802801888
channel prmy1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 23-DEC-12

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/shanghai/temp01.dbf";
   switch clone tempfile all;
   set newname for datafile  1 to "/u01/app/oracle/oradata/shanghai/system01.dbf";
   set newname for datafile  2 to "/u01/app/oracle/oradata/shanghai/sysaux01.dbf";
   set newname for datafile  3 to "/u01/app/oracle/oradata/shanghai/undotbs01.dbf";
   set newname for datafile  4 to "/u01/app/oracle/oradata/shanghai/users01.dbf";
   set newname for datafile  5 to "/u01/app/oracle/oradata/shanghai/example01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format "/u01/app/oracle/oradata/shanghai/system01.dbf"  
   datafile  2 auxiliary format "/u01/app/oracle/oradata/shanghai/sysaux01.dbf"  
   datafile  3 auxiliary format "/u01/app/oracle/oradata/shanghai/undotbs01.dbf"  
   datafile  4 auxiliary format "/u01/app/oracle/oradata/shanghai/users01.dbf"  
   datafile  5 auxiliary format "/u01/app/oracle/oradata/shanghai/example01.dbf"   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u01/app/oracle/oradata/shanghai/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 23-DEC-12
channel prmy1: starting datafile copy
input datafile file number=00001 name=/u01/app/oracle/oradata/beijing/system01.dbf
channel prmy2: starting datafile copy
input datafile file number=00002 name=/u01/app/oracle/oradata/beijing/sysaux01.dbf
channel prmy3: starting datafile copy
input datafile file number=00005 name=/u01/app/oracle/oradata/beijing/example01.dbf
channel prmy4: starting datafile copy
input datafile file number=00003 name=/u01/app/oracle/oradata/beijing/undotbs01.dbf
output file name=/u01/app/oracle/oradata/shanghai/undotbs01.dbf tag=TAG20121223T163134
channel prmy4: datafile copy complete, elapsed time: 00:00:07
channel prmy4: starting datafile copy
input datafile file number=00004 name=/u01/app/oracle/oradata/beijing/users01.dbf
output file name=/u01/app/oracle/oradata/shanghai/example01.dbf tag=TAG20121223T163134
channel prmy3: datafile copy complete, elapsed time: 00:00:09
output file name=/u01/app/oracle/oradata/shanghai/users01.dbf tag=TAG20121223T163134
channel prmy4: datafile copy complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/shanghai/system01.dbf tag=TAG20121223T163134
channel prmy1: datafile copy complete, elapsed time: 00:00:15
output file name=/u01/app/oracle/oradata/shanghai/sysaux01.dbf tag=TAG20121223T163134
channel prmy2: datafile copy complete, elapsed time: 00:00:15
Finished backup at 23-DEC-12

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=2 STAMP=802801851 file name=/u01/app/oracle/oradata/shanghai/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=3 STAMP=802801851 file name=/u01/app/oracle/oradata/shanghai/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=4 STAMP=802801851 file name=/u01/app/oracle/oradata/shanghai/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=5 STAMP=802801851 file name=/u01/app/oracle/oradata/shanghai/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=6 STAMP=802801851 file name=/u01/app/oracle/oradata/shanghai/example01.dbf
Finished Duplicate Db at 23-DEC-12
released channel: prmy1
released channel: prmy2
released channel: prmy3
released channel: prmy4
released channel: stby
复制结束。


四、连接到备库启动 MRP (Managed Recovery Process)
[oracle@shanghai ~]$ sqlplus / as sysdba;
SQL> alter database recover managed standby database disconnect;
Database altered.
如果需要启用实时应用,则应该:
SQL> alter database recover managed standby database using current logfile disconnect;

五、如果有Active Dataguard (ADG)的license,可以以read only模式打开备库,并开启恢复:
[oracle@shanghai ~]$ sqlplus / as sysdba;
SQL> alter database recover managed standby database cancel;
SQL> alter database open;
SQL> alter database recover managed standby database disconnect;
或者启用实时应用:
SQL> alter database recover managed standby database using current logfile disconnect;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26194851/viewspace-751546/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26194851/viewspace-751546/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值