Oracle 8.1.6.0 NT 4.0
I'm having a problem with a query which is basically just a bunch of UNION
ALL's that I want sorted in a certain way. The query runs flawlessly when I
limit the result set with a where clause, but when I remove it, the query
crashes when sorting (in the order by at the far bottom). If I remove the
ORDER BY, the query runs beautifully. The max rows returned by this is
about 12,000. I am confident that the values returned are consistant across
each of the UNION's.
Here's the error returned:
trans_demographic td
*
ERROR at line 257:
ORA-00600: internal error code, arguments: [5213], [], [], [], [], [], [],
[]
In other words:
1. Query runs with no ORDER BY.
2. Query runs with ORDER BY, when limiting rows returned.
3. When limiting rows returned, I can use any value in the full range (in
this case poe_assoc_id), and everything works as long as the total rows
returned are less than around 3,000.
I have tested every range of data, and I can use any set of valid values as
long as I do it in pieces.
So my question is: is the sql bad somehow (I don't think so). Is this a
tuning issue on the database itself? Is this a bug in 8.1.6.0?
Thanks in advance!
Ed
P.S. Here's the big ole query:
select ae_email_addr, ae_assoc_id, poe_assoc_id, table_type, poe, adds,
changes, drops, ae_name from
(select a.assoc_id poe_assoc_id,
a.poe poe,
'Member' table_type,
SUM(DECODE(tm.record_change_type,'A',1,0)) adds,
SUM(DECODE(tm.record_change_type,'C',1,0)) +
SUM(DECODE(tm.record_change_type,'T',1,0)) changes,
SUM(DECODE(tm.record_change_type,'D',1,0)) drops,
a.ae_email_addr ae_email_addr,
a.ae_name ae_name,
a.ae_assoc_id ae_assoc_id
from (select a.assoc_id,
poe_am.mem_id poe,
ae_m.first_name||' '||ae_m.last_name ae_name,
ae_am.assoc_id ae_assoc_id,
NVL(ae_m.email_addr,'[EMAIL PROTECTED]') ae_email_addr
from ASSOCIATION a,
ASSOCIATION_MEMBER poe_am,
MEMBER poe_m,
ASSOCIATION_MEMBER ae_am,
MEMBER ae_m
where a.assoc_type = 'L'
and a.assoc_status_cd = 'A'
and a.assoc_id = poe_am.assoc_id
and poe_am.relation_type = 'POE'
and poe_am.mem_id = poe_m.mem_id
and poe_m.primary_assoc_id = ae_am.assoc_id
and ae_am.relation_type = 'EO_ID'
and ae_am.mem_id = ae_m.mem_id) a,
TRANS_MEMBER tm
where a.assoc_id = tm.primary_assoc_id(+)
and a.poe = tm.sender_id(+)
and tm.last_changed_dt(+) BETWEEN '01-JUN-2001' AND '30-JUN-2001'
GROUP BY a.assoc_id,
a.poe,
a.ae_email_addr,
a.ae_name,
a.ae_assoc_id
UNION ALL
SELECT a.assoc_id poe_assoc_id,
a.poe poe,
'Member Supplemental' table_type,
SUM(DECODE(tms.record_change_type,'A',1,0)) adds,
SUM(DECODE(tms.record_change_type,'C',1,0)) changes,
SUM(DECODE(tms.record_change_type,'D',1,0)) drops,
a.ae_email_addr ae_email_addr,
a.ae_name ae_name,
a.ae_assoc_id ae_assoc_id
FROM (select a.assoc_id,
poe_am.mem_id poe,
ae_m.first_name||' '||ae_m.last_name ae_name,
ae_am.assoc_id ae_assoc_id,
NVL(ae_m.email_addr,'[EMAIL PROTECTED]') ae_email_addr
from ASSOCIATION a,
ASSOCIATION_MEMBER poe_am,
MEMBER poe_m,
ASSOCIATION_MEMBER ae_am,
MEMBER ae_m
where a.assoc_type = 'L'
and a.assoc_status_cd = 'A'
and a.assoc_id = poe_am.assoc_id
and poe_am.relation_type = 'POE'
and poe_am.mem_id = poe_m.mem_id
and poe_m.primary_assoc_id = ae_am.assoc_id
and ae_am.relation_type = 'EO_ID'
and ae_am.mem_id = ae_m.mem_id) a,
trans_member_supplemental tms
WHERE a.assoc_id = tms.assoc_id(+)
AND a.poe = tms.sender_id(+)
and tms.last_changed_dt(+) BETWEEN '01-JUN-2001' AND '30-JUN-2001'
GROUP BY a.assoc_id,
a.poe,
a.ae_email_addr,
a.ae_name,
a.ae_assoc_id
UNION ALL
SELECT a.assoc_id poe_assoc_id,
a.poe poe,
'Office' table_type,
SUM(DECODE(tof.record_change_type,'A',1,0)) adds,
SUM(DECODE(tof.record_change_type,'C',1,0)) +
SUM(DECODE(tof.record_change_type,'T',1,0)) changes,
SUM(DECODE(tof.record_change_type,'D',1,0)) drops,
a.ae_email_addr ae_email_addr,
a.ae_name ae_name,
a.ae_assoc_id ae_assoc_id
FROM (select a.assoc_id,
poe_am.mem_id poe,
ae_m.first_name||' '||ae_m.last_name ae_name,
ae_am.assoc_id ae_assoc_id,
NVL(ae_m.email_addr,'[EMAIL PROTECTED]') ae_email_addr
from ASSOCIATION a,
ASSOCIATION_MEMBER poe_am,
MEMBER poe_m,
ASSOCIATION_MEMBER ae_am,
MEMBER ae_m
where a.assoc_type = 'L'
and a.assoc_status_cd = 'A'
and a.assoc_id = poe_am.assoc_id
and poe_am.relation_type = 'POE'
and poe_am.mem_id = poe_m.mem_id
and poe_m.primary_assoc_id = ae_am.assoc_id
and ae_am.relation_type = 'EO_ID'
and ae_am.mem_id = ae_m.mem_id) a,
TRANS_OFFICE tof
WHERE a.assoc_id = tof.primary_assoc_id(+)
AND a.poe = tof.sender_id(+)
and tof.last_changed_dt(+) BETWEEN '01-JUN-2001' AND '30-JUN-2001'
GROUP BY a.assoc_id,
a.poe,
a.ae_email_addr,
a.ae_name,
a.ae_assoc_id
UNION ALL
SELECT a.assoc_id poe_assoc_id,
a.poe poe,
'Office Supplemental' table_type,
SUM(DECODE(tos.record_change_type,'A',1,0)) adds,
SUM(DECODE(tos.record_change_type,'C',1,0)) +
SUM(DECODE(tos.record_change_type,'T',1,0)) changes,
SUM(DECODE(tos.record_change_type,'D',1,0)) drops,
a.ae_email_addr ae_email_addr,
a.ae_name ae_name,
a.ae_assoc_id ae_assoc_id
FROM (select a.assoc_id,
poe_am.mem_id poe,
ae_m.first_name||' '||ae_m.last_name ae_name,
ae_am.assoc_id ae_assoc_id,
NVL(ae_m.email_addr,'[EMAIL PROTECTED]') ae_email_addr
from ASSOCIATION a,
ASSOCIATION_MEMBER poe_am,
MEMBER poe_m,
ASSOCIATION_MEMBER ae_am,
MEMBER ae_m
where a.assoc_type = 'L'
and a.assoc_status_cd = 'A'
and a.assoc_id = poe_am.assoc_id
and poe_am.relation_type = 'POE'
and poe_am.mem_id = poe_m.mem_id
and poe_m.primary_assoc_id = ae_am.assoc_id
and ae_am.relation_type = 'EO_ID'
and ae_am.mem_id = ae_m.mem_id) a,
TRANS_OFFICE tos
WHERE a.assoc_id = tos.primary_assoc_id(+)
AND a.poe = tos.sender_id(+)
and tos.last_changed_dt(+) BETWEEN '01-JUN-2001' AND '30-JUN-2001'
GROUP BY a.assoc_id,
a.poe,
a.ae_email_addr,
a.ae_name,
a.ae_assoc_id
UNION ALL
SELECT a.assoc_id poe_assoc_id,
a.poe poe,
'Financial' table_type,
SUM(DECODE(tf.record_change_type,'A',1,0)) adds,
SUM(DECODE(tf.record_change_type,'C',1,0)) +
SUM(DECODE(tf.record_change_type,'T',1,0)) changes,
SUM(DECODE(tf.record_change_type,'D',1,0)) drops,
a.ae_email_addr ae_email_addr,
a.ae_name ae_name,
a.ae_assoc_id ae_assoc_id
FROM (select a.assoc_id,
poe_am.mem_id poe,
ae_m.first_name||' '||ae_m.last_name ae_name,
ae_am.assoc_id ae_assoc_id,
NVL(ae_m.email_addr,'[EMAIL PROTECTED]') ae_email_addr
from ASSOCIATION a,
ASSOCIATION_MEMBER poe_am,
MEMBER poe_m,
ASSOCIATION_MEMBER ae_am,
MEMBER ae_m
where a.assoc_type = 'L'
and a.assoc_status_cd = 'A'
and a.assoc_id = poe_am.assoc_id
and poe_am.relation_type = 'POE'
and poe_am.mem_id = poe_m.mem_id
and poe_m.primary_assoc_id = ae_am.assoc_id
and ae_am.relation_type = 'EO_ID'
and ae_am.mem_id = ae_m.mem_id) a,
trans_financial tf
WHERE a.assoc_id = tf.assoc_id(+)
AND a.poe = tf.sender_id(+)
and tf.last_changed_dt(+) BETWEEN '01-JUN-2001' AND '30-JUN-2001'
GROUP BY a.assoc_id,
a.poe,
a.ae_email_addr,
a.ae_name,
a.ae_assoc_id
UNION ALL
SELECT a.assoc_id poe_assoc_id,
a.poe poe,
'Education' table_type,
SUM(DECODE(te.record_change_type,'A',1,0)) adds,
SUM(DECODE(te.record_change_type,'C',1,0)) +
SUM(DECODE(te.record_change_type,'T',1,0)) changes,
SUM(DECODE(te.record_change_type,'D',1,0)) drops,
a.ae_email_addr ae_email_addr,
a.ae_name ae_name,
a.ae_assoc_id ae_assoc_id
FROM (select a.assoc_id,
poe_am.mem_id poe,
ae_m.first_name||' '||ae_m.last_name ae_name,
ae_am.assoc_id ae_assoc_id,
NVL(ae_m.email_addr,'[EMAIL PROTECTED]') ae_email_addr
from ASSOCIATION a,
ASSOCIATION_MEMBER poe_am,
MEMBER poe_m,
ASSOCIATION_MEMBER ae_am,
MEMBER ae_m
where a.assoc_type = 'L'
and a.assoc_status_cd = 'A'
and a.assoc_id = poe_am.assoc_id
and poe_am.relation_type = 'POE'
and poe_am.mem_id = poe_m.mem_id
and poe_m.primary_assoc_id = ae_am.assoc_id
and ae_am.relation_type = 'EO_ID'
and ae_am.mem_id = ae_m.mem_id) a,
trans_education te
WHERE a.assoc_id = te.assoc_id(+)
AND a.poe = te.sender_id(+)
and te.last_changed_dt(+) BETWEEN '01-JUN-2001' AND '30-JUN-2001'
GROUP BY a.assoc_id,
a.poe,
a.ae_email_addr,
a.ae_name,
a.ae_assoc_id
UNION ALL
SELECT a.assoc_id poe_assoc_id,
a.poe poe,
'Demographic' table_type,
SUM(DECODE(td.record_change_type,'A',1,0)) adds,
SUM(DECODE(td.record_change_type,'C',1,0)) +
SUM(DECODE(td.record_change_type,'T',1,0)) changes,
SUM(DECODE(td.record_change_type,'D',1,0)) drops,
a.ae_email_addr ae_email_addr,
a.ae_name ae_name,
a.ae_assoc_id ae_assoc_id
FROM (select a.assoc_id,
poe_am.mem_id poe,
ae_m.first_name||' '||ae_m.last_name ae_name,
ae_am.assoc_id ae_assoc_id,
NVL(ae_m.email_addr,'[EMAIL PROTECTED]') ae_email_addr
from ASSOCIATION a,
ASSOCIATION_MEMBER poe_am,
MEMBER poe_m,
ASSOCIATION_MEMBER ae_am,
MEMBER ae_m
where a.assoc_type = 'L'
and a.assoc_status_cd = 'A'
and a.assoc_id = poe_am.assoc_id
and poe_am.relation_type = 'POE'
and poe_am.mem_id = poe_m.mem_id
and poe_m.primary_assoc_id = ae_am.assoc_id
and ae_am.relation_type = 'EO_ID'
and ae_am.mem_id = ae_m.mem_id) a,
trans_demographic td
WHERE a.assoc_id = td.assoc_id(+)
AND a.poe = td.sender_id(+)
and td.last_changed_dt(+) BETWEEN '01-JUN-2001' AND '30-JUN-2001'
GROUP BY a.assoc_id,
a.poe,
a.ae_email_addr,
a.ae_name,
a.ae_assoc_id)
where poe_assoc_id between 1000 and 5000
order by ae_email_addr, poe_assoc_id
/
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Ed
INET: [EMAIL PROTECTED]
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
San Diego, California -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).