RMAN DUPLICATE TARGET DATABASE FOR STANDBY(Active Dataguard) FROM ACTIVE DATABASE (Oracle 11g)
2013-06-13 16:25
681 查看
实验环境:
Primary数据库服务器:utf11g
Primary Database:utf11g
Standby数据库服务器:zhs11g
Standby Database:utf11dg
Primary and Standby OS Platform:rhel 5.6 x86-64
步骤如下:
1、添加Primary数据库的Listener
PRIMARY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.220)(PORT = 1522))
)
)
ADR_BASE_DGTDB = /soft/oracle
#Static Listener
SID_LIST_PRIMARY =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /soft/oracle/product/11.2.0/db_1)
(SID_NAME = utf11g)
)
)
2、添加Standby数据库的Listener
STANDBY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.221)(PORT = 1522))
)
)
ADR_BASE_DGTDB = /soft/oracle
#Static Listener
SID_LIST_STANDBY =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /soft/oracle/product/11.2.0/db_1)
(SID_NAME = utf11g)
)
)
3、给Primary和Standby都添加如下TNS名称
PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.220)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = utf11g)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.221)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = utf11g)
(UR = A)
)
)
4、分别在Primary和Standby服务器上启动上面步骤添加的监听
lsnrctl start primary
lsnrctl start standby
5、为主库添加Standby日志组
alter database add standby logfile '/soft/oracle/oradata/utf11g/stb.redo01.log' size 128M;
alter database add standby logfile '/soft/oracle/oradata/utf11g/stb.redo02.log' size 128M;
alter database add standby logfile '/soft/oracle/oradata/utf11g/stb.redo03.log' size 128M;
alter database add standby logfile '/soft/oracle/oradata/utf11g/stb.redo04.log' size 128M;
6、修改主库的一下参数
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(utf11g,utf11dg)';
alter system set standby_file_management='AUTO';
alter system set log_archive_dest_1='location=/backup/arclog';
alter system set log_archive_dest_2='service=standby lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=utf11dg net_timeout=30 reopen=40 max_failure=3';
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;
alter system set FAL_SERVER='standby';
alter system set FAL_CLIENT='primary';
shutdown immediate
startup
7、检查Primary数据库是否已开启归档模式以及激活强制日志,否则使用以下命令修改之
alter database force logging;
shutdown immediate
--archivelog
startup mount
alter database archivelog;
alter database open;
8、创建一个pfile用于Standby数据库,并copy到Standby数据库服务器上
create pfile='?/dbs/$ORACLE_SID.ora' from spfile;
scp $ORACLE_HOME/dbs/$ORACLE_SID.ora zhs11g:$ORACLE_HOME/dbs/init$ORACLE_SID.ora
9、可以直接使用Primary数据库上的密码文件,也可以重新创建
scp $ORACLE_HOME/dbs/orapw$ORACLE_SID zhs11g:$ORACLE_HOME/dbs
使用如下命令创建:
cd $ORACLE_HOME/dbs
orapwd file=orapw$ORACLE_SID password=oracle
10、在Standby服务器上创建必须的目录结构
export ORACLE_SID=utf11g
export ORACLE_UNQNAME=utf11dg
mkdir -p $ORACLE_BASE/admin
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/scripts
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump
mkdir -p $ORACLE_BASE/oradata
mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID
mkdir -p $ORACLE_BASE/flash_recovery_area/$ORACLE_SID
mkdir -p $ORACLE_BASE/diag/rdbms
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/alert
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/stage
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/trace
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/sweep
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/incpkg
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/ir
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/cdump
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/hm
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/incident
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/lck
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/metadata
11、修改Standby上的pfile中的如下参数:
*.db_unique_name='utf11dg'
*.service_names='utf11g'
*.fal_server='primary'
*.fal_client='standby'
*.log_archive_dest_2='service=primary lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=utf11g net_timeout=30 reopen=40 max_failure=3'
*.log_file_name_convert='/soft/oracle/oradata/utf11g','/soft/oracle/oradata/utf11dg'
*.db_file_name_convert='/soft/oracle/oradata/utf11g','/soft/oracle/oradata/utf11dg'
12、以上述pfile启动Standby实例至nomount状态
startup nomount pfile='?/dbs/init$ORACLE_SID.ora' force
注意此时不能使用spfile启动Standby实例,否则下面使用duplicate命令时会出现如下错误:
Error:
Starting Duplicate Db at 2013-06-13 14:41:47
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 06/13/2013 14:41:47
RMAN-05501: aborting duplication of target database
RMAN-05537: DUPLICATE without TARGET connection when auxiliary instance is started with spfile cannot use SPFILE clause
13、在Primary数据库服务器上使用rman登录primary数据库和auxiliary数据库
rman target sys/oracle@primary auxiliary sys/oracle@standby
14、在rman命令行中执行如下命令,开始duplicate数据库至Standby
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
SPFILE
SET db_unique_name='utf11dg'
SET FAL_CLIENT='standby'
SET FAL_SERVER='primary'
SET DB_FILE_NAME_CONVERT='/soft/oracle/oradata/utf11g','/soft/oracle/oradata/utf11g'
SET LOG_FILE_NAME_CONVERT='/soft/oracle/oradata/utf11g','/soft/oracle/oradata/utf11g'
NOFILENAMECHECK;
注意:
如果Standby数据库与Primary数据库库不在同一台机器上,并且Standby数据库的在线日志文件路径与目标库相同,则运行duplicate命令时必须指定 NOFILENAMECHECK 参数以避免冲突提示。原因是此处oracle不知道你要恢复的路径是在另一台机器上,它只关心要恢复到的路径会不会和Primary数据库的一样?会不会是要覆盖Primary数据库啊,为了避免这种情形,于是它就报错 。 所以一旦异机恢复,并且路径相同,那么必须通过指定NOFILENAMECHECK来避免oracle的自动识别。
15、现在可以在Standby数据库上Open了
alter database open;
16、在Standby上应用日志
alter database recover managed standby database cancel;
alter database recover managed standby database using current logfile disconnect from session;
17、现在开始可以执行一些检查操作了
Primary数据库服务器:utf11g
Primary Database:utf11g
Standby数据库服务器:zhs11g
Standby Database:utf11dg
Primary and Standby OS Platform:rhel 5.6 x86-64
步骤如下:
1、添加Primary数据库的Listener
PRIMARY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.220)(PORT = 1522))
)
)
ADR_BASE_DGTDB = /soft/oracle
#Static Listener
SID_LIST_PRIMARY =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /soft/oracle/product/11.2.0/db_1)
(SID_NAME = utf11g)
)
)
2、添加Standby数据库的Listener
STANDBY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.221)(PORT = 1522))
)
)
ADR_BASE_DGTDB = /soft/oracle
#Static Listener
SID_LIST_STANDBY =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /soft/oracle/product/11.2.0/db_1)
(SID_NAME = utf11g)
)
)
3、给Primary和Standby都添加如下TNS名称
PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.220)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = utf11g)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.221)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = utf11g)
(UR = A)
)
)
4、分别在Primary和Standby服务器上启动上面步骤添加的监听
lsnrctl start primary
lsnrctl start standby
5、为主库添加Standby日志组
alter database add standby logfile '/soft/oracle/oradata/utf11g/stb.redo01.log' size 128M;
alter database add standby logfile '/soft/oracle/oradata/utf11g/stb.redo02.log' size 128M;
alter database add standby logfile '/soft/oracle/oradata/utf11g/stb.redo03.log' size 128M;
alter database add standby logfile '/soft/oracle/oradata/utf11g/stb.redo04.log' size 128M;
6、修改主库的一下参数
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(utf11g,utf11dg)';
alter system set standby_file_management='AUTO';
alter system set log_archive_dest_1='location=/backup/arclog';
alter system set log_archive_dest_2='service=standby lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=utf11dg net_timeout=30 reopen=40 max_failure=3';
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;
alter system set FAL_SERVER='standby';
alter system set FAL_CLIENT='primary';
shutdown immediate
startup
7、检查Primary数据库是否已开启归档模式以及激活强制日志,否则使用以下命令修改之
alter database force logging;
shutdown immediate
--archivelog
startup mount
alter database archivelog;
alter database open;
8、创建一个pfile用于Standby数据库,并copy到Standby数据库服务器上
create pfile='?/dbs/$ORACLE_SID.ora' from spfile;
scp $ORACLE_HOME/dbs/$ORACLE_SID.ora zhs11g:$ORACLE_HOME/dbs/init$ORACLE_SID.ora
9、可以直接使用Primary数据库上的密码文件,也可以重新创建
scp $ORACLE_HOME/dbs/orapw$ORACLE_SID zhs11g:$ORACLE_HOME/dbs
使用如下命令创建:
cd $ORACLE_HOME/dbs
orapwd file=orapw$ORACLE_SID password=oracle
10、在Standby服务器上创建必须的目录结构
export ORACLE_SID=utf11g
export ORACLE_UNQNAME=utf11dg
mkdir -p $ORACLE_BASE/admin
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/scripts
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump
mkdir -p $ORACLE_BASE/oradata
mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID
mkdir -p $ORACLE_BASE/flash_recovery_area/$ORACLE_SID
mkdir -p $ORACLE_BASE/diag/rdbms
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/alert
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/stage
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/trace
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/sweep
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/incpkg
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/ir
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/cdump
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/hm
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/incident
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/lck
mkdir -p $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME/$ORACLE_SID/metadata
11、修改Standby上的pfile中的如下参数:
*.db_unique_name='utf11dg'
*.service_names='utf11g'
*.fal_server='primary'
*.fal_client='standby'
*.log_archive_dest_2='service=primary lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=utf11g net_timeout=30 reopen=40 max_failure=3'
*.log_file_name_convert='/soft/oracle/oradata/utf11g','/soft/oracle/oradata/utf11dg'
*.db_file_name_convert='/soft/oracle/oradata/utf11g','/soft/oracle/oradata/utf11dg'
12、以上述pfile启动Standby实例至nomount状态
startup nomount pfile='?/dbs/init$ORACLE_SID.ora' force
注意此时不能使用spfile启动Standby实例,否则下面使用duplicate命令时会出现如下错误:
Error:
Starting Duplicate Db at 2013-06-13 14:41:47
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 06/13/2013 14:41:47
RMAN-05501: aborting duplication of target database
RMAN-05537: DUPLICATE without TARGET connection when auxiliary instance is started with spfile cannot use SPFILE clause
13、在Primary数据库服务器上使用rman登录primary数据库和auxiliary数据库
rman target sys/oracle@primary auxiliary sys/oracle@standby
14、在rman命令行中执行如下命令,开始duplicate数据库至Standby
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
SPFILE
SET db_unique_name='utf11dg'
SET FAL_CLIENT='standby'
SET FAL_SERVER='primary'
SET DB_FILE_NAME_CONVERT='/soft/oracle/oradata/utf11g','/soft/oracle/oradata/utf11g'
SET LOG_FILE_NAME_CONVERT='/soft/oracle/oradata/utf11g','/soft/oracle/oradata/utf11g'
NOFILENAMECHECK;
注意:
如果Standby数据库与Primary数据库库不在同一台机器上,并且Standby数据库的在线日志文件路径与目标库相同,则运行duplicate命令时必须指定 NOFILENAMECHECK 参数以避免冲突提示。原因是此处oracle不知道你要恢复的路径是在另一台机器上,它只关心要恢复到的路径会不会和Primary数据库的一样?会不会是要覆盖Primary数据库啊,为了避免这种情形,于是它就报错 。 所以一旦异机恢复,并且路径相同,那么必须通过指定NOFILENAMECHECK来避免oracle的自动识别。
15、现在可以在Standby数据库上Open了
alter database open;
16、在Standby上应用日志
alter database recover managed standby database cancel;
alter database recover managed standby database using current logfile disconnect from session;
17、现在开始可以执行一些检查操作了
相关文章推荐
- 11g rman新特性 duplicate target database for standby from active database
- Oracle 11g Data Guard 使用duplicate from active database 创建 standby database
- Oracle: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 11gR2 使用 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]
- Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
- 关于 rman duplicate from active database 搭建dataguard--系列一
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
- 关于 rman duplicate from active database 搭建dataguard--系列一
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- 11g RMAN duplicate from active database
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]
- Oracle 11gR2 使用 RMAN duplicate from active 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 推荐
- 转: Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
- How to create physical standby database with 11g RMAN DUPLICATE FROM ACTIVE DATABASE [ID 747250.1]