duplicate报ORA-01017权限问题
环境:
OS:RedHat EnterPrise Linux 5.8 x64
Cluster:Oracle Grid 11.2.0.4
Database:Oracle Database EnterPrise 11.2.0.4
Archive:RAC+DG
今天在配置DG的过程中,前期环境都已经准备好了,就差最后一步将RAC数据duplicate到standby端,但是蹊跷的事情就在这一步发生了,尝试几次都无法将数据duplicate过去,当然我尝试通过拷贝rman备份到对端也无法完成恢复,死活就报ORA-01017错误,经过几个小时的努力,问题最终也算是得到了比较好的解决。如下:
故障现象
rmantarget sys/oracle@jetdb auxiliary sys/oracle@standby RecoveryManager: Release 11.2.0.4.0 - Production on Mon May 26 16:14:36 2014 Copyright(c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connectedto target database: JETDB (DBID=2170518470) connectedto auxiliary database: JETDB (not mounted) RMAN>duplicate target database for standby from active database nofilenamecheck ; Startingrestore at 26-MAY-14 usingtarget database control file instead of recovery catalog allocatedchannel: ORA_DISK_1 channelORA_DISK_1: SID=416 device type=DISK channelORA_DISK_1: restoring control file RMAN-00571:=========================================================== RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571:=========================================================== RMAN-03002:failure of restore command at 05/26/2014 16:14:54 ORA-19870:error while restoring backup piece /DBBackup/Phycal/stdb_cntl_0fp98vq2_1_1.bkp ORA-19504:failed to create file "+DATA001/jetdb/controlfile/control01.ctl" ORA-17502:ksfdcre:3 Failed to create file +DATA001/jetdb/controlfile/control01.ctl ORA-15001:diskgroup "DATA001" does not exist or is not mounted ORA-15055:unable to connect to ASM instance ORA-01017:invalid username/password; logon denied
问题分析:
1、 从上面告警日志来看,ORA-01017可以很明显看出是由于权限问题导致。
随即,我们开始检查备库的密码文件,$ORACLE_HOME/dbs/orapw{SID}是存在的。
[oracle@standby dbs]$ ll$ORACLE_HOME/dbs/orapw* -rw-r----- 1 oracle oinstall 1536 May 2617:49 /DBSoft/oracle/product/11.2.4/dbhome_1/dbs/orapwstandby
2、 这个时候我们应该查看的是数据库的alter告警文件:
Errorsin file/DBSoft/oracle/diag/rdbms/standby/standby/trace/standby_asmb_11087.trc (incident=24130): ORA-00600:internal error code, arguments: [OSDEP_INTERNAL], [], [], [], [], [], [], [],[], [], [], [] ORA-27302:failure occurred at: skfnbeqOpenI Incidentdetails in:/DBSoft/oracle/diag/rdbms/standby/standby/incident/incdir_24130/standby_asmb_11087_i24130.trc UseADRCI or Support Workbench to package the incident. See Note411.1 at My Oracle Support for error and packaging details. ORA-00210:cannot open the specified control file ORA-00202:control file: '+DATA001/jetdb/controlfile/control01.ctl' ORA-17503:ksfdopn:2 Failed to open file +DATA001/jetdb/controlfile/control01.ctl ORA-15001:diskgroup "DATA001" does not exist or is not mounted ORA-15055:unable to connect to ASM instance ORA-15055:unable to connect to ASM instance ORA-00600:internal error code, arguments: [OSDEP_INTERNAL], [], [], [], [], [], [], [],[], [], [], [] ORA-27302:failure occurred at: skfnbeqOpenI ORA-1013signalled during: ALTER DATABASE MOUNT... Mon May26 16:31:34 2014
从告警文件中我们可以很明显的看出是 ASM 磁盘有问题,进入进入 grid 用户下 用 srvctl 命令检查 asm 状态:
[grid@standby~]$ srvctl status asm ASM isrunning on standby SQL>select name,state,free_mb from v$asm_diskgroup; NAME STATE FREE_MB --------------------- ---------- DATA001 MOUNTED 121112 ARC001 MOUNTED 122483 BAK001 MOUNTED 122826
结果看来 ASM 也是没有问题的,那么唯一的出问题的地方可能就是 Oracle 哪里配置的问题。
3、这个时候我们应该先看看会不会是权限的问题:
[root@standby ~]# id oracle uid=501(oracle) gid=504(oinstall)groups=504(oinstall) ,505(dba) [root@standby ~]# id grid uid=500(grid) gid=504(oinstall) groups=504(oinstall),503(asmadmin),506(asmdba),507(asmoper)
到这里,我们发现问题可能出现在权限上。
oracle没有asmdba权限,随即添加上即可。
[root@standby~]# usermod -G 503,506 oracle [root@standby~]# id oracle uid=501(oracle)gid=504(oinstall) groups=504(oinstall),503(asmadmin),505(dba),506(asmdba)我们可以看到如下,再次执行 duplicate ,成功:
[oracle@standby~]$ rman target sys/oracle@jetdb auxiliary sys/oracle@standby RecoveryManager: Release 11.2.0.4.0 - Production on Mon May 26 17:48:39 2014 Copyright(c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connectedto target database: JETDB (DBID=2170518470) connectedto auxiliary database: JETDB (not mounted) RMAN>duplicate target database for standby from active database nofilenamecheck; StartingDuplicate Db at 26-MAY-14 usingtarget database control file instead of recovery catalog allocatedchannel: ORA_AUX_DISK_1 channelORA_AUX_DISK_1: SID=122 device type=DISK contentsof Memory Script: { backup as copy reuse targetfile '/DBSoft/oracle/product/11.2.4/dbhome_1/dbs/orapwjetdb1' auxiliaryformat '/DBSoft/oracle/product/11.2.4/dbhome_1/dbs/orapwstandby' ; } executingMemory Script Startingbackup at 26-MAY-14 allocatedchannel: ORA_DISK_1 channelORA_DISK_1: SID=14 instance=jetdb1 device type=DISK Finishedbackup at 26-MAY-14 contentsof Memory Script: { backup as copy current controlfile forstandby auxiliary format '+DATA001/jetdb/controlfile/control01.ctl'; } executingMemory Script Startingbackup at 26-MAY-14 usingchannel ORA_DISK_1 channelORA_DISK_1: starting datafile copy copyingstandby control file outputfile name=+BAK001/rman/snapcf_jetdb1.f tag=TAG20140526T174956 RECID=11STAMP=848598598 channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finishedbackup at 26-MAY-14 contentsof Memory Script: { sql clone 'alter database mount standbydatabase'; } executingMemory Script sqlstatement: alter database mount standby database RMAN-05529:WARNING: DB_FILE_NAME_CONVERT resulted in invalid ASM names; names changed todisk group only. contentsof Memory Script: { set newname for tempfile 1 to "+data001"; switch clone tempfile all; set newname for datafile 1 to "+data001"; set newname for datafile 2 to "+data001"; set newname for datafile 3 to "+data001"; set newname for datafile 4 to "+data001"; set newname for datafile 5 to "+data001"; backup as copy reuse datafile 1 auxiliary format "+data001" datafile 2 auxiliary format "+data001" datafile 3 auxiliary format "+data001" datafile 4 auxiliary format "+data001" datafile 5 auxiliary format "+data001" ; sql 'alter system archive log current'; } executingMemory Script executingcommand: SET NEWNAME renamedtempfile 1 to +data001 in control file executingcommand: SET NEWNAME executingcommand: SET NEWNAME executingcommand: SET NEWNAME executingcommand: SET NEWNAME executingcommand: SET NEWNAME Startingbackup at 26-MAY-14 usingchannel ORA_DISK_1 channelORA_DISK_1: starting datafile copy inputdatafile file number=00001 name=+DATA001/jetdb/datafile/system.268.848240089 outputfile name=+DATA001/standby/datafile/system.257.848598605 tag=TAG20140526T175005 channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:15 channelORA_DISK_1: starting datafile copy inputdatafile file number=00002 name=+DATA001/jetdb/datafile/sysaux.260.848240091 outputfile name=+DATA001/standby/datafile/sysaux.258.848598619 tag=TAG20140526T175005 channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:07 channelORA_DISK_1: starting datafile copy inputdatafile file number=00003 name=+DATA001/jetdb/datafile/undotbs1.263.848240091 outputfile name=+DATA001/standby/datafile/undotbs1.259.848598627tag=TAG20140526T175005 channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 channelORA_DISK_1: starting datafile copy inputdatafile file number=00005 name=+DATA001/jetdb/datafile/undotbs2.264.848240331 outputfile name=+DATA001/standby/datafile/undotbs2.260.848598627tag=TAG20140526T175005 channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 channelORA_DISK_1: starting datafile copy inputdatafile file number=00004 name=+DATA001/jetdb/datafile/users.267.848240091 outputfile name=+DATA001/standby/datafile/users.261.848598629 tag=TAG20140526T175005 channelORA_DISK_1: datafile copy complete, elapsed time: 00:00:02 Finishedbackup at 26-MAY-14 sqlstatement: alter system archive log current contentsof Memory Script: { switch clone datafile all; } executingMemory Script datafile1 switched to datafile copy inputdatafile copy RECID=11 STAMP=848598635 filename=+DATA001/standby/datafile/system.257.848598605 datafile2 switched to datafile copy inputdatafile copy RECID=12 STAMP=848598635 file name=+DATA001/standby/datafile/sysaux.258.848598619 datafile3 switched to datafile copy inputdatafile copy RECID=13 STAMP=848598635 filename=+DATA001/standby/datafile/undotbs1.259.848598627 datafile4 switched to datafile copy inputdatafile copy RECID=14 STAMP=848598635 file name=+DATA001/standby/datafile/users.261.848598629 datafile5 switched to datafile copy inputdatafile copy RECID=15 STAMP=848598635 filename=+DATA001/standby/datafile/undotbs2.260.848598627 FinishedDuplicate Db at 26-MAY-14