...
由于希望测试一个DG问题,所以在Vmware上搭建测试环境,primary和standby放在同一台主机上。搭建过程就不赘述,但是在最后,遇到了一些问题,这里记录一下,以备
由于希望测试一个DG问题,所以在Vmware上搭建测试环境,primary和standby放在同一台主机上。
搭建过程就不赘述,,但是在最后,遇到了一些问题,这里记录一下,以备后续查阅。
----搭建过程中的一些命令-----
1. backup database format '/tmp/bk_%U';
2. backup current controlfile for standby format '/tmp/stdbyctl.bkp';
3. catalog start with '/tmp/';
4. set controlfile autobackup format for device type disk to '/tmp/%F';
restore standby controlfile from '/tmp/stdbyctl.bkp';
5. RMAN> CONNECT TARGET SYS/oracle@db;
RMAN> CONNECT AUXILIARY SYS/oracle@stddb;
6. 最会std的pfile文件内容
db_file_name_convert= '+data/db/','+reco/stddb/'
log_file_name_convert= '+RECO/db/archivelog/','+RECO/stddb/archivelog_std/'
log_archive_format=%t_%s_%r.arc
standby_file_management=auto
compatible='11.2.0.0.0'
control_files='+RECO/stddb/controlfile/current.260.834947597' 问题一:
在设置listener的过程中,由于设定静态监听,在standby启动之后,同时又会注册一个动态监听,目前有两个监听,其中动态监听状态为blocked。
遇到的问题就是,在duplicate连接的时候,就会发生ORA-12528错误,而不能正常连接到standby。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[oracle@OEL ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 30-DEC-2013 10:46:03
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias
LISTENER
Version
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date
27-NOV-2013 12:40:26
Uptime
32 days 22 hr. 5 min. 37 sec
Trace Level
off
Security
ON: Local OS Authentication
SNMP
OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File
/u01/app/oracle/diag/tnslsnr/OEL/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OEL.localdomain)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "PRIMDB" has 1 instance(s).
Instance "db", status READY, has 1 handler(s) for this service...
Service "dbXDB" has 1 instance(s).
Instance "db", status READY, has 1 handler(s) for this service...
Service "stbdb" has 1 instance(s).
Instance "stbdb", status UNKNOWN, has 1 handler(s) for this service... 通过设置tnsnames.ora,可以解决这个问题。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stddb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = OEL.localdomain)(PORT = 1521))
)
(CONNECT_DATA = (SERVICE_NAME = stddb)(UR=A)) 问题二:
在执行下面命令之后,直接primary就crash掉,经过查询alert发现,是redo broken导致的
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
查询standby alert,发现如下信息:
(在ALTER DATABASE RECOVER...开始之后,第一件事情就是clear redo log,这样就直接导致primary crash)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# tail -f alert_stddb.log
Clearing online redo logfile 1 complete
Clearing online redo logfile 2 +DATA/db/redo02.log
Clearing online log 2 of thread 1 sequence number 5
Clearing online redo logfile 2 complete
Clearing online redo logfile 3 +DATA/db/redo03.log
Clearing online log 3 of thread 1 sequence number 3
Tue Dec 24 14:32:49 2013
Clearing online redo logfile 3 complete
Tue Dec 24 14:32:49 2013
Media Recovery Waiting for thread 1 sequence 4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在重建几次之后,问题依然。
由于datafile和archivelog都使用convert参数转换了,但是redo是无法转换的,如何解决这个问题呢?
经过分析,发现在duplicate的最后,有一些警告信息:
~~~~~~~~~duplicate the standby databsae~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RMAN> CONNECT TARGET SYS/oracle@db;
RMAN> CONNECT AUXILIARY SYS/oracle@stddb;
connected to auxiliary database: DB (not mounted)
RMAN> duplicate target database for standby;
Starting Duplicate Db at 24-DEC-13
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=13 device type=DISK
contents of Memory Script:
{
restore clone standby controlfile;
}
executing Memory Script
Starting restore at 24-DEC-13
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece /tmp/stdbyctl.bkp
channel ORA_AUX_DISK_1: piece handle=/tmp/stdbyctl.bkp tag=TAG20131224T133449
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:08
output file name=+RECO/stddb/controlfile/current.259.835018533
Finished restore at 24-DEC-13
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
"+RECO/stddb/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"+RECO/stddb/system01.dbf";
set newname for datafile 2 to
"+RECO/stddb/sysaux01.dbf";
set newname for datafile 3 to
"+RECO/stddb/undotbs01.dbf";
set newname for datafile 4 to
"+RECO/stddb/users01.dbf";
restore
clone database
;
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to +RECO/stddb/temp01.dbf in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 24-DEC-13
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to +RECO/stddb/system01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00002 to +RECO/stddb/sysaux01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to +RECO/stddb/undotbs01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to +RECO/stddb/users01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /tmp/bk_01osanei_1_1
channel ORA_AUX_DISK_1: piece handle=/tmp/bk_01osanei_1_1 tag=TAG20131224T132953
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:04:27
Finished restore at 24-DEC-13
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=1 STAMP=835019033 file name=+RECO/stddb/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=2 STAMP=835019033 file name=+RECO/stddb/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=3 STAMP=835019033 file name=+RECO/stddb/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=4 STAMP=835019033 file name=+RECO/stddb/users01.dbf
ORACLE error from auxiliary database: ORA-01511: error in renaming log/data files
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。