oracle 11g dataguard物理备库的创建步骤(最高可用lgwr sycn)

本文介绍了11g active dataguard的详细配置步骤和数据保护模式的修改!
一:环境介绍
主库
IP地址:192.168.1.61/24
操作系统版本:rhel5.4 64bit
数据库版本:11.2.0.3 64bit
数据库sid名:dg
数据库名:dg
数据库db_unique_name:dg1

备库1  物理备库 (只安装oracle数据库软件,无需建库)
IP地址:192.168.1.62/24
操作系统版本:rhel5.4 64bit
数据库版本:11.2.0.3 64bit
数据库sid名:dg
数据库名:dg
数据库db_unique_name:dg2
二:修改主备库listener.ora,tnsnames.ora文件如下,备库根据自身情况修改
[oracle@dg1 ~]$ cat $TNS_ADMIN/listener.ora  
SID_LIST_LISTENER =  
  (SID_LIST =  
    (SID_DESC =  
      (GLOBAL_DBNAME = dg1.yang.com)  
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db1)  
      (SID_NAME = dg)  
    )  
  )  

LISTENER =  
  (DESCRIPTION_LIST =  
    (DESCRIPTION =  
      (ADDRESS_LIST =  
        (ADDRESS = (PROTOCOL = TCP)(HOST = dg1.yang.com)(PORT = 1521))  
      )  
    )  
  )  

[oracle@dg1 ~]$ cat $TNS_ADMIN/tnsnames.ora  
dg1 =  
  (DESCRIPTION =  
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.61)(PORT = 1521))  
    (CONNECT_DATA =  
      (SERVER = DEDICATED)  
      (SERVICE_NAME = dg1.yang.com)  
    )  
  )  

dg2 =  
  (DESCRIPTION =  
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.62)(PORT = 1521))  
    (CONNECT_DATA =  
      (SERVER = DEDICATED)  
      (SERVICE_NAME = dg2.yang.com)  
    )  
  )  

for_db =   
(DESCRIPTION =  
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.61)(PORT = 1521))  
  )
三:在主库上修改dataguard配置相关的各个参数,各参数的具体含义可以参考oracle在线文档
SQL> alter database force logging;  
Database altered.  

SQL> alter system set db_unique_name='dg1' scope=spfile;  
System altered.  

SQL> alter system set log_archive_config='DG_CONFIG=(dg1,dg2)';  
System altered.  

SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog valid_for=  

(all_logfiles,primary_role) db_unique_name=dg1' scope=spfile;  
System altered.  

SQL> alter system set log_archive_dest_2='SERVICE=dg2 lgwr sync valid_for=(online_logfile,primary_role)   

db_unique_name=dg2';  
System altered.  

SQL> alter system set log_archive_dest_3='LOCATION=/u01/app/oracle/standbylog valid_for=  

(standby_logfile,standby_role) db_unique_name=dg1' scope=spfile;  
System altered.  

SQL> alter system set fal_client='dg1';  
System altered.  

SQL> alter system set fal_server='dg2';  
System altered.  

SQL> alter system set standby_file_management=auto;  
System altered.  

SQL> alter database add standby logfile group 4 '/u01/app/oracle/oradata/dg/standby04.log' size 50M;  
Database altered.  

SQL> alter database add standby logfile group 5 '/u01/app/oracle/oradata/dg/standby05.log' size 50M;  
Database altered.  

SQL> alter database add standby logfile group 6 '/u01/app/oracle/oradata/dg/standby06.log' size 50M;  
Database altered.  

SQL> alter database add standby logfile group 7 '/u01/app/oracle/oradata/dg/standby07.log' size 50M;  
Database altered.  

SQL> shutdown immediate  
Database closed.  
Database dismounted.  
ORACLE instance shut down.  

SQL> startup  
ORACLE instance started.  

Total System Global Area  417546240 bytes  
Fixed Size                  2228944 bytes  
Variable Size             285216048 bytes  
Database Buffers          121634816 bytes  
Redo Buffers                8466432 bytes  
Database mounted.  
Database opened.  

SQL> alter system set local_listener='for_db';  
System altered.  

