Forum Stats

  • 3,768,301 Users
  • 2,252,772 Discussions
  • 7,874,520 Comments

Discussions

How to find when the index last used

Siva Ora
Siva Ora Member Posts: 138
edited Jul 29, 2013 12:26PM in General Database Discussions

Environment:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

Question:

1. How to find when the given index is last used?

2. How to find if the given index is useful to keep it or not ? or find the useless indexes.

Scenario:

  The are indexes with name startining with  ‘IDX$$_ ‘  are exists on our production database.

  Usually, when we use the recommendations of DBMS_AUTO_SQLTUNE, by running a SQL tuning task and the recommendation may have been to implement an index , at which time
  Oracle may have used this prefix and created an index name with 'IDX$$_'

  We would like to know if these indexes are really needed or it can be dropped.

Sivaprasad.S

Tagged:
Billy Verreynne

Answers

  • Billy Verreynne
    Billy Verreynne Software Engineer Member Posts: 28,581 Red Diamond
    edited Jul 26, 2013 8:58AM

    Please ask your questions in the most appropriate forum.

    Your question above has very little to do with Oracle Object features and technology - and is a question about the database (general use). In which case you should ask the question in

  • Tubby
    Tubby Member Posts: 6,987 Bronze Crown
    SivaprasadS wrote:
    
    Environment:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    
    Question:
    1. How to find when the given index is last used?
    2. How to find if the given index is useful to keep it or not ? or find the useless indexes.
    
    Scenario:
      The are indexes with name startining with  ‘IDX$$_ ‘  are exists on our production database.
    
      Usually, when we use the recommendations of DBMS_AUTO_SQLTUNE, by running a SQL tuning task and the recommendation may have been to implement an index , at which time 
      Oracle may have used this prefix and created an index name with 'IDX$$_'   We would like to know if these indexes are really needed or it can be dropped. Sivaprasad.S

    Altering Indexes

    Cheers,

  • paul.jackson
    paul.jackson Member Posts: 36
    edited Jul 26, 2013 3:11PM

    The main approach is to turn on monitoring for that index, however you can also query the saved plans.

    If you have the appropriate pack licensed, you can query dba_hist_sql_plan where object_name=<index_name>. This will show any plans that have used that index.

    Another thing to keep in mind, if the indexes are large in size you can make them invisible. In case they are needed,you can alter them as visible rather than rebuilding.

    Paul

  • Zlatko Sirotic
    Zlatko Sirotic Member Posts: 2,134 Gold Trophy

    Maybe it's time to change name from Objects to (eg) Object-relational features.

    Best regards

    Billy Verreynne
  • mtefft
    mtefft Member Posts: 836 Gold Badge

    Before concluding indexes are 'not used' you should also determine if they support any foreign-key, primary-key or unique constraints.

    If they are unique indexes then presumably there is a business rule (a unique constraint) that they enforce. Dropping such indexes would introduce a functional change.

    Indexes that correspond to foreign-key constraints may be more subtle. If Oracle is using them to valdiate foreign-key constraints (such as verifying that a row in a parent table has no related rows in a child table), this usage is not reflected in the plans. If you drop such an index, the enforcement would still occur but it may take much longer and introduce additional locking.

  • jgarry
    jgarry Member Posts: 13,842

    A couple of other things to keep in mind:

    Just because an index hasn't been used recently doesn't mean it isn't important.  One obvious consequence is an index used by a period-end batch, it's no fun to have people tapping their feet and watching over your shoulder at 7:30PM December 31st... there's nothing wrong with invisibility or creating such an index when needed, you just need to know ahead of time.

    The simple existence of an index may influence optimizer decisions, affecting performance.

    There are some interesting blogs and books about these topics, I'd say look at index used Richard Footes Oracle Blog

    and Indexing | Oracle Scratchpad to start.

This discussion has been closed.