generate/analyze trace for error 1461

Posted on

Question :

I am trying to generate a trace file when arise errors with code ORA-01461.
I have executed the following statements:

alter system set events '1461 trace name context forever, level 4';

from alert.log:

OS Pid: 4069 executed alter system set events '1461 trace name context forever, level 4'

from oradebug:

oradebug setmypid
oradebug eventdump system

1461 trace name CONTEXT level 4, forever

so, the event 1461 seems to be enabled. But if I try to arise an error ORA-01461 by hand, for example:

CREATE TABLE test (value VARCHAR2(1300 CHAR));

DECLARE
value VARCHAR2(5000 CHAR);
begin
value := RPAD('v', 4000, 'v') || 'test';
insert into test values(value);
END;
/ 
ORA-01461: can bind a LONG value only for insert into a LONG column

, no one tracefile is generated nor any line is added to the alert.log.

Database version:

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit
Production

Thank you in advance

Edit:

@Balazs Papp:
Thank you, setting event 1461 like you suggest:

alter system set events '1461 trace name errorstack level 3';

allows Oracle to generate a .trc file.
This is a statement that arises the error (an update):

UPDATE RAE_TASKS SET RAET_DESTINATION =  :v0 , RAET_OWNER =  :v1 , RAET_NEXT_RUN =  :v2 , RAET_APP_VER =  :v3 , RAET_CUSTOMER_ID =  :v4 , RAET_START_OF_PERIOD =  :v5 ,
RAET_FAILURES =  :v6 , RAET_DURATION =  :v7 , RAET_SOURCE =  :v8 , RAET_CONTEXT =  :v9 , RAET_STATUS =  :v10 , RAET_ADD_INFO_2 =  :v11 , RAET_TYPE =  :v12 , RAET_GRANUL
ARITY =  :v13  WHERE RAET_ID =  :v14

In order to examine the error a wanna check the bind variable passed.
But in the bind variables section is showed only the value of the first bind variable “Bind#0.. value=”etl””.. and also the siz is only showed for the first variable.
Just a snipped in the following

Bind#0
  oacdty=96 mxl=32(03) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=01 csi=871 siz=392 off=0
  kxsbbbfp=ffffffff7b76e8d0  bln=32  avl=03  flg=05
  value="etl"
 Bind#1
  oacdty=96 mxl=32(58) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=01 csi=871 siz=0 off=32
  kxsbbbfp=ffffffff7b76e8f0  bln=32  avl=00  flg=01
 Bind#2
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=00 csi=00 siz=0 off=64
  kxsbbbfp=ffffffff7b76e910  bln=22  avl=00  flg=01
 Bind#3
  oacdty=96 mxl=32(07) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=01 csi=871 siz=0 off=88
  kxsbbbfp=ffffffff7b76e928  bln=32  avl=00  flg=01
 Bind#4
  oacdty=101 mxl=08(64) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=00 csi=00 siz=0 off=120
  kxsbbbfp=ffffffff7b76e948  bln=08  avl=00  flg=01
...
...

Why Oracle does not show all values/sizes?

Edit2:

