Re: ora-600 with table...cast... on 10.2.0.3 / al32utf8 / linux

From: Vladimir M. Zakharychev <vladimir.zakharychev_at_gmail.com>
Date: Sun, 3 Feb 2008 01:28:19 -0800 (PST)
Message-ID: <4f7edf14-e327-44eb-afbb-416949a50a62@v46g2000hsv.googlegroups.com>


On Feb 1, 6:32 pm, codadilupo <codadil..._at_operamail.com> wrote:
> If you have a 10.2.0.3 AL32UTF8 DB on Linux, are you able to reproduce this?
>
> Script p.sql is:
>
> --------
> declare
> x1 Varchar2TableType ;
> x2 Varchar2TableType ;
> begin
> x1 := Varchar2TableType('aaa','bbb','ccc') ;
> select
> column_value val
> bulk collect into
> x2
> from
> table(cast(x1 as Varchar2TableType))
> ;
> end ;
> /
> --------
>
> SQL> create or replace type Varchar2TableType as table of varchar2(32767
> byte);
> 2 /
>
> Type created.
>
> SQL> @s
>
> PL/SQL procedure successfully completed.
>
> SQL> create or replace type Varchar2TableType as table of varchar2(32767
> char);
> 2 /
>
> Type created.
>
> SQL> @s
> declare
> *
> ERROR at line 1:
> ORA-00600: internal error code, arguments: [15201], [], [], [], [], [],
> [], []
> ORA-06512: at line 6

It looks like you stretched the database beyond its limits: one of the possible causes of ORA-600 [15201] is when allocation of a memory chunk larger than 32k is attempted, which is most probably the case here as 32767 CHAR in AL32UTF8 (or any other multibyte charset) consumes more than 32k. You can check if this is the case by inspecting the call stack trace in the error trace file: if the call stack includes kksmal0 then it's memory allocation error indeed.

Regards,

   Vladimir M. Zakharychev
   N-Networks, makers of Dynamic PSP(tm)    http://www.dynamicpsp.com Received on Sun Feb 03 2008 - 03:28:19 CST

Original text of this message