Tuesday, January 10, 2017

ORA-01503: CREATE CONTROLFILE failed on RMAN duplicate between RAC databases

It was while since I performed an RMAN duplicate from a RAC database to another RAC database. You may find this post useless as there’s a lot of information out there about the error I faced, but all my posts are kind of my own little diary.

So, basically. In order to successfully duplicate one database to another you may need this.

    - TNS setup on the server where the database to be duplicated is hosted. You need to be able to tnsping both, the target and the auxiliary database.

     - Create a parameter file and password file for the auxiliary and startup nomount the first instance.

    - Create a full backup of the target database including archivelogs.

    - Connect to rman to both the target and the auxiliary databases from the auxiliary server:

rman target sys/*****@<target_db> auxiliary /

    - Issue the duplicate command:

 duplicate target database to <auxiliary_db>;


This should successfully finish but I got this error:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 01/03/2017 18:29:58
RMAN-05501: aborting duplication of target database
RMAN-06136: ORACLE error from auxiliary database: ORA-01503: CREATE CONTROLFILE failed
ORA-12720: operation requires database is in EXCLUSIVE mode

I searched this and the culprit is that my parameter file for the auxiliary had this:

cluster_database = true

By MOS note “Rman duplicate fail with RMAN-06136, ORA-01503, ORA-12720, ORA-00494 enqueue [CF] (Doc ID 1335479.1)”. Duplicate from a RAC database to another RAC database is not supported, hence we need to modify the parameter cluster_database to false in the auxiliary database.

After doing this the duplicate finished correctly.


Thanks,

Alfredo

2 comments:

  1. Hi Alfredo,

    long time no see, how you are?!?

    I placed the auxiliary in startup nomount exclusive
    Then in the duplicate command the SPFILE part I placed cluster_database=false.

    I ended up with a single instance on one of the cluster nodes (usually where I have the listener static entrance).

    Then added:
    *.cluster_database_instances=2
    *.cluster_database=true
    BIJ001.instance_name='BIJ001'
    BIJ002.instance_name='BIJ002'
    BIJ001.instance_number=1
    BIJ002.instance_number=2
    BIJ001.thread=1
    BIJ002.thread=2
    BIJ001.undo_tablespace='PSAPUNDO'
    BIJ002.undo_tablespace='PSAPUNDO2'

    created spfile and register the cluster database
    restart via srvctl and it worked.

    As usual, Oracle provides at least 3 methods of getting the same result.

    Regards,
    Marius CHisa

    ReplyDelete
  2. Hey Marius!!!

    I'm good thanks! How are you doing?

    I agree there are different ways to do it. Thanks for sharing your approach.

    Thanks,
    Alfredo

    ReplyDelete