Monday, April 29, 2024

ORA-19751: could not create the change tracking file ORA-19750: change tracking file: ORA-17502: ksfdcre:4 Failed to create file


ISSUE

SQL> alter database open resetlogs;

alter database open resetlogs
*
ERROR at line 1:
ORA-19751: could not create the change tracking file
ORA-19750: change tracking file:
'+DATA/DB_NAME/CHANGETRACKING/ctf.281.1234567789'
ORA-17502: ksfdcre:4 Failed to create file
+DATA/DB_NAME/CHANGETRACKING/ctf.281.1234567789
ORA-15046: ASM file name
'+DATA/DB_NAME/CHANGETRACKING/ctf.281.1234567789' is not in
single-file creation form
ORA-17503: ksfdopn:2 Failed to open file
+DATA/DB_NAME/CHANGETRACKING/ctf.281.1234567789
ORA-15012: ASM file '+DATA/DB_NAME/CHANGETRACKING/ctf.281.1234567789'

does not exist


ACTIONS PERFORMED

Database was restored and recovered using rman and attempted to open with resetlogs.

Source Database using a 'block change tracking' file stored in ASM. Controlfile and Database is restored and recovered successfully but the open resetlogs fails with above errors.


ISSUE IS DUE TO

The change tracking file is originally created like this:
.
SQL> alter database enable block change tracking using file '+<DGNAME>';

Because the change tracking file is created by only specifying the ASM Diskgroup, a fully qualified ASM name is used for this file and stored in the DataDictionary.
When this file is not found during the open phase, the same filename will be used to recreate the file automatically by using the fully qualified ASM name which is not allowed, hence the error.

Bug 5362418 is opened for this has been closed as a duplicate of 11744544.



SOLUTION

Disable  the block change tracking 

- try OPEN RESTLOGS again, if any error, open normally.

- And enable block chnage tracking again, Use an ASM alias in the diskgroup. This way, the alias will be recreated successfully (which in turn will be linked to a new ASM fully qualified name behind the scenes)



SQL> alter database disable BLOCK CHANGE TRACKING;

Database altered.


SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01139: RESETLOGS option only valid after an incomplete database recovery


SQL>  alter database open;

Database altered.


SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+DATA';

Database altered.