11g DG使用duplicate from active database 创建 物理 standby database
2014-06-13 11:36
525 查看
1.1 Enable ForcedLogging
select FORCE_LOGGING from v$database;
alter database force logging;
1.2 Configure Redotransport Authentication
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SIDpassword=redhat entries=10 force=yes
1.3 Configure thePrimary Database to Receive Redo data
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog1.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog2.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog3.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog4.rdo') SIZE 50M;
select * from V$STANDBY_LOG
1.4 创建主库归档目录
[root@primary ~]# mkdir -p /archivelog/primary/
[root@primary ~]# chown -R oracle:oinstall /archivelog/primary/
1.5 设置主库初始化参数
DB_NAME=primary
DB_UNIQUE_NAME=primary
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/primary/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_2='SERVICE=standby ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
FAL_SERVER=standby
STANDBY_FILE_MANAGEMENT=AUTO
1.6 启用主库归档模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
1.7:创建listener.ora和tnsnames.ora
[oracle@primary dbs]$cd /u01/oracle/product/11g/network/admin/
[oracle@primaryadmin]$ vi listener.ora
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = primary)
(ORACLE_HOME = /u01/app/oracle/product/11g)
(SID_NAME = primary)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER =/u01/app/oracle
[oracle@primaryadmin]$ vitnsnames.ora
PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.50)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = primary)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.51)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)
备库准备:
1:创建好linstener 和 tnsnames
2:在备库上创建相应的目录并复制相应的文件到备库
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/adump
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/dpdump
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/pfile
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/oradata/primary
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/fast_recovery_area/primary
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/diag/rdbms/primary/primary
3:创建 pfile 填写dbname
DB_NAME=primary
DB_UNIQUE_NAME=standby
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/standby/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_2='SERVICE=primary ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_FORMAT=s%t_%s_%r.arc
FAL_SERVER=primary
STANDBY_FILE_MANAGEMENT=AUTO
4:创建密码文件或者从主库复制过来改下名字
5:启动备用数据库到nomount状态
开始用RMAN恢复
rman target
sys/redhat@primary auxiliarysys/redhat@standby
duplicate target database for standby from active database dorecover nofilenamecheck;
此时有可能会报如下错误
解决方法是修改备库参数文件
compatible='11.2.0.4.0'
然后重新duplicate
上面有很多警告关于日志文件的 当你到备库的oradata目录下发现 没有日志文件生成:
有两种解决方式:
1:在duplicate之前 主库和备库的参数文件里添加
LOG_FILE_NAME_CONVERT=/u01/app/oracle/oradata/primary,/u01/app/oracle/oradata/primary
大家看到了 就算目录一样也要添加。。
2:在备库上操作重建备库的online redo log
SQL>create spfile from pfile;
File created.
SQL>shutdown immediate
SQL>startup
alter system set standby_file_management=manual;
alter system set LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/primary','/u01/app/oracle/oradata/primary' scope=spfile;
shutdown immediate;
startup;
alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;
alter system reset LOG_FILE_NAME_CONVERT;
shutdown immediate;
startup;
alter system set standby_file_management=auto;
select FORCE_LOGGING from v$database;
alter database force logging;
1.2 Configure Redotransport Authentication
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SIDpassword=redhat entries=10 force=yes
1.3 Configure thePrimary Database to Receive Redo data
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog1.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog2.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog3.rdo') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE('/u01/app/oracle/oradata/primary/slog4.rdo') SIZE 50M;
select * from V$STANDBY_LOG
1.4 创建主库归档目录
[root@primary ~]# mkdir -p /archivelog/primary/
[root@primary ~]# chown -R oracle:oinstall /archivelog/primary/
1.5 设置主库初始化参数
DB_NAME=primary
DB_UNIQUE_NAME=primary
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/primary/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_2='SERVICE=standby ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
FAL_SERVER=standby
STANDBY_FILE_MANAGEMENT=AUTO
1.6 启用主库归档模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
1.7:创建listener.ora和tnsnames.ora
[oracle@primary dbs]$cd /u01/oracle/product/11g/network/admin/
[oracle@primaryadmin]$ vi listener.ora
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = primary)
(ORACLE_HOME = /u01/app/oracle/product/11g)
(SID_NAME = primary)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER =/u01/app/oracle
[oracle@primaryadmin]$ vitnsnames.ora
PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.50)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = primary)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.51)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)
备库准备:
1:创建好linstener 和 tnsnames
2:在备库上创建相应的目录并复制相应的文件到备库
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/adump
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/dpdump
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/admin/primary/pfile
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/oradata/primary
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/fast_recovery_area/primary
[oracle@standbyoracle]$ mkdir -p $ORACLE_BASE/diag/rdbms/primary/primary
3:创建 pfile 填写dbname
DB_NAME=primary
DB_UNIQUE_NAME=standby
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/standby/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_2='SERVICE=primary ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_FORMAT=s%t_%s_%r.arc
FAL_SERVER=primary
STANDBY_FILE_MANAGEMENT=AUTO
4:创建密码文件或者从主库复制过来改下名字
5:启动备用数据库到nomount状态
开始用RMAN恢复
rman target
sys/redhat@primary auxiliarysys/redhat@standby
duplicate target database for standby from active database dorecover nofilenamecheck;
此时有可能会报如下错误
sql statement: alter database mount standby database RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of Duplicate Db command at 06/13/2014 01:44:17 RMAN-05501: aborting duplication of target database RMAN-03015: error occurred in stored script Memory Script RMAN-03009: failure of sql command on clone_default channel at 06/13/2014 01:44:17 RMAN-11003: failure during parse/execution of SQL statement: alter database mount standby database ORA-00201: control file version 11.2.0.4.0 incompatible with ORACLE version 11.2.0.0.0 ORA-00202: control file: '/u01/app/oracle/product/11g/dbs/cntrlstandby.dbf'
解决方法是修改备库参数文件
compatible='11.2.0.4.0'
然后重新duplicate
RMAN> duplicate target database for standby from active database dorecover nofilenamecheck; Starting Duplicate Db at 13-JUN-14 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/11g/dbs/orapwprimary' auxiliary format '/u01/app/oracle/product/11g/dbs/orapwstandby' ; } executing Memory Script Starting backup at 13-JUN-14 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=39 device type=DISK Finished backup at 13-JUN-14 contents of Memory Script: { backup as copy current controlfile for standby auxiliary format '/u01/app/oracle/product/11g/dbs/cntrlstandby.dbf'; } executing Memory Script Starting backup at 13-JUN-14 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy copying standby control file output file name=/u01/app/oracle/product/11g/dbs/snapcf_primary.f tag=TAG20140613T014925 RECID=6 STAMP=850096165 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 Finished backup at 13-JUN-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/primary/temp01.dbf"; switch clone tempfile all; set newname for datafile 1 to "/u01/app/oracle/oradata/primary/system01.dbf"; set newname for datafile 2 to "/u01/app/oracle/oradata/primary/sysaux01.dbf"; set newname for datafile 3 to "/u01/app/oracle/oradata/primary/undotbs01.dbf"; set newname for datafile 4 to "/u01/app/oracle/oradata/primary/users01.dbf"; backup as copy reuse datafile 1 auxiliary format "/u01/app/oracle/oradata/primary/system01.dbf" datafile 2 auxiliary format "/u01/app/oracle/oradata/primary/sysaux01.dbf" datafile 3 auxiliary format "/u01/app/oracle/oradata/primary/undotbs01.dbf" datafile 4 auxiliary format "/u01/app/oracle/oradata/primary/users01.dbf" ; sql 'alter system archive log current'; } executing Memory Script executing command: SET NEWNAME renamed tempfile 1 to /u01/app/oracle/oradata/primary/temp01.dbf in control file executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting backup at 13-JUN-14 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile file number=00001 name=/u01/app/oracle/oradata/primary/system01.dbf output file name=/u01/app/oracle/oradata/primary/system01.dbf tag=TAG20140613T014934 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:16 channel ORA_DISK_1: starting datafile copy input datafile file number=00002 name=/u01/app/oracle/oradata/primary/sysaux01.dbf output file name=/u01/app/oracle/oradata/primary/sysaux01.dbf tag=TAG20140613T014934 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:15 channel ORA_DISK_1: starting datafile copy input datafile file number=00003 name=/u01/app/oracle/oradata/primary/undotbs01.dbf output file name=/u01/app/oracle/oradata/primary/undotbs01.dbf tag=TAG20140613T014934 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25 channel ORA_DISK_1: starting datafile copy input datafile file number=00004 name=/u01/app/oracle/oradata/primary/users01.dbf output file name=/u01/app/oracle/oradata/primary/users01.dbf tag=TAG20140613T014934 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 Finished backup at 13-JUN-14 sql statement: alter system archive log current contents of Memory Script: { backup as copy reuse archivelog like "/archivelog/primary/1_21_849845139.arc" auxiliary format "/archivelog/standby/s1_21_849845139.arc" archivelog like "/archivelog/primary/1_22_849845139.arc" auxiliary format "/archivelog/standby/s1_22_849845139.arc" ; catalog clone archivelog "/archivelog/standby/s1_21_849845139.arc"; catalog clone archivelog "/archivelog/standby/s1_22_849845139.arc"; switch clone datafile all; } executing Memory Script Starting backup at 13-JUN-14 using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log copy input archived log thread=1 sequence=21 RECID=8 STAMP=850096175 output file name=/archivelog/standby/s1_21_849845139.arc RECID=0 STAMP=0 channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting archived log copy input archived log thread=1 sequence=22 RECID=9 STAMP=850096353 output file name=/archivelog/standby/s1_22_849845139.arc RECID=0 STAMP=0 channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01 Finished backup at 13-JUN-14 cataloged archived log archived log file name=/archivelog/standby/s1_21_849845139.arc RECID=1 STAMP=850096352 cataloged archived log archived log file name=/archivelog/standby/s1_22_849845139.arc RECID=2 STAMP=850096352 datafile 1 switched to datafile copy input datafile copy RECID=6 STAMP=850096352 file name=/u01/app/oracle/oradata/primary/system01.dbf datafile 2 switched to datafile copy input datafile copy RECID=7 STAMP=850096352 file name=/u01/app/oracle/oradata/primary/sysaux01.dbf datafile 3 switched to datafile copy input datafile copy RECID=8 STAMP=850096352 file name=/u01/app/oracle/oradata/primary/undotbs01.dbf datafile 4 switched to datafile copy input datafile copy RECID=9 STAMP=850096352 file name=/u01/app/oracle/oradata/primary/users01.dbf contents of Memory Script: { set until scn 331258; recover standby clone database delete archivelog ; } executing Memory Script executing command: SET until clause Starting recover at 13-JUN-14 using channel ORA_AUX_DISK_1 starting media recovery archived log for thread 1 with sequence 21 is already on disk as file /archivelog/standby/s1_21_849845139.arc archived log for thread 1 with sequence 22 is already on disk as file /archivelog/standby/s1_22_849845139.arc archived log file name=/archivelog/standby/s1_21_849845139.arc thread=1 sequence=21 archived log file name=/archivelog/standby/s1_22_849845139.arc thread=1 sequence=22 media recovery complete, elapsed time: 00:00:00 Finished recover at 13-JUN-14 ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/primary/redo01.log' RMAN-05535: WARNING: All redo log files were not defined properly. ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/primary/redo02.log' RMAN-05535: WARNING: All redo log files were not defined properly. ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/primary/redo03.log' RMAN-05535: WARNING: All redo log files were not defined properly. ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed ORA-00312: online log 4 thread 0: '/u01/app/oracle/oradata/primary/slog1.rdo' RMAN-05535: WARNING: All redo log files were not defined properly. ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed ORA-00312: online log 5 thread 0: '/u01/app/oracle/oradata/primary/slog2.rdo' RMAN-05535: WARNING: All redo log files were not defined properly. ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed ORA-00312: online log 6 thread 0: '/u01/app/oracle/oradata/primary/slog3.rdo' RMAN-05535: WARNING: All redo log files were not defined properly. ORACLE error from auxiliary database: ORA-19527: physical standby redo log must be renamed ORA-00312: online log 7 thread 0: '/u01/app/oracle/oradata/primary/slog4.rdo' RMAN-05535: WARNING: All redo log files were not defined properly. Finished Duplicate Db at 13-JUN-14
上面有很多警告关于日志文件的 当你到备库的oradata目录下发现 没有日志文件生成:
有两种解决方式:
1:在duplicate之前 主库和备库的参数文件里添加
LOG_FILE_NAME_CONVERT=/u01/app/oracle/oradata/primary,/u01/app/oracle/oradata/primary
大家看到了 就算目录一样也要添加。。
2:在备库上操作重建备库的online redo log
SQL>create spfile from pfile;
File created.
SQL>shutdown immediate
SQL>startup
alter system set standby_file_management=manual;
alter system set LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/primary','/u01/app/oracle/oradata/primary' scope=spfile;
shutdown immediate;
startup;
alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;
alter system reset LOG_FILE_NAME_CONVERT;
shutdown immediate;
startup;
alter system set standby_file_management=auto;
相关文章推荐
- Oracle 11g Data Guard 使用duplicate from active database 创建物理DG
- Oracle 11g Data Guard 使用duplicate from active database 创建 standby database .
- Oracle 11g Data Guard 使用duplicate from active database 创建 standby database
- Oracle 11g Data Guard 使用duplicate from active database 创建 standby database
- Oracle 11G 使用duplicate from active database 创建DG
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- Oracle:How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- 使用 RMAN DUPLICATE...FROM ACTIVE DATABASE 创建物理备用数据库(文档 ID 1526160.1)
- 使用 RMAN DUPLICATE...FROM ACTIVE DATABASE 创建物理备用数据库的分步指南
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- Oracle 11g Data Guard 使用duplicate from active database 创建 standby database 推荐
- Oracle 11g Data Guard 使用duplicate from active database 创建 standby database
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- Oracle 11g Data Guard 使用duplicate from active database 创建 standby database