How to Rename a Protected Database Name on ZDL

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

Deixe um comentário