@Balazs Papp: I add the bit that remains:

 Bind#5
  oacdty=02 mxl=22(64) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=00 csi=00 siz=0 off=128
  kxsbbbfp=ffffffff7b76e950  bln=22  avl=00  flg=01
 Bind#6
  oacdty=02 mxl=22(64) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=00 csi=00 siz=0 off=152
  kxsbbbfp=ffffffff7b76e968  bln=22  avl=00  flg=01
 Bind#7
  oacdty=101 mxl=08(64) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=00 csi=00 siz=0 off=176
  kxsbbbfp=ffffffff7b76e980  bln=08  avl=00  flg=01
 Bind#8
  oacdty=96 mxl=32(11) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=01 csi=871 siz=0 off=184
  kxsbbbfp=ffffffff7b76e988  bln=32  avl=00  flg=01
 Bind#9
  oacdty=96 mxl=32(03) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=01 csi=871 siz=0 off=216
  kxsbbbfp=ffffffff7b76e9a8  bln=32  avl=00  flg=01
 Bind#10
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=00 csi=00 siz=0 off=248
  kxsbbbfp=ffffffff7b76e9c8  bln=22  avl=00  flg=01
 Bind#11
  oacdty=96 mxl=32(03) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=01 csi=871 siz=0 off=272
  kxsbbbfp=ffffffff7b76e9e0  bln=32  avl=00  flg=01
 Bind#12
  oacdty=96 mxl=32(07) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=01 csi=871 siz=0 off=304
  kxsbbbfp=ffffffff7b76ea00  bln=32  avl=00  flg=01
 Bind#13
  oacdty=96 mxl=32(06) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=01 csi=871 siz=0 off=336
  kxsbbbfp=ffffffff7b76ea20  bln=32  avl=00  flg=01
 Bind#14
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=01 fl2=1000000 frm=00 csi=00 siz=0 off=368
  kxsbbbfp=ffffffff7b76ea40  bln=22  avl=00  flg=01
 Frames pfr ffffffff7b76edd0 siz=10848 efr ffffffff7b76ece8 siz=10816
 Cursor frame dump
  enxt: 5.0x000004a8  enxt: 4.0x000007c0  enxt: 3.0x00000c78  enxt: 2.0x000001e0
  enxt: 1.0x00000f80
  pnxt: 2.0x00000008  pnxt: 1.0x00000018
 kxscphp  ffffffff7b740658 siz=1992 inu=736 nps=464
 kxscbhp  ffffffff7b740388 siz=984 inu=984 nps=416

The problem is that there are only these types: 96 (CHAR/NCHAR), 02 (NUMBER), 101 (BINARY_DOUBLE).
The desc of the affected table is as follows:

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 RAE_ID                                   NOT NULL NUMBER(13)
 RAE_CUSTOMER_ID                                   NUMBER(4)
 RAE_SOURCE                                        VARCHAR2(250)
 RAE_DESTINATION                                   VARCHAR2(250)
 RAE_START_OF_PERIOD                               NUMBER(13)
 RAE_GRANULARITY                                   VARCHAR2(50)
 RAE_DURATION                                      NUMBER(13)
 RAE_NEXT_RUN                                      NUMBER(13)
 RAE_STATUS                                        NUMBER(1)
 RAE_TYPE                                          VARCHAR2(30)
 RAE_OWNER                                         VARCHAR2(250)
 RAE_APP_VER                                       VARCHAR2(50)
 RAE_CHUNK_DIMENSION                               VARCHAR2(250)
 RAE_CHUNK_FROM                                    NUMBER(13)
 RAE_CHUNK_TO                                      NUMBER(13)
 RAE_FAILURES                                      NUMBER(6)
 RAE_END_OF_TASK                                   NUMBER(13)
 RAE_CONTEXT                                       VARCHAR2(50)
 RAE_ADD_INFO                                      VARCHAR2(250)
 RAE_ADD_INFO_2                                    VARCHAR2(250)
 RAE_ADD_INFO_3                                    VARCHAR2(250)
 RAE_ADD_INFO_4                                    VARCHAR2(250)
 RAE_ADD_INFO_5                                    VARCHAR2(250)
 RAE_ADD_INFO_6                                    VARCHAR2(250)

Answer :

Above setting doesn’t necessarily mean tracing, sometimes just enabling/disabling features if that is implemented. As far as I know, 1461 is not a diagnostic event, they are mostly in the 10000-11000 or higher regions, so I wouldn’t expect anything from the above. If you want trace files to be created on specific errors, enable the ERRORSTACK trace:

alter system set events '1461 trace name errorstack level 3';

Why exactly do you want to track down errors regarding ORA-01461? ORA-01461 is known to be related to various bugs, So depending on the problem you’re facing, I would first raise a SR with Oracle.

If you have MOSC access, take a look at Doc ID 456462.1.

Leave a Reply

Your email address will not be published. Required fields are marked *