晚上花了很长时间用duplicate创建了一个DG。其实真个过程都是比较容易的,只是自己有些地方因为经常不小心搞错,导致花了比较久,简单记录下:

   要注意db_name必须要一样。其中主库是orcl,备库是orcm。

主库的listener.ora设置

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521))
    )
  )
                                                                                                                                                                                        
ADR_BASE_LISTENER = /u01/app/oracle
                                                                                                                                                                                        
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
  )


主库的initorcl.ora增加的内容

*.db_name='orcl'
*.db_unique_name='orcl_pd'
*.log_archive_config='dg_config=(orcl_pd,orcl_st)'
*.log_archive_dest_1='location=/u01/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=orcl_pd'
*.log_archive_dest_2='service=orcl_st reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=orcl_st'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_management='auto'
*.fal_server='orcl_st'
*.fal_client='orcl_pd'



备库的listener.ora设置

STENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))
    )
  )
                                                                                                                                                                       
ADR_BASE_LISTENER = /u01/app/oracle
                                                                                                                                                                       
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcm)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcm)
    )
  )


备库的initorcm.ora的设置

*.db_name=orcl
*.control_files='/u01/app/oracle/oradata/orcm/control01.ctl', '/u01/app/oracle/oradata/orcm/control02.ctl',
'/u01/app/oracle/oradata/orcm/control03.ctl'
*.db_unique_name='orcl_st'
*.log_archive_config='dg_config=(orcl_pd,orcl_st)'
*.log_archive_dest_1='location=/u01/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=orcl_st'
*.log_archive_dest_2='service=orcl_pd reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=orcl_pd'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_management='auto'
*.fal_server='orcl_pd'
*.fal_client='orcl_st'
*.log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcm'
*.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcm'


主库和备库的tnsnames.ora设置


ORCL_ST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcm)
    )
  )
                                                                                                                                                                                                               
ORCL_PD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )


最后贴一下成功的喜悦,希望可以帮助到大家:

Starting Duplicate Db at 18-JUN-13
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=20 device type=DISK
contents of Memory Script:
{
   backup as copy reuse
   targetfile  '/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl' auxiliary format
 '/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcm'   ;
}
executing Memory Script
Starting backup at 18-JUN-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=41 device type=DISK
Finished backup at 18-JUN-13
contents of Memory Script:
{
   backup as copy current controlfile for standby auxiliary format  '/u01/app/oracle/oradata/orcm/control01.ctl';
   restore clone controlfile to  '/u01/app/oracle/oradata/orcm/control02.ctl' from
 '/u01/app/oracle/oradata/orcm/control01.ctl';
   restore clone controlfile to  '/u01/app/oracle/oradata/orcm/control03.ctl' from
 '/u01/app/oracle/oradata/orcm/control01.ctl';
}
executing Memory Script
Starting backup at 18-JUN-13
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_1/dbs/snapcf_orcl.f tag=TAG20130618T051238 RECID=2 STAMP=818399559
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 18-JUN-13
Starting restore at 18-JUN-13
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: copied control file copy
Finished restore at 18-JUN-13
Starting restore at 18-JUN-13
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: copied control file copy
Finished restore at 18-JUN-13
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/orcm/temp01.dbf";
   switch clone tempfile all;
   set newname for datafile  1 to
 "/u01/app/oracle/oradata/orcm/system01.dbf";
   set newname for datafile  2 to
 "/u01/app/oracle/oradata/orcm/sysaux01.dbf";
   set newname for datafile  3 to
 "/u01/app/oracle/oradata/orcm/undotbs01.dbf";
   set newname for datafile  4 to
 "/u01/app/oracle/oradata/orcm/users01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format
 "/u01/app/oracle/oradata/orcm/system01.dbf"   datafile
 2 auxiliary format
 "/u01/app/oracle/oradata/orcm/sysaux01.dbf"   datafile
 3 auxiliary format
 "/u01/app/oracle/oradata/orcm/undotbs01.dbf"   datafile
 4 auxiliary format
 "/u01/app/oracle/oradata/orcm/users01.dbf"   ;
   sql 'alter system archive log current';
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to /u01/app/oracle/oradata/orcm/temp01.dbf in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting backup at 18-JUN-13
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/orcm/system01.dbf tag=TAG20130618T051251
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:02:02
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/orcm/sysaux01.dbf tag=TAG20130618T051251
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:04:37
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/orcm/undotbs01.dbf tag=TAG20130618T051251
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:36
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/orcm/users01.dbf tag=TAG20130618T051251
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 18-JUN-13
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=818401498 file name=/u01/app/oracle/oradata/orcm/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=3 STAMP=818401498 file name=/u01/app/oracle/oradata/orcm/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=4 STAMP=818401498 file name=/u01/app/oracle/oradata/orcm/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=5 STAMP=818401498 file name=/u01/app/oracle/oradata/orcm/users01.dbf
Finished Duplicate Db at 18-JUN-13