Oracle, changed NLS_LANGUAGE and is now invalid and can’t fix

oracle

I'm using oracle 12c, and changed the NLS_LANGUAGE variable to a invalid text using the manager at localhost:5500/em, after reboot the oracle db doesn't get up and Database Configuration Assistant errors out with :

ORA-12700:invalid NLS parameter value (nls_language)

I tried looking for init.ora but there's nothing about language in it.

I looked for spfile.ora but no file found.

I found file SPFILEORCL.ORA, inside it I have *.nls_language='invalidvalueIput'

But if I change it to *.nls_language='AMERICAN' and reboot it just says the file is invalid, so how am I supposed to fix this value since the EM doesn't come up anymore and nothing seems to fix the file ?

Best Answer

You are not supposed to edit the spfile manually as it is in binary format and also stores a checksum. Start sqlplus, create a text version of the parameterfile:

sqlplus / as sysdba
create pfile from spfile;

Edit the initORCL.ora, then recreate the spfile from it:

create spfile from pfile;