搭建DG要求主备库数据库版本一致
RAC+DG / Linux 5.7(64-bit) /数据库版本:11.2.0.2
首先主库RMAN进行全库备份,FTP到备机
$rman target /
RMAN> backup format ‘/bak/20111013bak/full_%t_%s_%p’ database plus archivelog;
传到备机后更改下绝对路径和权限。
主库(生产库)环境配置:
监听tnsnames.ora(两个节点都需要进行配置,事实上sampdb的TNS/IP为scan-ip):
SAMPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.6)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sampdb)
)
)
rzsampdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sampdb)
)
)
数据库:
alter database force logging;
spfile参数修改:
SQL> alter system set log_archive_config=’DG_CONFIG=(sampdb,rzsampdb)’ scope=both;
SQL> alter system set LOG_ARCHIVE_DEST_1= ‘LOCATION=+DATADG/sampdb/ARCHLOG VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sampdb’ scope=both;
SQL> alter system set LOG_ARCHIVE_DEST_2= ‘SERVICE=rzsampdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rzsampdb’ scope=both;
SQL> alter system set FAL_SERVER=rzsampdb scope =both;
SQL> alter system set FAL_CLIENT=’sampdb’ scope=both;
SQL> alter system set STANDBY_FILE_MANAGEMENT=auto scope=both;
以下两个参数需重启数据库,只在角色切换后有用,主库角色暂时不需要
DB_FILE_NAME_CONVERT=’/Tbackup/sampdb/oradata/’,'+DATADG/sampdb/datafile/’
LOG_FILE_NAME_CONVERT= ‘/Tbackup/sampdb/oradata/’,'+DATADG/sampdb/onlinelog/’,'/Tbackup/sampdb/oradata/’,'+FRADG/sampdb/onlinelog/’ //节点1,2
ALTER SYSTEM SET DB_FILE_NAME_CONVERT=’/oradata/sampdb’,'+DG’ SCOPE=SPFILE;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT=’/oradata/sampdb’,'+DG’ SCOPE=SPFILE;
完整的需要修改的参数如下:
DB_NAME=sampdb
DB_UNIQUE_NAME=sampdb
LOG_ARCHIVE_CONFIG=’DG_CONFIG=(sampdb,rzsampdb)’
control_files=’/oradata/sampdb/control01.ctl’,'/oradata/sampdb/control02.ctl’,'/oradata/sampdb/control03.ctl’
LOG_ARCHIVE_DEST_1= ‘LOCATION=+DG VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary’
LOG_ARCHIVE_DEST_2= ‘SERVICE=rzsampdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rzsampdb’
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30
#以下参数主要是用于主备库的转换的。
FAL_SERVER=rzsampdb
FAL_CLIENT=sampdb
#DB_FILE_NAME_CONVERT=’/oradata/sampdb’,'primary’
#LOG_FILE_NAME_CONVERT= ‘/arch1/standby/’,'/arch1/primary/’,'/arch2/standby/’,'/arch2/primary/’ //节点1,2
STANDBY_FILE_MANAGEMENT=AUTO
备库端操作:
注意数据文件路径可以自己定义,建议如果有参照,可以根据参照来。这里按照客户其它2个生产库的DBRA在备机上数据文件的路径设置,以方便后期的实施
检查listener.ora,监听是否已配置
建议从主库拷贝tnsnames.ora到备库
检查orapworcl密码文件
从主库节点一create pfile from spfile,拷贝到备机$ORACLE_HOME/dbs下,将initsamp1.ora改为initsamp.ora
修改initsamp.ora内容
*.audit_file_dest=’/oracle/admin/sampdb/adump’
*.audit_trail=’db’
*.compatible=’11.2.0.0.0′
*.control_files=’/Tbackup/sampdb/oradata/dbracontrol01.ctl’,'/Tbackup/sampdb/oradata/dbracontrol02.ctl’
*.db_block_size=8192
*.db_create_file_dest=’/Tbackup/sampdb/oradata/’
*.db_domain=”
*.db_name=’sampdb’
*.DB_UNIQUE_NAME=rzsampdb
*.diagnostic_dest=’/oracle’
*.fal_client=’RZsampdb’
*.fal_server=’sampdb’
*.log_archive_config=’DG_CONFIG=(sampdb,rzsampdb)’
*.log_archive_dest_1=’LOCATION=/Tbackup/sampdb/archlog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rzsampdb’
*.log_archive_dest_2=’SERVICE=sampdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sampdb’
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.open_cursors=300
*.processes=2000
*.remote_login_passwordfile=’exclusive’
*.sessions=2205
*.standby_file_management=’AUTO’
*.undo_tablespace=’UNDOTBS1′
DB_FILE_NAME_CONVERT=’+DATADG/sampdb/datafile/’,'/Tbackup/sampdb/oradata/’
LOG_FILE_NAME_CONVERT= ‘+DATADG/sampdb/onlinelog/’,'/Tbackup/sampdb/oradata/’,'+FRADG/sampdb/onlinelog/’,'/Tbackup/sampdb/oradata/’
将RAC的参数删掉并修改成单实例的,同时SGA,PGA相关的参数可以全部删除ORACLE会使用默认的大小进行分配,也可以加入*.memory_target=13539213312,11g内存自动管理的一个参数
另外注意由于备库主机的限制,*.sessions=2205需要将值改小,否则启动的时候会提示shared_pool_size不够。
DG的参数采用逆向修改,db_name不变,samp和rzsamp对调。
创建数据库admin目录(可以在主库show parameter dump并参考主库的路径)
mkdir -p /Tbackup/sampdb/oradata/
mkdir -p /oracle/diag/rdbms/sampdb/sampdb/trace
mkdir -p /oracle/diag/rdbms/sampdb/sampdb/cdump
mkdir -p /oracle/diag/rdbms/sampdb/sampdb/alert
mkdir -p /oracle/admin/sampdb/adump
mkdir /Tbackup/sampdb/archlog
备库RMAN拷贝的数据先进行恢复:
SQL> startup nomount pfile=’initsamp.ora’
$rman target /
由于是拷贝过来的备份集,恢复时DBID会不同,主库的”rman target / “连的DBID记录下来
RMAN> set dbid=
RMAN> restore controlfile from ‘/bak/20111013bak/…’; (主库list backup中找到controlfile的备份集)
RMAN> alter database mount;
RMAN> run
{
allocate channel d3 type disk;
allocate channel d4 type disk;
//主库:select file_id,file_name from dba_data_files;为的是从ASM磁盘组路径改为文件系统的
set newname for datafile 1 to ‘/Tbackup/sampdb/oradata/system01.dbf’;
set newname for datafile 2 to ‘/Tbackup/sampdb/oradata/sysaux01.dbf’;
set newname for datafile 3 to ‘/Tbackup/sampdb/oradata/undotbs1.dbf’;
set newname for datafile 4 to ‘/Tbackup/sampdb/oradata/inhis_data.dbf’;
set newname for datafile 5 to ‘/Tbackup/sampdb/oradata/inhis_rep.dbf’;
set newname for datafile 6 to ‘/Tbackup/sampdb/oradata/undotbs2.dbf’;
set newname for datafile 7 to ‘/Tbackup/sampdb/oradata/users.dbf’;
restore database;
switch datafile all;
}
备库restore后,主库创建standby controlfile
alter database create standby controlfile as ‘/tmp/control.ctl’
FTP到备库
cp /tmp/control.ctl /Tbackup/sampdb/oradata/control01.ctl
cp /tmp/control.ctl /Tbackup/sampdb/oradata/control02.ctl
cp /tmp/control.ctl /Tbackup/sampdb/oradata/control03.ctl
startup nomount;
alter database mount standby database ;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
事实上经过上步完成后检查日志应用情况,会发现:此时归档能传过来,但是日志却无法应用,也没有mrp进程
尝试手工进行恢复
SQL> recover standby database ;
ORA-00283: recovery session canceled due to errors
ORA-01110: data file 1: ‘/Tbackup/sampdb/oradata/system.259.761605901′
ORA-01157: cannot identify/lock data file 1 – see DBWR trace file
ORA-01110: data file 1: ‘/Tbackup/sampdb/oradata/system.259.761605901′
与事先预想的一样,可能在恢复时文件名上会存在些问题,事实上建议也可以在之前的rman里set newname for datafile 1 to ‘/Tbackup/sampdb/oradata/system.259.761605901′;只改路径而不改名字)
DG备库的参数DB_FILE_NAME_CONVERT只是简单的将路径改了下,而文件名仍旧默认会按照主库的进行应用,这就需要新的配置手动修改到控制文件
SQL> select name from v$datafile;
NAME
——————————————————————————–
/Tbackup/sampdb/oradata/system.259.761605901
/Tbackup/sampdb/oradata/sysaux.260.761605913
/Tbackup/sampdb/oradata/undotbs1.261.761605941
/Tbackup/sampdb/oradata/inhis_data.263.761606009
/Tbackup/sampdb/oradata/inhis_rep.264.761606063
/Tbackup/sampdb/oradata/undotbs2.265.761606089
/Tbackup/sampdb/oradata/users.266.761606145
SQL> alter system set standby_file_management=manual scope=memory;
alter database rename file ‘/Tbackup/sampdb/oradata/system.259.761605901′ to ‘/Tbackup/sampdb/oradata/system01.dbf’;
alter database rename file ‘/Tbackup/sampdb/oradata/sysaux.260.761605913′ to ‘/Tbackup/sampdb/oradata/sysaux01.dbf’;
alter database rename file ‘/Tbackup/sampdb/oradata/inhis_rep.264.761606063′ to ‘/Tbackup/sampdb/oradata/inhis_rep.dbf’;
alter database rename file ‘/Tbackup/sampdb/oradata/undotbs1.261.761605941′ to ‘/Tbackup/sampdb/oradata/undotbs1.dbf’;
alter database rename file ‘/Tbackup/sampdb/oradata/inhis_data.263.761606009′ to ‘/Tbackup/sampdb/oradata/inhis_data.dbf’;
alter database rename file ‘/Tbackup/sampdb/oradata/users.266.761606145′ to ‘/Tbackup/sampdb/oradata/users.dbf’;
alter database rename file ‘/Tbackup/sampdb/oradata/undotbs2.265.761606089′ to ‘/Tbackup/sampdb/oradata/undotbs2.dbf’;
SQL> alter system set standby_file_management=auto scope=both;
之后再检查下日志的应用状况,RAC+DG的情况下会有一组日志applied状态为NO需要一直等到主库2个节点的日志都进行完切换后才进行应用。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24005010/viewspace-710278/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24005010/viewspace-710278/