Oracle 11.2.0.4.0 SE-One 64-bit
Oracle ASM 11.2.0.4.0
Oracle Linux 6.7
Project is to migrate from OL5 to OL6. Weekend outage is tolerated.
I am using rman duplicate database to migrate to new servers with a better ASM configuration.
One of the 'sins of the past' that I'm trying to leave behind is some badly configured ASM diskgroups. On the old dev system, which has 2 databases, each db has two diskgroups. On the new, it's just one DG per db. And yes, I know that some would advocate for one DG, period. On the old system, we have DGs '+DEV_LARGE' and '+DEV_SMALL'. On the new system it is just '+DEV_DATA'
I have worked through a variety of small 'gotchas', but am stumped on this one. My rman script looks like this:
Listing 1
rman << EOF
set echo on
connect target sys/mypwd@dwdev5
connect auxiliary sys/mypwd@dwdev6
connect catalog rman/cat@rmcat
duplicate database to dwdev
from active database
db_file_name_convert ('+DEV_SMALL','+DEV_DATA',
'+DEV_LARGE','+DEV_DATA')
spfile parameter_value_convert ('+DEV_LARGE','+DEV_DATA',
'+DEV_SMALL','+DEV_DATA')
nofilenamecheck
;
EOF
It works great all the way through the data files, but then gets down to the control file and we get this:
Listing 2
connected to auxiliary database (not started)
Oracle instance started
Total System Global Area 839282688 bytes
Fixed Size 2257880 bytes
Variable Size 545262632 bytes
Database Buffers 289406976 bytes
Redo Buffers 2355200 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "DWDEV" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 SIZE 50 M ,
GROUP 2 SIZE 50 M ,
GROUP 3 SIZE 50 M
DATAFILE
'+DEV_DATA/dwdev/datafile/system.258.906807975'
CHARACTER SET WE8MSWIN1252
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 03/18/2016 11:07:57
RMAN-05501: aborting duplication of target database
RMAN-06136: ORACLE error from auxiliary database: ORA-01503: CREATE CONTROLFILE failed
ORA-00349: failure obtaining block size for '+DEV_LARGE'
ORA-15001: diskgroup "DEV_LARGE" does not exist or is not mounted
ORA-15001: diskgroup "DEV_LARGE" does not exist or is not mounted
Given that I specified 'spfile parameter_value_convert' (listing 1, line 10) I don't understand where it is getting the reference to DEV_LARGE, which is one of the two DGs used by the source db. I see it in the created spfile also, but again, don't understand why, given my specification. The spfile that rman created for the aux (destination) db is this:
Listing 3
oracle:dwdev$ ls -l spfile*
-rw-r----- 1 oracle oinstall 2560 Mar 18 11:07 spfiledwdev.ora
2016-03-18 11:39:28
oracle:dwdev$ strings spfiledwdev.ora
dwdev.__db_cache_size=289406976
dwdev.__java_pool_size=4194304
dwdev.__large_pool_size=71303168
dwdev.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
dwdev.__pga_aggregate_target=339738624
dwdev.__sga_target=503316480
dwdev.__shared_io_pool_size=0
dwdev.__shared_pool_size=130023424
dwdev.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/dwdev/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='+DEV_DATA/dwdev/controlfile/current.257.9068
07953'#Set by RMAN
*.db_block_size=8192
*.db_create_file_dest='+DEV_LARGE'
*.db_domain=''
*.db_name='DWDEV'#Reset to original value by RMAN
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dwdevXDB)'
*.log_archive_dest_1='location=/backup/dwdev/archive'
*.memory_target=842006528
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
BTW, when the process first starts, the spfile for the aux instance contains just one parameter - db_name=dwdev.