Re: Unusable partition index -- working funny

2004-01-22 Thread Jonathan Lewis

I would check which index is being reported as
unusable, and check the access path for the
query when all indexes are useable.

Since you have a statement level trigger, I suspect
Oracle is producing an execution plan that dictate
the use of index X.

The plan executes, which means the trigger fires,
but the execution engine is committed to using
index X - which happens to be unusable, so the
statement fails.

On the second call, the session parameters have
changed, so Oracle re-parses the update, and
ignores the unusable index, choosing a different
plan.  Consequently the update can work.

In the case where the index being used to access
the data is useable (i.e. where only the index on
the updated column is unusable), I would assume
that Oracle makes the decision about updating
indexes only after columns have been updated,
therefore it can notice the effect of session switch
in mid-statement.





Regards

Jonathan Lewis
http://www.jlcomp.demon.co.uk

  The educated person is not the person
  who can answer the questions, but the
  person who can question the answers -- T. Schick Jr


Next public appearance2:
 March 2004 Hotsos Symposium - Keynote
 March 2004 Charlotte NC - OUG Tutorial
 April 2004 Iceland


One-day tutorials:
http://www.jlcomp.demon.co.uk/tutorial.html


Three-day seminar:
see http://www.jlcomp.demon.co.uk/seminar.html
UK___February


The Co-operative Oracle Users' FAQ
http://www.jlcomp.demon.co.uk/faq/ind_faq.html


- Original Message - 
To: Multiple recipients of list ORACLE-L [EMAIL PROTECTED]
Sent: Thursday, January 22, 2004 12:19 AM


 Thanks for your reply Jonathan..Here is an update..
 The update that i sent you yesterday is updating a column on which there
 is a local bitmap index. There are also other local bitmsap indexes on
 that partitions. Yesterday i made all the local indexes pertaining to
 that partition UNUSABLE and we got the results that i posted
 yesterday..Today i went and made all the indexes usable and then made
 only the local index on the column which we are updating unusable while
 the rest of the local bitmap indexes were usable. and then the update
 stmt was run. There was NO problem at all. It ran the first time without
 giving the error of index being in the unusable state. That nmeans the
 trigger has fired. So what would be the explanation in this case.
 If i make only that local bitmap index unusable, it works ok but if i
 make all the local bitmap indexes unusable in that partition, we get the
 situation that i posted yesterday..

 Thanks,

 Sathish.

 
 SQL connect [EMAIL PROTECTED]
   Enter password: **
   Connected.
   SQL UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY
=
   1 where
 2  mortgage_loan_key = 1 and period_key = '30-JUN-03';
   UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
   1166444 where
   *
   ERROR at line 1:
   ORA-01502: index 'NEVADMIN.DM_MORTGAGE_LOAN_HIST_BK13' or partition of
   such
   index is in unusable state
  
   SQL /
  
   1 row updated.
 -

 On Wed, 21 Jan 2004 00:24:25 -0800, Jonathan Lewis
 [EMAIL PROTECTED] said:
 
  It's probably the case that the trigger fires
  the first time - but at parse/optimise time
  Oracle had already determined the sequence
  of actions needed to execute the statement
  based on the then session state, so that sequence
  is played out, irrespective of the fact that you
  changed the session state in the middle of
  the sequence.
 
  By analogy, consider an update to an
  updatable join view which defaults to
  using a hash join.  If you create a before
  row update trigger to disable hash joins,
  would you expect Oracle to not do a hash
  join the first time the statement executes ?
 
 
  Regards
 
  Jonathan Lewis
  http://www.jlcomp.demon.co.uk
 
The educated person is not the person
who can answer the questions, but the
person who can question the answers -- T. Schick Jr
 
 
  Next public appearance2:
   March 2004 Hotsos Symposium - Keynote
   March 2004 Charlotte NC - OUG Tutorial
   April 2004 Iceland
 
 
  One-day tutorials:
  http://www.jlcomp.demon.co.uk/tutorial.html
 
 
  Three-day seminar:
  see http://www.jlcomp.demon.co.uk/seminar.html
  UK___February
 
 
  The Co-operative Oracle Users' FAQ
  http://www.jlcomp.demon.co.uk/faq/ind_faq.html
 
 
  - Original Message - 
  To: Multiple recipients of list ORACLE-L [EMAIL PROTECTED]
  Sent: Wednesday, January 21, 2004 12:19 AM
 
 
   Hello All,
 I have a strange problem...
 I have a table on which i am doing an update. Its a partition table
and
 the local index on the column which is being updated is in an
unusable
 state.
I have a database trigger at statement level (before update of col_a
for
) where i do an execute immediate ' alter session set
skip_unusable_indexes = true';
  
 