SQL> create pfile='/home/oracle/initdg.ora' from spfile;  
File created.
三:将生成的pfile文件修改后传递到备库,注意红色字体部分
[oracle@dg1 ~]$ cat /home/oracle/initdg.ora
dg.__db_cache_size=121634816
dg.__java_pool_size=4194304
dg.__large_pool_size=4194304
dg.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
dg.__pga_aggregate_target=167772160
dg.__sga_target=251658240
dg.__shared_io_pool_size=0
dg.__shared_pool_size=109051904
dg.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/dg/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/dg/control01.ctl','/u01/app/oracle/fast_recovery_area/dg/control02.ctl'
*.db_block_size=8192
*.db_domain='yang.com'
*.db_name='dg'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.db_unique_name='dg2'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgXDB)'
*.fal_client='dg2'
*.fal_server='dg1'
*.local_listener='for_db'
*.log_archive_config='DG_CONFIG=(dg1,dg2)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog valid_for=(all_logfiles,primary_role)db_unique_name=dg2'
*.log_archive_dest_2='SERVICE=dg1 lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=dg1'
*.log_archive_dest_3='LOCATION=/u01/app/oracle/standbylog valid_for=(standby_logfile,standby_role)db_unique_name=dg2'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=419430400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
[oracle@dg1 ~]$ scp initdg.ora 192.168.1.62:/home/oracle/
四:将备库启动到nomount状态,然后连接主库进行duplicate操作
[oracle@dg2 ~]$ lsnrctl start  
[oracle@dg2 ~]$ orapwd file=$ORACLE_HOME/dbs/orapwdg password=123456 entries=5
[oracle@dg2 ~]$ sqlplus /nolog  
SQL*Plus: Release 11.2.0.3.0 Production on Sun Apr 22 13:36:53 2012  
Copyright (c) 1982, 2011, Oracle.  All rights reserved.  

SQL> conn /as sysDBA  
Connected to an idle instance.  
SQL> create spfile from pfile='/home/oracle/initdg.ora';  
File created.  

SQL> startup nomount  
ORACLE instance started.  

Total System Global Area  417546240 bytes  
Fixed Size                  2228944 bytes  
Variable Size             285216048 bytes  
Database Buffers          121634816 bytes  
Redo Buffers                8466432 bytes
[oracle@dg2 ~]$ rman target sys/123456@dg1 auxiliary sys/123456@dg2
Recovery Manager: Release 11.2.0.3.0 - Production on Sun Apr 22 13:38:33 2012
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: DG (DBID=1694605607)
connected to auxiliary database: DG (not mounted)
RMAN> duplicate target database for standby nofilenamecheck from active database;
Starting Duplicate Db at 2012-04-22-13:39:25
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=134 device type=DISK
contents of Memory Script:
{
   backup as copy reuse
   targetfile  '/u01/app/oracle/product/11.2.0/db1/dbs/orapwdg' auxiliary format
'/u01/app/oracle/product/11.2.0/db1/dbs/orapwdg'   ;
}
executing Memory Script
Starting backup at 2012-04-22-13:39:26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK
Finished backup at 2012-04-22-13:39:28
contents of Memory Script:
{
   backup as copy current controlfile for standby auxiliary format
'/u01/app/oracle/oradata/dg/control01.ctl';
   restore clone controlfile to  '/u01/app/oracle/fast_recovery_area/dg/control02.ctl' from
'/u01/app/oracle/oradata/dg/control01.ctl';
}
executing Memory Script
Starting backup at 2012-04-22-13:39:29
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/db1/dbs/snapcf_dg.f tag=TAG20120422T133929 RECID=1
STAMP=781277970
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 2012-04-22-13:39:32
Starting restore at 2012-04-22-13:39:32
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: copied control file copy
Finished restore at 2012-04-22-13:39:34
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/dg/temp01.dbf";
   switch clone tempfile all;
   set newname for datafile  1 to
"/u01/app/oracle/oradata/dg/system01.dbf";
   set newname for datafile  2 to
"/u01/app/oracle/oradata/dg/sysaux01.dbf";
   set newname for datafile  3 to
"/u01/app/oracle/oradata/dg/undotbs01.dbf";
   set newname for datafile  4 to
"/u01/app/oracle/oradata/dg/users01.dbf";
   backup as copy reuse
   datafile  1 auxiliary format
