For any reason you need to change protected database name on ZDL, such as after enroll a Data Guard on configuration or migrating databases with same DBID, but different names on the cluster, you can use an internal command to change that name.
If you try change the names directly, you will get an error because the name still exist on ra_database_synonym ZDL table. Let see below:
SQL> exec rasys.DBMS_RA.RENAME_DB(db_unique_name_old => 'ORCL',db_unique_name_new => 'ORCLDG');
BEGIN rasys.DBMS_RA.RENAME_DB(db_unique_name_old => 'ORCL',db_unique_name_new => 'ORCLDG'); END;
*
ERROR at line 1:
ORA-64835: Recovery Appliance API error ORA-20246: ORCLDG site known to
recovery catalog:
ORA-06512: at "RASYS.DBMS_RA_MISC", line 4682
ORA-06512: at "RASYS.DBMS_RCVCAT", line 20365
ORA-06512: at "RASYS.DBMS_RA_MISC", line 4648
ORA-06512: at "RASYS.DBMS_RA_MISC", line 5814
ORA-06512: at line 1
ORA-06512: at "RASYS.DBMS_RA", line 5027
ORA-06512: at "RASYS.DBMS_RA_MISC", line 5664
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "RASYS.DBMS_RA_MISC", line 5649
ORA-06512: at "RASYS.DBMS_RA_MISC", line 5649
ORA-06512: at "RASYS.DBMS_RA", line 5015
ORA-06512: at line 1
SQL> select dbid, db_unique_name, db_key from ra_database where db_unique_name='ORCLDG';
no rows selected
SQL> select * from ra_database_synonym where db_unique_name='ORCLDG';
DB_UNIQUE_NAME DBID TENANT_NAME TENANT_IDENTIFIER
--------------------------------- ---------- ------------------------------------ -----------------
ORCLDG 4264118141 DEFAULT_TENANT 0
To do this without any issue, follow the procedures below:
SQL> exec rasys.DBMS_RA.RENAME_DB(db_unique_name_old => 'ORCLDG',db_unique_name_new => 'ORCLDG_OLD');
PL/SQL procedure successfully completed.
SQL> select * from ra_database_synonym where db_unique_name='ORCLDG';
no rows selected
SQL> select * from ra_database_synonym where db_unique_name='ORCLDG_OLD';
DB_UNIQUE_NAME DBID TENANT_NAME TENANT_IDENTIFIER
--------------------------------- ---------- ------------------------------------ -----------------
ORCLDG_OLD 4264118141 DEFAULT_TENANT 0
SQL> exec rasys.DBMS_RA.RENAME_DB(db_unique_name_old => 'ORCL',db_unique_name_new => 'ORCLDG');
PL/SQL procedure successfully completed.
SQL> select * from ra_database_synonym where db_unique_name='ORCLDG';
DB_UNIQUE_NAME DBID TENANT_NAME TENANT_IDENTIFIER
--------------------------------- ---------- ------------------------------------ -----------------
ORCLDG 4264118141 DEFAULT_TENANT 0