oninit: Dictionary Cache and SPL Routine Cache error
Posted in 2005
Topics: Stored Procedures & SPL, Server Administration, Platform-Specific Issues, Versions, Editions & End-of-Life
I am having some trouble initializing shared memory on Solaris 9 with
Informix IDS 9.4.
---------------
$ oninit -ivyChecking group membership to determine server run modesucceeded
Reading configuration file
'/dbms/informix/etc/onconfig.site'...succeeded
Creating /INFORMIXTMP/.infxdirs ... succeeded
Creating infos file "/dbms/informix/etc/.infos.site" ...
"/dbms/informix/etc/.conf.site" ... succeeded
Writing to infos file ... succeeded
Checking config parameters...succeeded
Allocating and attaching to shared memory...succeeded
Creating resident pool 9354 kbytes...succeeded
Creating buffer pool 2002 kbytes...succeeded
Initializing rhead structure...succeeded
Initializing ASF ...succeeded
Initializing Dictionary Cache and SPL Routine Cache...Cannot find
message file. Check INFORMIXDIR and DBLANG.FAILED
----------------
The INFORMIXDIR and DBLANG are properly set. I believe that the error
reported cannot be found in the message files. Nothing gets written
out to the log file.
--Jef
Jef wrote:
> I am having some trouble initializing shared memory on Solaris 9 with
> Informix IDS 9.4.
9.40.xyz -- what's the x, y, z? Normally x will be U or F. y will be
C. z might be a single digit, or it might be a longer string. Please
quote the whole lot?
Did the server ever initialize before? Or is this a new installation?
If it previously worked, then something changed. Find out what, and
undo the change. If it is a new installation, then you appear to have a
faulty installation in some shape or form.
> ---------------
> $ oninit -ivy> Checking group membership to determine server run modesucceeded
> Reading configuration file
> '/dbms/informix/etc/onconfig.site'...succeeded
> Creating /INFORMIXTMP/.infxdirs ... succeeded
> Creating infos file "/dbms/informix/etc/.infos.site" ...
> "/dbms/informix/etc/.conf.site" ... succeeded
> Writing to infos file ... succeeded
> Checking config parameters...succeeded
> Allocating and attaching to shared memory...succeeded
> Creating resident pool 9354 kbytes...succeeded
> Creating buffer pool 2002 kbytes...succeeded
> Initializing rhead structure...succeeded
> Initializing ASF ...succeeded
> Initializing Dictionary Cache and SPL Routine Cache...Cannot find
> message file. Check INFORMIXDIR and DBLANG.FAILED
> ----------------
>
> The INFORMIXDIR and DBLANG are properly set. I believe that the error
> reported cannot be found in the message files. Nothing gets written
> out to the log file.
What is DBLANG set to? Why is it set, even?
What is INFORMIXDIR set to? It appears to be /dbms/informix, but let's
verify everything.
Your IDS server appears to be called 'site'.
You have a very minimal buffer pool with only about 1000 buffers allocated.
Have you got any interesting ONCONFIG parameters set related to caches?
What does the online log file contain in the way of information?
You said nothing; are you really sure you mean nothing at all, or just
'nothing that seemed to be of relevance'.
Have you verified that all the files listed in $INFORMIXDIR/IDS2000files
or $INFORMIXDIR/etc/IIFfiles under msg (in particular) are present and
not empty?
--
Jonathan Leffler #include <disclaimer.h>
Email: jleffler@earthlink.net, jleffler@us.ibm.com
Guardian of DBD::Informix v2005.02 -- http://dbi.perl.org/
1) Version 9.4 UC3
2) New installation. Yes, I believe that something went wrong, I've
changed semaphores, and onconfig multiple times. I'm currently just
trying to initialize the minimum "demo" db. Here are the semaphores:
---
* Informix
set semsys:seminfo_semmap=64
set semsys:seminfo_semmni=4096
set semsys:seminfo_semmns=4096
set semsys:seminfo_semmnu=4096
set semsys:seminfo_semume=64
set semsys:seminfo_semmsl=100
set shmsys:shminfo_shmmax=268435456
set shmsys:shminfo_shmmin=100
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=100
---
3) DBLANG sets the locale/language specific messages. Just to cover my
bases, I set this to $DBLANG=$INFORMIXDIR/msg/en_us/0333
which works proper for all of the other messages.
4) $INFORMIXDIR=/dbms/informix
5) I scrubbed the data before posting it. I suppose it would have
conveyed more meaning if I'd have left it as "demo".
6 & 7) Yes, I was aiming for a vanilla installation after failing on
my original multiple times. This is from the onconfig.demo that ships
with 9.4
8) Here is the listing:
-----
06:08:53 IBM Informix Dynamic Server Started.
Sun Oct 2 06:08:53 2005
06:08:53 Event alarms enabled. ALARMPROG =
'/dbms/informix/etc/alarmprogram.sh'
-----
9) The IIF files all have data in them.
Jef wrote:
> 1) Version 9.4 UC3
>
> 2) New installation. Yes, I believe that something went wrong, I've
> changed semaphores, and onconfig multiple times. I'm currently just
> trying to initialize the minimum "demo" db. Here are the semaphores:
> ---
> * Informix
> set semsys:seminfo_semmap=64
> set semsys:seminfo_semmni=4096
> set semsys:seminfo_semmns=4096
> set semsys:seminfo_semmnu=4096
> set semsys:seminfo_semume=64
> set semsys:seminfo_semmsl=100
> set shmsys:shminfo_shmmax=268435456
> set shmsys:shminfo_shmmin=100
> set shmsys:shminfo_shmmni=100
> set shmsys:shminfo_shmseg=100
> ---
>
> 3) DBLANG sets the locale/language specific messages. Just to cover my
> bases, I set this to $DBLANG=$INFORMIXDIR/msg/en_us/0333
> which works proper for all of the other messages.
Well, I suppose you can do that - I would never bother, but it probably
doesn't do any harm. I've never found it necessary to set DBLANG; I
don't even recall for sure, but you might need to set DBNLS for it to
have any effect. I remember it as a pre-7.20 hangover env var; you
would normally set SERVER_LOCALE, and/or DB_LOCALE and CLIENT_LOCALE
rather than DBLANG. But I'm too lazy to check the manual right now.
> 4) $INFORMIXDIR=/dbms/informix
>
> 5) I scrubbed the data before posting it. I suppose it would have
> conveyed more meaning if I'd have left it as "demo".
>
> 6 & 7) Yes, I was aiming for a vanilla installation after failing on
> my original multiple times. This is from the onconfig.demo that ships
> with 9.4
>
> 8) Here is the listing:
> -----
> 06:08:53 IBM Informix Dynamic Server Started.>
> Sun Oct 2 06:08:53 2005
>
> 06:08:53 Event alarms enabled. ALARMPROG =
> '/dbms/informix/etc/alarmprogram.sh'
> ----->
> 9) The IIF files all have data in them.
>
OK - that cuts out most of the easy options. Did you reboot the machine
after adjusting the value for semaphores and shared memory? Not that it
appears to be the problem - but I'll ask anyway.
You're now reduced to finding which file it is looking for that isn't
there... While running as root (informix will not be sufficient), you
should try running:
truss -o oninit.log oninit -v
You can add -i to the oninit options if that's appropriate. Look near
the end of the output, trying to find a message file that it cannot
open. It can look for something like 11 different files (not
necessarily all different) before it finally gives up.
When you find out the name of the message file it is looking for, you
can also see where it isn't finding it - and see whether you can find it
anywhere that it is not looking. Or it might be malformatted; I doubt
that - it looks like a simple case of 'file not found'. Since oninit is
terminating, there probably isn't any need for the non-daemonizing
options, or non-forking or whatnot - it should terminate cleanly enough
for you.
I don't recall any problems with a regular install of 9.40.UC3; I tend
to be the person to spot them when there are such issues.
--
Jonathan Leffler #include <disclaimer.h>
Email: jleffler@earthlink.net, jleffler@us.ibm.com
Guardian of DBD::Informix v2005.02 -- http://dbi.perl.org/