Skip to main content

restore for db_unique_Name

when restoring oracle spfile, I get the following error.
RMAN> set dbid=1170383141

executing command: SET DBID
database name is "PROD" and DBID is 1170383141

RMAN> run
2> {
3> allocate channel t1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo_rman_p7_ibms_prod.opt)';
4> restore spfile;
5> restore controlfile;
6> }
allocated channel: t1
channel t1: sid=27 devtype=SBT_TAPE
channel t1: Data Protection for Oracle: version 5.4.1.0

Starting restore at 24-OCT-2011:15:37:55
released channel: t1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 10/24/2011 15:37:55
RMAN-06758: DB_UNIQUE_NAME is not unique in the recovery catalog

query the rman catalog database to verify that there are multiple db_unique_name share the same dbid.

sqlplus> ...
RMANCAT> col name format a
RMANCAT> col conf_name format a299
RMANCAT> col value format a39
RMANCAT> col db_unique_name format a9
RMANCAT> set linesize 300
RMANCAT> col value format a120

select conf.db_key,db.dbid,conf.db_unique_name,db.name as name
--,conf.name as conf_name,conf.value
from rman.conf conf, rman.rc_database db
where conf.db_key=db.db_key and (db.name ='PROD' or conf.db_unique_name='PROD')

DB_KEY DBID DB_UNIQUE NAME
---------- ---------- --------- ---------
16187 1170383141 PRODSTBY PROD
16187 1170383141 PRODSTBY PROD
16187 1170383141 PRODSTBY PROD
16187 1170383141 PRODSTBY PROD
16187 1170383141 PRODSTBY PROD
16187 1170383141 PRODSTBY PROD
16187 1170383141 PROD PROD
16187 1170383141 PROD PROD
16187 1170383141 PROD PROD
16187 1170383141 PROD PROD
16187 1170383141 PROD PROD
16187 1170383141 PROD PROD
16187 1170383141 PROD

13 rows selected.

1* select * from rman.node order by db_key
17:13:22 RMANCAT> /

DB_UNIQUE DB_KEY HIGH_CONF_RECID FOR HIGH_ROUT_STAMP INST_STARTUP_STAMP DATABAS
--------- ---------- --------------- --- --------------- ------------------ -------
BIDATA 2923 0 YES 0 724438317 PRIMARY
BIDTST 2923 6139 NO 750855226 750494058 PRIMARY
TESTCOPY 6822 86 NO 714501546 714065640 PRIMARY
TEST 7582 25 NO 714501120 714068248 PRIMARY
PROD 16187 27 NO 764796729 764791973 PRIMARY
PRODSTBY 16187 24 NO 764939051 764934470 STANDBY
RMANCAT 59307 0 NO 753298557 746479200 PRIMARY
BIDATA 80019 1033 NO 743303600 742878243 PRIMARY
BIDATA 217407 5429 NO 748344418 748341440 PRIMARY
BIDATA2 243780 22 NO 752695082 752694449 PRIMARY
BIDATA 253407 2325 NO 765313006 764583195 PRIMARY

notice that both PROD and PRODSTBY share same db_key, but one is primary role, the other is standby role, this is because we have oracle dataguard configured.

the fix is to run

rman>restore spfile for db_unique_Name PROD.

Comments

Popular posts from this blog

non-existent process lock port on windows server

I have a database link created between oracle and sqlserver using oracle tg4odbc, the product is installed on windows server and run as service "OracleOraGtw11g_home1TNSListener", but sometime the service cannot started, the root cause of this problem is that the port number 1521 is used by an non-existent process. The first step is to use netstat -bano|find "1521" to get the process id, in my case it's 5844, which shows the connection is from my oracle server 10.8.0.169 H:\>netstat -bano|find "1521"   TCP    0.0.0.0:1521           0.0.0.0:0              LISTENING       5844   TCP    10.14.45.33:1521       10.8.0.169:42987       ESTABLISHED     5844 however the process id does not show in either task manager or process explorer. The next step is to run tcpview, which shows non-existent under process column, there are three rows, two show status as "listening", the other one shows status "established", right click and k

Opatch apply/lsinventory error: oneoff is corrupted or does not exist

I am applying the quarterly patch for 19c RDBMS, I tried using napply but failed, but somehow it corrupted the inventory though nothing applied. further apply and lsinventory command ran into error like this: $ ./OPatch/opatch lsinventory Oracle Interim Patch Installer version 12.2.0.1.21 Copyright (c) 2020, Oracle Corporation.  All rights reserved. Oracle Home       : /u02/app/oracle/19.0.0 Central Inventory : /u01/app/oraInventory    from           : /u02/app/oracle/19.0.0/oraInst.loc OPatch version    : 12.2.0.1.21 OUI version       : 12.2.0.7.0 Log file location : /u02/app/oracle/19.0.0/cfgtoollogs/opatch/opatch2020-09-08_13-35-59PM_1.log Lsinventory Output file location : /u02/app/oracle/19.0.0/cfgtoollogs/opatch/lsinv/lsinventory2020-09-08_13-35-59PM.txt -------------------------------------------------------------------------------- Inventory load failed... OPatch cannot load inventory for the given Oracle Home. LsInventorySession failed: Unable to create patchObject Possible ca

shell script to clean up oracle dumpfile

https://github.com/iacosta/personal/blob/master/shells/cleanhouse.sh #!/bin/ksh # # Script used to cleanup any Oracle environment. # # Cleans:      audit_file_dest #              background_dump_dest #              core_dump_dest #              user_dump_dest #              Clusterware logs # # Rotates:     Alert Logs #              Listener Logs # # Scheduling:  00 00 * * * /networkdrive/dba/scripts/purge/cleanup.sh -d 7 > /u01/dba/bin/cleanup.log 2>&1 # # Created By:  Lei Dao # # # RM="rm -f" RMDIR="rm -rf" LS="ls -l" MV="mv" TOUCH="touch" TESTTOUCH="echo touch" TESTMV="echo mv" TESTRM=$LS TESTRMDIR=$LS SUCCESS=0 FAILURE=1 TEST=0 HOSTNAME=`hostname` ORAENV="oraenv" TODAY=`date +%Y%m%d` ORIGPATH=/usr/local/bin:$PATH ORIGLD=$LD_LIBRARY_PATH export PATH=$ORIGPATH # Usage function. f_usage(){   echo "Usage: `basename $0` -d DAYS [-a DAYS] [-b DAYS] [