ONLINE - Cannot sort Errors
Posted in 1996
We are experiencing a problem with Online Version 6.00.UH1 running on AIX 3.2
The system runs quite happily for several days Usually) then we receive the
following error (The offending program is being run by 40-50 users) :-
Date: 15/02/96 Time: 16:02:56
Program error at "cus_con01.4gl", line number 389.
SQL statement error number -566.
Cannot initiate sort.
SYSTEM error number -116.
ISAM error: cannot allocate memory.
This is the relevant portion of code and schemas are attached.
LET l_sql =
" SELECT ", "UNIQUE vb_cmdid", l_count USING "[&]",
" FROM ", "bars, vss_bar",
" WHERE ", "bar_event = vb_event",
" AND ", "bar_con_type = vb_type",
" AND ", "bar_phone_no = ", quote(m_rec.con_phone_no),
" AND ", "bar_user_2 IS NULL",
" ORDER ", "BY 1"
The only solution that we can come up with is to bounce the engine. This is
not acceptable with 60+ users requiring full-time access. The error seems to
be accompanied by the following logs in online.log :-
Tue Jan 30 00:24:01 1996
11:44:43 User thread table overflow - user id 436
11:44:43 (22608) connection rejected - too many users
14:07:33 Level 1 Archive started on rootdbs, chunk1, chunk2
14:45:04 User thread table overflow - user id 374
14:45:04 (23390) connection rejected - too many users
14:58:52 Archive on rootdbs, chunk1, chunk2 Completed.
14:59:20 shmat: [EINVAL][22]: shared memory base address illegal
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14:59:20 using 0xd0000000, needs 0xffffffff
14:59:20 out of virtual shared memory
Fri Feb 9 08:58:00 1996
08:58:00 INFORMIX-OnLine Initialized -- Shared Memory Initialized
08:58:00 Physical Recovery Started
8< SNIP SNIP >8
08:58:06 Quiescent Mode
08:58:10 On-Line Mode
09:03:50 dynamically allocated new shared memory segment (size 8388608)
09:14:34 dynamically allocated new shared memory segment (size 8388608)
09:31:42 dynamically allocated new shared memory segment (size 8388608)
09:54:43 dynamically allocated new shared memory segment (size 8388608)
10:11:37 dynamically allocated new shared memory segment (size 8388608)
10:53:32 dynamically allocated new shared memory segment (size 8388608)
11:34:12 shmat: [EINVAL][22]: shared memory base address illegal
11:34:12 using 0xd0000000, needs 0xffffffff
11:34:12 out of virtual shared memory
12:02:01 shmat: [EINVAL][22]: shared memory base address illegal
12:02:01 using 0xd0000000, needs 0xffffffff
12:02:01 out of virtual shared memory
12:02:01 create_tcb: cannot allocate memory
12:02:01 (997) connection rejected - too many users
12:18:01 shmat: [EINVAL][22]: shared memory base address illegal
12:18:01 using 0xd0000000, needs 0xffffffff
12:18:01 out of virtual shared memory
12:21:56 Shutdown Mode
12:22:35 Quiescent Mode
12:24:25 INFORMIX-OnLine Stopped
Any attempt to run the above select from dbaccess when the users 4gl programs
have crashed results in the same error.
Does anybody have any idea of the cause of this error. Please don't say upgrade
as the accounting system is not ported to V7.
Any help will be very gratefully received !!
Regards
Steve
Relevant schemas
================
Table Name bars
Owner informix
Row Size 62
Number of Rows 13410
Number of Columns 12
Date Created 12/11/95
create table "informix".bars
(
bar_phone_no char(10) not null,
bar_con_type char(1) not null,
bar_event char(1) not null,
bar_reason char(2) not null,
bar_created datetime year to second
default current year to second not null,
bar_user_1 char(8)
default user not null,
bar_date_1 date,
bar_time_1 datetime hour to second,
bar_updated datetime year to second,
bar_user_2 char(8),
bar_date_2 date,
bar_time_2 datetime hour to second,
check (bar_con_type MATCHES '[AD]' ) constraint "informix".bar_con_type
);
create unique index "informix".bars_1 on "informix".bars (bar_phone_no,bar_event,bar_created desc);
create view "informix".vss_bar (vb_type,vb_event,vb_cmdid) as
select x0.vse_type ,
x0.vse_event [1,1] ,
x0.vse_cmdid
from "informix".vss_event x0
where ((x0.vse_event [2,2] = 'B' )
AND (x0.vse_tar_class IS NULL ) )
selecting from this view returns 19 rows
create table "informix".vss_event
(
vse_event char(2) not null,
vse_type char(1) not null,
vse_tar_class char(1),
vse_cmdid char(21) not null,
vse_format char(50) not null,
check (vse_type MATCHES '[AD]' ) constraint "informix".vse_type
);
create unique index "informix".i_vse_eve01 on "informix".vss_event (vse_event,vse_type,vse_tar_class desc);
--
-----------------------------------------------------------------------------
EnsignData Ltd. - Informix and Tetra Accounting systems consultancy
+44 1634 577054
Steve Weet steve@weet.demon.co.uk