码迷,mamicode.com
首页 > 其他好文 > 详细

Bug 9881143 : UTL_RECOMP.RECOMP_SERIAL RESULTS IN ORA-00955

时间:2014-07-18 19:36:22      阅读:437      评论:0      收藏:0      [点我收藏+]

标签:des   strong   os   art   io   for   

Hdr: 9881143 10.2.0.5.0 PLSQL 10.2.0.5.0 PACKAGES PRODID-11 PORTID-46
Abstract: UTL_RECOMP.RECOMP_SERIAL RESULTS IN ORA-955

*** 07/06/10 10:41 am ***
Problem description:
---------------------
When trying to re-execute UTL_RECOMP.RECOMP_SERIAL after the session was
terminated resulted in the error while trying to create an index:

ORA-955: name is already used by an existing object

According to the customer the sqlplus session that was executing the
UTL_RECOMP.RECOMP_SERIAL may have been terminated by sqlplus that is
executing the call is closed, connection to Oracle Database is lost, Database
shutdown, etc.

They unwrapped the UTL_RECOMP package and identified the following as where
they feel the code was in error:

When UTL_RECOMP was abort its possible that a following index was be created,
but not dropped, because UTL_RECOMP dont finish with success.

246       EXEC_FORCE(
247        ‘CREATE INDEX utl_recomp_comp_idx1 ON utl_recomp_compiled(obj#)‘
||
248           CASE
249            WHEN THREADS > 1 THEN
250              ‘ PARALLEL ‘ || THREADS
251            ELSE
252              ‘ NOPARALLEL‘
253           END
254          );
....
296       EXEC_FORCE(‘DROP INDEX utl_recomp_comp_idx1‘);

If this occur (its difficult create a test case), in next execution
UTL_RECOMP will do a error ORA-955, because index utl_recomp_comp_idx1
already exists and EXEC_FORCE don‘t have a EXCEPTION for this ORA-955:

  20    PROCEDURE EXEC_FORCE(COMMAND VARCHAR2) IS
  21    BEGIN
  22       EXECUTE IMMEDIATE COMMAND;
  23    EXCEPTION
  24       WHEN INDEX_NOT_EXIST OR
  25            SEQUENCE_NOT_EXIST THEN
  26          NULL;
  27    END;

They are unable to reproduce this error on demand.

Keywords:
--------
UTL_RECOMP

Available workarounds:
---------------------
Drop the index that the Ora-955 is erroring on and then re-run UTL_RECOMP.

Related bugs:
------------
Did you search for duplicate bugs?
Yes, none were found.

Additional information:
-----------------------

*** 07/07/10 05:48 am ***
*** 07/07/10 05:48 am ***
*** 07/07/10 06:18 am ***
*** 07/07/10 06:18 am *** (CHG: Sta->35)
*** 07/07/10 06:18 am ***
Looking at the code in MAIN (RDBMS_MAIN_LINUX_100705) the indexes are dropped
using exec_force which ignores index doesn‘t exist errors.  Procedure init
drops the following indexes:

- utl_recomp_comp_idx1
- utl_recomp_sort_idx1
- utl_recomp_sort_idx2

and is called at the start of recomp_parallel which is what recomp_serial
calls passing the number of threads as 1.  So the very first thing it does it
drop the indexes.

The indexes are also referenced in function select_invalid_parallel_objs
which:

- drops utl_recomp_sort_idx1
- drops utl_recomp_sort_idx2
- creates utl_recomp_comp_idx1
- creates utl_recomp_sort_idx1
- drops utl_recomp_comp_idx1
- creates utl_recomp_sort_idx2 if required.

So yes utl_recomp_comp_idx1 could get left behind if the process fails mid
way through this function however, upon the next rerun, it will attempt to
drop all three again.

Checking the package in 10.2.0.5.  Here procedure init does not drop the
indexes - it only truncates the tables and resets the sequence.  So this
problem is fixed in MAIN (11.2.0.2).  Checked to see where this is first
fixed - 11.1.0.6. 

*** 02/14/11 12:58 am *** (CHG: Sta->11 Sev->2)
*** 02/14/11 12:58 am ***
*** 02/14/11 02:13 am ***
*** 02/14/11 02:13 am *** (CHG: Sta->35)
*** 02/14/11 02:13 am ***
*** 03/19/14 06:11 pm ***
*** 04/04/14 12:30 am ***

Bug 9881143 : UTL_RECOMP.RECOMP_SERIAL RESULTS IN ORA-00955,布布扣,bubuko.com

Bug 9881143 : UTL_RECOMP.RECOMP_SERIAL RESULTS IN ORA-00955

标签:des   strong   os   art   io   for   

原文地址:http://www.cnblogs.com/bigsesame/p/3850509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!