Re: Unusable partition index -- working funny

2004-01-21 Thread Jonathan Lewis

It's probably the case that the trigger fires
the first time - but at parse/optimise time
Oracle had already determined the sequence
of actions needed to execute the statement
based on the then session state, so that sequence
is played out, irrespective of the fact that you
changed the session state in the middle of
the sequence.

By analogy, consider an update to an
updatable join view which defaults to
using a hash join.  If you create a before
row update trigger to disable hash joins,
would you expect Oracle to not do a hash
join the first time the statement executes ?


Regards

Jonathan Lewis
http://www.jlcomp.demon.co.uk

  The educated person is not the person
  who can answer the questions, but the
  person who can question the answers -- T. Schick Jr


Next public appearance2:
 March 2004 Hotsos Symposium - Keynote
 March 2004 Charlotte NC - OUG Tutorial
 April 2004 Iceland


One-day tutorials:
http://www.jlcomp.demon.co.uk/tutorial.html


Three-day seminar:
see http://www.jlcomp.demon.co.uk/seminar.html
UK___February


The Co-operative Oracle Users' FAQ
http://www.jlcomp.demon.co.uk/faq/ind_faq.html


- Original Message - 
To: Multiple recipients of list ORACLE-L [EMAIL PROTECTED]
Sent: Wednesday, January 21, 2004 12:19 AM


 Hello All,
   I have a strange problem...
   I have a table on which i am doing an update. Its a partition table and
   the local index on the column which is being updated is in an unusable
   state.
  I have a database trigger at statement level (before update of col_a for
  ) where i do an execute immediate ' alter session set
  skip_unusable_indexes = true';

   i log into sqlplus as the owner of the table and do the following
 

 SQL connect [EMAIL PROTECTED]
 Enter password: **
 Connected.
 SQL UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
 1 where
   2  mortgage_loan_key = 1 and period_key = '30-JUN-03';
 UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
 1166444 where
 *
 ERROR at line 1:
 ORA-01502: index 'NEVADMIN.DM_MORTGAGE_LOAN_HIST_BK13' or partition of
 such
 index is in unusable state

 SQL /

 1 row updated.
 --
-

 My question is why does the trigger not fire for the first time...
 When i do the /  i am able to update the table which means the trigger is
 firing the 2nd time.

 Any help would be greatly appriciated..

 thanks,

 sathish.


-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Jonathan Lewis
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
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).


Re: Unusable partition index -- working funny

2004-01-21 Thread sat0789
Thanks for your reply Jonathan..Here is an update..
The update that i sent you yesterday is updating a column on which there
is a local bitmap index. There are also other local bitmsap indexes on
that partitions. Yesterday i made all the local indexes pertaining to
that partition UNUSABLE and we got the results that i posted
yesterday..Today i went and made all the indexes usable and then made
only the local index on the column which we are updating unusable while
the rest of the local bitmap indexes were usable. and then the update
stmt was run. There was NO problem at all. It ran the first time without
giving the error of index being in the unusable state. That nmeans the
trigger has fired. So what would be the explanation in this case. 
If i make only that local bitmap index unusable, it works ok but if i
make all the local bitmap indexes unusable in that partition, we get the
situation that i posted yesterday..

Thanks,

Sathish.


SQL connect [EMAIL PROTECTED]
  Enter password: **
  Connected.
  SQL UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
  1 where
2  mortgage_loan_key = 1 and period_key = '30-JUN-03';
  UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
  1166444 where
  *
  ERROR at line 1:
  ORA-01502: index 'NEVADMIN.DM_MORTGAGE_LOAN_HIST_BK13' or partition of
  such
  index is in unusable state
 
  SQL /
 
  1 row updated.
-

On Wed, 21 Jan 2004 00:24:25 -0800, Jonathan Lewis
[EMAIL PROTECTED] said:
 
 It's probably the case that the trigger fires
 the first time - but at parse/optimise time
 Oracle had already determined the sequence
 of actions needed to execute the statement
 based on the then session state, so that sequence
 is played out, irrespective of the fact that you
 changed the session state in the middle of
 the sequence.
 
 By analogy, consider an update to an
 updatable join view which defaults to
 using a hash join.  If you create a before
 row update trigger to disable hash joins,
 would you expect Oracle to not do a hash
 join the first time the statement executes ?
 
 
 Regards
 
 Jonathan Lewis
 http://www.jlcomp.demon.co.uk
 
   The educated person is not the person
   who can answer the questions, but the
   person who can question the answers -- T. Schick Jr
 
 
 Next public appearance2:
  March 2004 Hotsos Symposium - Keynote
  March 2004 Charlotte NC - OUG Tutorial
  April 2004 Iceland
 
 
 One-day tutorials:
 http://www.jlcomp.demon.co.uk/tutorial.html
 
 
 Three-day seminar:
 see http://www.jlcomp.demon.co.uk/seminar.html
 UK___February
 
 
 The Co-operative Oracle Users' FAQ
 http://www.jlcomp.demon.co.uk/faq/ind_faq.html
 
 
 - Original Message - 
 To: Multiple recipients of list ORACLE-L [EMAIL PROTECTED]
 Sent: Wednesday, January 21, 2004 12:19 AM
 
 
  Hello All,
