您的位置:首页 > 数据库 > Oracle

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、现在开始可以执行一些检查操作了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