"/u01/app/oracle/oradata/dg/system01.dbf"   datafile
2 auxiliary format
"/u01/app/oracle/oradata/dg/sysaux01.dbf"   datafile
3 auxiliary format
"/u01/app/oracle/oradata/dg/undotbs01.dbf"   datafile
4 auxiliary format
"/u01/app/oracle/oradata/dg/users01.dbf"   ;
   sql 'alter system archive log current';
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to /u01/app/oracle/oradata/dg/temp01.dbf in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting backup at 2012-04-22-13:39:42
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u01/app/oracle/oradata/dg/system01.dbf
output file name=/u01/app/oracle/oradata/dg/system01.dbf tag=TAG20120422T133943
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:03:06
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u01/app/oracle/oradata/dg/sysaux01.dbf
output file name=/u01/app/oracle/oradata/dg/sysaux01.dbf tag=TAG20120422T133943
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:55
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/u01/app/oracle/oradata/dg/undotbs01.dbf
output file name=/u01/app/oracle/oradata/dg/undotbs01.dbf tag=TAG20120422T133943
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u01/app/oracle/oradata/dg/users01.dbf
output file name=/u01/app/oracle/oradata/dg/users01.dbf tag=TAG20120422T133943
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 2012-04-22-13:45:05
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=1 STAMP=781278308 file name=/u01/app/oracle/oradata/dg/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=2 STAMP=781278308 file name=/u01/app/oracle/oradata/dg/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=3 STAMP=781278308 file name=/u01/app/oracle/oradata/dg/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=4 STAMP=781278308 file name=/u01/app/oracle/oradata/dg/users01.dbf
Finished Duplicate Db at 2012-04-22-13:45:29
RMAN> exit
Recovery Manager complete.
五:将备库置于active dataguard模式下
[oracle@dg2 ~]$ sqlplus /nolog  
SQL*Plus: Release 11.2.0.3.0 Production on Sun Apr 22 13:47:17 2012  
Copyright (c) 1982, 2011, Oracle.  All rights reserved.  

SQL> conn /as sysdba  
Connected.  
SQL> select open_mode,database_role,db_unique_name from v$database;  

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME  
-------------------- ---------------- ------------------------------  
MOUNTED              PHYSICAL STANDBY dg2  

SQL> alter database open;  
Database altered.  

SQL> alter database recover managed standby database using current logfile disconnect from session;  
Database altered.  

SQL> select open_mode,database_role,db_unique_name from v$database;  

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME  
-------------------- ---------------- ------------------------------  
READ ONLY WITH APPLY PHYSICAL STANDBY dg2  

SQL> select status from v$standby_log;  

STATUS  
----------  
ACTIVE  
UNASSIGNED  
UNASSIGNED  
UNASSIGNED  

SQL> select member from v$logfile;  

MEMBER  
--------------------------------------------------------------------------------  
/u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_3_7s76qbhq_.log  
/u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_2_7s76q94s_.log  
/u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_1_7s76q5w1_.log  
/u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_4_7s76qdpk_.log  
/u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_5_7s76qhmy_.log  
/u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_6_7s76qlhz_.log  
/u01/app/oracle/fast_recovery_area/DG2/onlinelog/o1_mf_7_7s76qp99_.log  
7 rows selected.
六:修改dataguard的数据保护模式为最高可用性模式,根据oracle文档的解释,最高可用性数据保护模式需要先满足以下几个条件

SQL> select db_unique_name,protection_mode,protection_level from v$database;  

DB_UNIQUE_NAME                 PROTECTION_MODE      PROTECTION_LEVEL  
------------------------------ -------------------- --------------------  
dg2                            MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  



SQL> select db_unique_name,protection_mode,protection_level from v$database;  

DB_UNIQUE_NAME                 PROTECTION_MODE      PROTECTION_LEVEL  
------------------------------ -------------------- --------------------  
dg1                            MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  


SQL> alter database set standby database to maximize availability;  
Database altered.  

SQL> select db_unique_name,protection_mode,protection_level from v$database;  

DB_UNIQUE_NAME                 PROTECTION_MODE      PROTECTION_LEVEL  
------------------------------ -------------------- --------------------  
dg1                            MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY  


SQL> select db_unique_name,protection_mode,protection_level from v$database;  

DB_UNIQUE_NAME                 PROTECTION_MODE      PROTECTION_LEVEL  
------------------------------ -------------------- --------------------  
dg2                            MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY  


将备库shutdown后,主库的PROTECTION_LEVEL将变为RESYNCHRONIZATION  
SQL> select db_unique_name,protection_mode,protection_level from v$database;  

DB_UNIQUE_NAME                 PROTECTION_MODE      PROTECTION_LEVEL  
------------------------------ -------------------- --------------------  
dg2                            MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY  

SQL> alter database recover managed standby database cancel;  
Database altered.  

SQL> shutdown immediate  
Database closed.  
Database dismounted.  
ORACLE instance shut down.  

SQL> select db_unique_name,protection_mode,protection_level from v$database;  

DB_UNIQUE_NAME                 PROTECTION_MODE      PROTECTION_LEVEL  
------------------------------ -------------------- --------------------  
dg1                            MAXIMUM AVAILABILITY RESYNCHRONIZATION
标签: 暂无标签
李波Joker

写了 46 篇文章,拥有财富 503,被 8 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2016-3-25 14:13:01
支持原创!
回复

使用道具

P4 | 发表于 2017-3-15 09:25:20
感谢分享
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