I have a strange problem...
I have a table on which i am doing an update. Its a partition table and
the local index on the column which is being updated is in an unusable
state.
   I have a database trigger at statement level (before update of col_a for
   ) where i do an execute immediate ' alter session set
   skip_unusable_indexes = true';
 
i log into sqlplus as the owner of the table and do the following
  
 
  SQL connect [EMAIL PROTECTED]
  Enter password: **
  Connected.
  SQL UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
  1 where
2  mortgage_loan_key = 1 and period_key = '30-JUN-03';
  UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
  1166444 where
  *
  ERROR at line 1:
  ORA-01502: index 'NEVADMIN.DM_MORTGAGE_LOAN_HIST_BK13' or partition of
  such
  index is in unusable state
 
  SQL /
 
  1 row updated.
  --
 -
 
  My question is why does the trigger not fire for the first time...
  When i do the /  i am able to update the table which means the trigger is
  firing the 2nd time.
 
  Any help would be greatly appriciated..
 
  thanks,
 
  sathish.
 
 
 -- 
 Please see the official ORACLE-L FAQ: http://www.orafaq.net
 -- 
 Author: Jonathan Lewis
   INET: [EMAIL PROTECTED]
 
 Fat City Network Services-- 858-538-5051 http://www.fatcity.com
 San Diego, California-- Mailing list and web hosting services
 -
 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).

-- 
http://www.fastmail.fm - Send your email first class
-- 
Please see the 

Unusable partition index -- working funny

2004-01-20 Thread sat0789
Hello All,
  I have a strange problem...
  I have a table on which i am doing an update. Its a partition table and
  the local index on the column which is being updated is in an unusable
  state.
 I have a database trigger at statement level (before update of col_a for
 ) where i do an execute immediate ' alter session set
 skip_unusable_indexes = true';

  i log into sqlplus as the owner of the table and do the following


SQL connect [EMAIL PROTECTED]
Enter password: **
Connected.
SQL UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
1 where
  2  mortgage_loan_key = 1 and period_key = '30-JUN-03';
UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
1166444 where
*
ERROR at line 1:
ORA-01502: index 'NEVADMIN.DM_MORTGAGE_LOAN_HIST_BK13' or partition of
such
index is in unusable state

SQL /

1 row updated.
---

My question is why does the trigger not fire for the first time...
When i do the /  i am able to update the table which means the trigger is
firing the 2nd time. 

Any help would be greatly appriciated..

thanks,

sathish.

  

-- 
http://www.fastmail.fm - Consolidate POP email and Hotmail in one place
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: 
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
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).


RE: Unusable partition index -- working funny

2004-01-20 Thread Khedr, Waleed
My guess it's firing the first time but is not taking effect during the
current transaction may be because it fires as a recursive sql within the
main sql.

Not a good idea to put this in a trigger.

Regards,

Waleed

-Original Message-
Sent: Tuesday, January 20, 2004 7:19 PM
To: Multiple recipients of list ORACLE-L


Hello All,
  I have a strange problem...
  I have a table on which i am doing an update. Its a partition table and
  the local index on the column which is being updated is in an unusable
  state.
 I have a database trigger at statement level (before update of col_a for
 ) where i do an execute immediate ' alter session set
 skip_unusable_indexes = true';

  i log into sqlplus as the owner of the table and do the following


SQL connect [EMAIL PROTECTED]
Enter password: **
Connected.
SQL UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
1 where
  2  mortgage_loan_key = 1 and period_key = '30-JUN-03';
UPDATE nevadmin.DM_MORTGAGE_LOAN_HIST SET ORIGINATION_SOURCE_KEY =
1166444 where
*
ERROR at line 1:
ORA-01502: index 'NEVADMIN.DM_MORTGAGE_LOAN_HIST_BK13' or partition of
such
index is in unusable state

SQL /

1 row updated.

---

My question is why does the trigger not fire for the first time...
When i do the /  i am able to update the table which means the trigger is
firing the 2nd time. 

Any help would be greatly appriciated..

thanks,

sathish.

  

-- 
http://www.fastmail.fm - Consolidate POP email and Hotmail in one place
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: 
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
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).
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Khedr, Waleed
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
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).