Oracle版本:11.1.0.6 for Linux x86_64
首先dcba创建了2个库,一个prdb,一个pstdb,这样省去创建standby数据库文件夹和密码文件的步骤。这当中还碰到个小问题,创建完数据库迟迟看不到监听注册2个实例。于是一看listener.log,只发现了一些Subscription for node down event still pending信息,这个是老毛病了,在listener.ora里加上SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF就ok了,继续看,发现了- -hosts文件里的主机名和现在的hostname不匹配,好像IDC刚集体改过hostname。修正问题,监听注册上了,配了下tnsnames,让2个实例可以用sys互相连接。
接下来开始修改主库归档模式和一些参数,发现了11g中STANDBY_ARCHIVE_DEST参数已经被废弃。其实10g的时候随着unique_db_name和log_config等参数加入就觉得这个参数估计活不长了- -果然现在被拿掉了。
alter system set log_archive_dest_1='location=/u02/arch/prdb valid_for=(all_logfiles,all_roles) db_unique_name=prdb' scope=both;
alter system set fal_client='prdb' scope=both;
alter system set fal_server='pstdb' scope=both;
alter system set db_file_name_convert='pstdb','prdb' scope=spfile;
alter system set log_file_name_convert='pstdb','prdb' scope=spfile;
alter system set standby_file_management=auto scope=both;
alter system set db_unique_name='prdb' scope=spfile;
alter system set log_archive_dest_2='service=pstdb reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=prdb' scope=both;
修改完重启主库
备库么直接startup nomount就可以了
这里有一个问题:duplicate target database for standby from active database是需要使用net service name连接的,如果使用SID连接会报下面的错误:
ORACLE_SID=pstdb
rman target sys/xxx@prdb auxiliary /
RMAN-06217: not connected to auxiliary database with a net service name
但问题是,instance在mount/nomount阶段,net service name是blocked的,直接使用net service name连接又会发生别的错误:
rman target sys/xxx@prdb auxiliary sys/xxx@pstdb
RMAN-04006: error from auxiliary database
ORA-12528: TNS:listener: all appropriate instances are blocking new connections
那么如何解决呢,其实只要修改监听的配置文件listener.ora,加一个静态注册就可以了:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = pstdb)
(ORACLE_HOME = /u01/app/product/11g/db_1)
(SID_NAME = pstdb)
)
)
另外tnsname.ora里修改成:
pstdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pstdb)(UR=A)
)
)
也可以连接mount状态的instance,包括ASM的实例哦
做好这些工作以后,接下来的工作很方便了
在standby端:
rman target sys/nyqs8ap@prdb auxiliary sys/nyqs8ap@pstdb
连接后运行下面的脚本,RMAN会自动完成建立控制文件,参数文件,拷贝数据文件的工作。
run {
allocate channel prmy1 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
spfile
parameter_value_convert 'prdb','pstdb'
set db_unique_name='pstdb'
set db_file_name_convert='/prdb/','/pstdb/'
set log_file_name_convert='/prdb/','/pstdb/'
set control_files='/u02/oradata/pstdb/control01.ctl'
set fal_client='pstdb'
set fal_server='prdb'
set standby_file_management='AUTO'
set log_archive_dest_1='location=/u02/arch/pstdb valid_for=(all_logfiles,all_roles) db_unique_name=prdb'
set log_archive_dest_2='service=prdb ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=prdb'
;
}
执行完毕后,添加Real-time query需要的standby redo log:
alter database add standby logfile '/u02/oradata/pstdb/stdbyredo01.log' size 50m;
alter database add standby logfile '/u02/oradata/pstdb/stdbyredo02.log' size 50m;
alter database add standby logfile '/u02/oradata/pstdb/stdbyredo03.log' size 50m;
alter database recover managed standby database disconnect from session;
alter database recover managed standby database cancel;
ALTER DATABASE OPEN;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
dataguard就开始Real-time Apply了,验证数据就自己来吧
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-672521/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-672521/
本文介绍在Oracle 11g环境下搭建Dataguard的详细步骤,并启用Real-time Query功能,实现物理备用库的稳定性和逻辑备用库的数据查询能力。
1296

被折叠的 条评论
为什么被折叠?



