Search

Join this Blog for direct reference of any post into your inbox. To join just click on "Join this Site" under "Follower" then Login with your Email.*** DECLARATION: I Maintain this Blog for Helping Myself While at Work and Welcome any body Needing Help!!!.*** CAUTION: Using any of the script from this Blog may contain at Own Risk. These scripts May or May not have been Tested.***

Friday, 3 August 2012

LRM-00123: invalid character 0 found in the input file

While starting the database instance it fails with LRM-00123 such as
SQL> startup nomount;
ORA-01078: failure in processing system parameters
LRM-00123: invalid character 0 found in the input file
Cause: This is due to either the pfile is not a correct pfile or the character set used inside pfile contains some special characters which does not covered by NLS_LANG environmental variable.
If some special characters such as "á", "é", "ñ" used inside pfile and NLS_LANG environmental variable is set to US7ASCII, it is very possible you will find the above issue. Note that, Oracle reads the PFILE/SPFILE information from the internal character set identified with PL/SQL and not the database created character set.
Also if your pfile is wrong file, say it is your password file which you wrongly copied as pfile then while startup mount you will also face same LRM-00123 problem.
Solution:
1.       Open the pfile and check its contents. All contents must be readable, if somehow you can't see the content of your pfile then possibly you need to create or replace pfile by correct one from your backup.
2.       Set NLS_LANG to something different than US7ASCII if you have NLS_LANG set to US7ASCII. The reason why it works with NLS_LANG set to something different than US7ASCII, even if is single byte, is because US7ASCII does not cover special characters such as "á", "é", "ñ". These characters are covered by we8iso8859p1 for example.
3.       Use spfile instead of initSID.ora file. This works because the functions used to scan the pfile are different. Some are used to start the database and others to create the spfile. The functions that make the scan to the spfile does not have any problem if non-US7ASCII is used.
Rules to Specify values in an initialization parameter
§         Parameter within initialization file can be specified in any order.
§         If a line starts with pound sign(#) the rest words of the line is ignored. # indicates it is comment.
§         If OS is case sensitive then value of filename within initialization parameter is case sensitive.
§         To enter several parameters in a line use spaces between the parameters. such, db_name=orcl3 SGA_Target=200M SGA_Max_size=200M
§         The parameter that take multiple values enter multiple values enclosed in parentheses and separated by commas such as control_files=('/oradata/orcl3/control01.ctl','/oradata/orcl3/control02.ctl')
§         Alternatively you can enter multiple values without parentheses and commas such as, control_files='/oradata/orcl3/control01.ctl' '/oradata/orcl3/control02.ctl'
§         You can use the PFILE initialization parameter to embed the contents of another initialization parameter file into the current initialization parameter file.
§         If you specify a parameter value in multiple location then the last executed value override the prior one since the parameter is executed in sequential order. For example, if your pfile contains value in the following order
sga_target=200M
open_cursor=100
sga_target=300M
then sga_target=300M is in effect.
§         Enclose in quotation marks any parameter value that contains a special character. For example you can specify DB_DOMAIN in any of following ways,
db_domain = 'orcl3.oracle#.com'
db_domain = orcl3.oracle\#.com

0 comments:

Post a Comment