Detail questions about indexes?

We are trying to reduce coherence index heap use in our application using partitioned cache (we use near but it is the partitioned back tier that holds the indexes) and therefore needs to better understandand some details (we are right now using version 3.6 but will eventually change to 3.7 so if any of the answer are different for the two please indivcate that):
1. Are any indexes (or some part of them) maintained per partition (would be my guess since it is possible to efficiently apply PartitionFilter) or are they all per node?
2. Are any part of the indexes in binary form or are both the keys and values in the form of "java objects"?
Best Regards
Magnus

MagnusE wrote:
Thanks for the info.
I got a bit confused about your description of the forward and reverse indexes - I would have assumed that what is referred to as "forward index" would map keys to values provided by the extractor and the "reverse index" map values returned by extractors to possibly multiple keys that have extractors returning this value but it seems like it is the other way around or?!
Hi Magnus,
what you wrote first is correct.
The forward index is a map of internal (binary) keys to extracted values. This has the could be stored in the backing map entry, but I don't think it is done as that would make plugging in index implementation with IndexAwareExtractor much more problematic. Too bad, as it would have been a nice optimization.
The reverse index is a map of extracted values as keys to values of a collection or array (logically a set) of internal (binary) keys of entries the extracted value was extracted from.
So if you have a NamedCache<K,V> and extracted value type is X, then forward index is Map<Binary<K>,X> and reverse index is a Map<X,Set<Binary<K>>> for unsorted indexes and SortedMap<X,Set<Binary<K>>> in case of sorted indexes.
The map and set implementations may differ from implementation version to implementation version.
I don't know what you refer to which would describe it the other way round.
In our case the indexes seem to occupy a lot more heap than the data itself(!!!). That is quite conceivable if you have attributes which can take lots of different values, as in that case the reverse index will also have many entries, each entry value being a set which is not exactly a lean thing either.
It is in particular an index containing information about what cache objects that reference what other cache objects (we use this to answer "where used" questions i.e. what objects contains references to object X) that seem to occupy LOTS of space...
Again, that is lots of different values thus lots of entries in reverse index.
Do you think that your analysis can be easily extended to extractors returning a collection (as is the case for our "gigantic" index) or do they require more investigation?A collection is just a value. If two collections do not equal by the equals() method, then they will have different reverse index entries. It is quite feasible to implement a forward-only index in case you don't need to filter for equality, but you just want to avoid deserialization.
>
With 3.6.1.4 we have done some preliminary tests with different number of partitions and it seems (not fully verified) that it makes a significant difference (fewer partitions = lower index size) so maybe they something has changed from 3.5 (with your analysis I do not see any indication that number of partitions should affect index size or have I missed something to that effect)...
Number of partitions do not affect index size at the moment, indexes are not partitioned in 3.6. (Probably not even in 3.7). The only case when they would influence index size would be if you had partitioned reverse index (and that would make reverse index footprint possibly worse, but definitely not better) analogously to having more nodes causes higher total index footprint.
It is a pity that Oracle don't provide this kind of technical information in the documentation - for a this kind of product it is often essential for developers / architects to have as detailed info as possible...
I don't see what documentation you are really missing. Coherence indexes are instances of SimpleMapIndex which class has a Javadoc. Alexey and I have several times described the structure of indexes on the forum and in the blog. The Coherence book quite aptly describes it. All those descriptions are still valid as index strutures have not significantly changed since 3.0 except that starting with 3.6 you can plug in your own implementation of MapIndex instead of SimpleMapIndex. There was an optimization around 3.5-3.6 time (as far as I remember in one of the 3.5.x patch releases and 3.6) which ensured that you don't have multiple references to the equaling extracted objects (after a request Alexey submitted after one of his blog entries describing index usage), but really that is all, and even that was not a structural change. Semantically, having sparse indexes and forward-only indexes became possible with 3.6 (by plugging in your own implementation), and I don't remember which version introduced not indexing null values which cuts down on size a bit if nulls are frequent and not interesting.
Best regards,
Robert

Similar Messages

  • Question about Index in data selection

    Hi experts,
    I am reading the documents about index today and find there are some questions confused me. Plz help, thx!
    1 What is the technical structure of index?
    For example, I have a table ztable with 5 fields, F1(key), F2(key). F3. F4.F5. If I create a index on F3,F4, the system will create a copy of this table. Is the structure of this copy as follow?
    F3, F4, pointer(for the lineno of the recorder)
    So this copy will have fewer lines than the ZTABLE and is sorted. If the DB optimizer choose this index in selection, it will be fast for the 2 reasons?
    2 By what is the sequence of the fields in the index determined? I read a BLOG about permance, the author make a example with DB05, and say if the distinct values of certain field is between 1-1000 lines, it is good to set a secondary index for the field.
    I wonder, if the F3 has only 5 distinct value for all the data in the ZTABLE, and the F4 has 100 distinct value. Which one should be the first field in the index and why?
    Thx!!~

    Hi,
    1 What is the technical structure of index?
    For example, I have a table ztable with 5 fields, F1(key), F2(key). F3. F4.F5. If I create a index on F3,F4, the system will create a copy of this table. Is the structure of this copy as follow?
    F3, F4, pointer(for the lineno of the recorder)
    So this copy will have fewer lines than the ZTABLE and is sorted. If the DB optimizer choose this index in selection, it will be fast for the 2 reasons?
    2 By what is the sequence of the fields in the index determined? I read a BLOG about permance, the author make a example with DB05, and say if the distinct values of certain field is between 1-1000 lines, it is good to set a secondary index for the field.
    I wonder, if the F3 has only 5 distinct value for all the data in the ZTABLE, and the F4 has 100 distinct value. Which one should be the first field in the index and why?
    You seem to be correct for some but not all.
    Struture of index will
    for unique key index F3, F4, row id of database
    it could have only one row id when your where condition match with the index then it goes to only index table first and read the row id and read record directly from the row id.
    But for non unique key table store all the F3, F4, row id of record which math value of F1 and F4. It can have multiple value.
    When your where condition math with condition partially ie left part of the key or whole part key then read all match record from the index table and then read the database physical table and check for addation where condition if any.
    Index is determine on basis of the where condtion which is most left part of index will match.
    if your where condition F4 and in your index has f3 f4 then index will not consider, It create gap between index condition and read whole table database. But if you consider f3 then only it consider the index to read because it match the left most part with index fields.
    For more details How to create secondary index ? Search for blog in sdn I reply many time.

  • Questions about Indexing and Using an Indexing POA

    Although I have only about 50 users, at least 15 of them have in excess of 100,000 messages in their accounts and the POA (version 7.0.2) is regularly slowing to a crawl. (I just know that plans for revolution are fomenting!) I have embarked on a campaign to reduce these accounts by archiving everything off to get mail accounts down to 3000 or fewer pieces. I have achieved user buy-in, but have worked on only a few users so far.
    In another closely related thread, it was suggested to me that the PO speed issues relate to broken indexes. And I suspect that given so many messages, the indexes were never getting fully rebuilt with the default QF POA settings. I am trying to fix that situation in addition to reducing mail account sizes. So, I have set up a second POA on another server and dedicated it to the indexing task. The /qfinterval is set for 1 hour, other /qf switches at default. The POA-QF does no mail delivery, but it does do nightly user upkeep.
    The POA-QF seems to be steadily working away and making progress at reducing the number of unindexed messages. However, I have questions about what I am seeing and what more I can do:
    1. Is the progress I am seeing real progress? For example I have a user with over 100,000 messages to be indexed and every time I check the logs, the count drops by about 500 messages per hourly QF cycle. I assume that if I just let it keep running, it will eventually get caught up and fixed. Not only with this user, but with all the others as well. Will my patience (and theirs) be rewarded? Are there any gotchas I need to prepare for?
    2. One user has recently had virtually all of her messages successfully moved to archive. I can see them in the Archive, and do not see them in the online account. However, now over a week later, QF still shows >130,000 items still left to index for that user. The POA-QF is making slow, steady progress reducing that number, but why is this user's QF count still so high? Does it just need more time, or is there something amiss for this user?
    3. I may want to rebuild indexes for single users from scratch. I have seen the TID 3105742 which tells how to do this: Essentially you turn off mail delivery functions, and make some other switch changes to dedicate the POA to indexing for just a single user, and then you let the POA rebuild the indexes. The implication of that scenario is that the POA is now enjoying exclusive access to the user's databases.
    If I want to use my secondary POA-QF to rebuild a user's index from scratch, does the main POA have to be offline and the user out of GWise? That is, Does the QF process require exclusive access in order to rebuild indexes from scratch?
    Thanks for any thoughts or suggestions.
    Peter Smick

    pgsmick wrote:
    > 1. Is the progress I am seeing real progress? For example I have a user with
    > over 100,000 messages to be indexed and every time I check the logs, the count
    > drops by about 500 messages per hourly QF cycle. I assume that if I just let
    > it keep running, it will eventually get caught up and fixed. Not only with
    > this user, but with all the others as well. Will my patience (and theirs) be
    > rewarded? Are there any gotchas I need to prepare for?
    Set this switch for this indexing POA - /qflevel=999 - this will index
    everything in one run. It will take a long time, but with no qflevel switch you
    are indeed only indexing 500 messages at a time, and if the user has that much
    mail, it might never really catch up.
    >
    > 2. One user has recently had virtually all of her messages successfully moved
    > to archive. I can see them in the Archive, and do not see them in the online
    > account. However, now over a week later, QF still shows >130,000 items still
    > left to index for that user. The POA-QF is making slow, steady progress
    > reducing that number, but why is this user's QF count still so high? Does it
    > just need more time, or is there something amiss for this user?
    >
    This is odd, because really the index count should drop to nothing, but with the
    above switch this might get resolved as well.
    > 3. I may want to rebuild indexes for single users from scratch. I have seen
    > the TID 3105742 which tells how to do this: Essentially you turn off mail
    > delivery functions, and make some other switch changes to dedicate the POA to
    > indexing for just a single user, and then you let the POA rebuild the indexes.
    > The implication of that scenario is that the POA is now enjoying exclusive
    > access to the user's databases.
    Not really - the POA is not enjoying exclusive access to the user's database,
    the indexer is just avoiding an attempt to index anything else.
    > If I want to use my secondary POA-QF to rebuild a user's index from scratch,
    > does the main POA have to be offline and the user out of GWise? That is, Does
    > the QF process require exclusive access in order to rebuild indexes from
    > scratch?
    No - QF never requires exclusive access. That said, you may find that an
    extremely vigorous QF can cause slowdowns for the user.
    Danita
    Novell Knowledge Partner
    Moving GroupWise to Linux?
    http://www.caledonia.net/gwmove.html

  • A question about indexes

    When I am at it, I can ask another thing I have been wondering for the longest time.
    Sometimes our indexes are 2 rows. Everything works perfectly, except for when the text in the marker is so long that it takes up more than 1 line in the index. I have to manually break the line and add a tab for these lines to look good.
    Example:
    I want it to look like this:
    The only way that can happen is if I go in and manually add the - and the linebreak and then add a tab. It's easy to forget.
    Anybody have a solution? Frame 7.2b128
    Lena

    Michael and Johannes.
    Thank you both for your answers. Strangely enough I didn't get a notice about you answering my question until now, 3 days after...
    Yes, I am talking about TOC. Sorry, English is not my first language. We call it index, so I just wrote that. Johannes solution sounds interesting. Right now I am working on a book without a TOC, but I will look back here and implement your suggestion when I go back to the other book again!
    Thanks again!

  • Question about index in Hana

    As far as i know that hana can automatically create a "reverted index" in column table. i also notice in SQL reference guide, that there also "create index" and also we can chage "revert index type (hash/value) " in unique constrains.
    so my quesiton is:
    1. what is the use case of sentence "create index", whether this index is hana's inverted index or classical DB's index
    2. in which case, we should mannually create or build index to replace the one hana automatically create for us.
    any hint is very appreciate

    Hi Jerry,
    Thanks for your response. does Hana create reverted index for each column in one table.
    because from one document i catch these words
    HANA automatically creates an index for all key columns. Columns with index are marked with ‚Index Type = FULL‛ in the table definition window:
    Having an index for all key columns is usually sufficient as queries will typically put filter conditions on key columns. In use cases where filter conditions are on non-key fields and tables have many records, creating an index on this non-key field might improve the performance.
    The syntax to create an index is
    CREATE INDEX <name> ON <table> (<column>)
    i guess it maybe a bit out-of-date, but i am also has 2 questions: (1) what is the key column; (2) how can i found these automatically index generated by Hana
    very appreciate your kindly help
    Regards,
    William

  • Easy question about indexes

    Hello,
    I have a table of 100000 rows:
    MyTable
    MyID number(4,0),
    Otherfields ,
    Name varchar2(30),
    LastName varchar(35),
    If I query and just select 60 rows from a total of 100000 rows:
    SELECT MyID, OtherFields, Name,LastName
    FROM MyTable
    WHERE MyID=11
    ORDER BY LastName,Name
    Actually I need an index for MyID field. But would I need an index for LastName and Name? I think I don't, because I'm not using those fields for filtering. Am I correct?
    Thanks!

    With this you could see more in detail the issues to consider at the time to index a table.
    SQL>
    SQL> create table mytable
      2  (
      3  myid number(4,0),
      4  name varchar2(30),
      5  lastname varchar(35));
    Table created.
    SQL>
    SQL> explain plan for
      2  select * from
      3  mytable where
      4  myid=11
      5  order by lastname, name;
    Explained.
    SQL> select * from table ( dbms_xplan.display );
    PLAN_TABLE_OUTPUT
    | Id  | Operation            |  Name       | Rows  | Bytes | Cost  |
    |   0 | SELECT STATEMENT     |             |       |       |       |
    |   1 |  SORT ORDER BY       |             |       |       |       |
    |   2 |   TABLE ACCESS FULL  | MYTABLE     |       |       |       |
    Note: rule based optimization, 'PLAN_TABLE' is old version
    10 rows selected.
    SQL> create index i1 on mytable(myid);
    Index created.
    SQL> explain plan for
      2  select * from
      3  mytable where
      4  myid=11
      5  order by lastname, name;
    Explained.
    SQL> select * from table ( dbms_xplan.display );
    PLAN_TABLE_OUTPUT
    | Id  | Operation                    |  Name       | Rows  | Bytes | Cost  |
    |   0 | SELECT STATEMENT             |             |       |       |       |
    |   1 |  SORT ORDER BY               |             |       |       |       |
    |   2 |   TABLE ACCESS BY INDEX ROWID| MYTABLE     |       |       |       |
    |   3 |    INDEX RANGE SCAN          | I1          |       |       |       |
    Note: rule based optimization, 'PLAN_TABLE' is old version
    11 rows selected.
    SQL>
    SQL>
    SQL> create index i2 on  mytable(myid,lastname, name);
    Index created.
    SQL> explain plan for
      2  select * from
      3  mytable where
      4  myid=11
      5  order by lastname, name;
    Explained.
    SQL> select * from table ( dbms_xplan.display );
    PLAN_TABLE_OUTPUT
    | Id  | Operation                    |  Name       | Rows  | Bytes | Cost  |
    |   0 | SELECT STATEMENT             |             |       |       |       |
    |   1 |  SORT ORDER BY               |             |       |       |       |
    |   2 |   TABLE ACCESS BY INDEX ROWID| MYTABLE     |       |       |       |
    |   3 |    INDEX RANGE SCAN          | I1          |       |       |       |
    Note: rule based optimization, 'PLAN_TABLE' is old version
    11 rows selected.
    SQL>
    SQL> drop index i1;
    Index dropped.
    SQL>
    SQL> explain plan for
      2  select * from
      3  mytable where
      4  myid=11
      5  order by lastname, name;
    Explained.
    SQL> select * from table ( dbms_xplan.display );
    PLAN_TABLE_OUTPUT
    | Id  | Operation            |  Name       | Rows  | Bytes | Cost  |
    |   0 | SELECT STATEMENT     |             |       |       |       |
    |   1 |  SORT ORDER BY       |             |       |       |       |
    |   2 |   INDEX RANGE SCAN   | I2          |       |       |       |
    Note: rule based optimization, 'PLAN_TABLE' is old version
    10 rows selected.
    SQL>Creating the index i1 you will have pros and cons regarding to the creation of the index i2 and viceversa. If you want to what are them, you could reply
    Joel Pérez
    http://www.oracle.com/technology/experts

  • Why do I get the question about index.html when I try to publish a new site?

    When I try to publish a new or corrected ftp website (anyone)  I get a message saying that the file "index.html" already is present on the web and am asked if I want to replace it. What does that mean? I do not want to replace that site, only to publish new ones or repair old ones

    Read this to learn about the index.html file :
         The concept of iWeb Sites
    Replace the index.html file when asked.

  • Question about INDEX

    What is the difference between two following create table statements ?
    CREATE TABLE emp (
    empno NUMBER(5) PRIMARY KEY)
    ENABLE PRIMARY KEY USING INDEX
    AND
    CREATE TABLE emp (
    empno NUMBER(5) PRIMARY KEY)
    Thanks in advance

    The second statement is explicit whereas the first statement relies on the defaults. As can be seen below the primary key works in both cases.
    SQL&gt; CREATE TABLE emp (
      2  empno NUMBER(5) PRIMARY KEY)
      3  ENABLE PRIMARY KEY USING INDEX
      4  /
    Table created.
    SQL&gt; insert into emp values (1)
      2  /
    1 row created.
    SQL&gt; r
      1* insert into emp values (1)
    insert into emp values (1)
    ERROR at line 1:
    ORA-00001: unique constraint (APC.SYS_C009929) violated
    SQL&gt; drop table emp
      2  /
    Table dropped.
    SQL&gt; CREATE TABLE emp (
      2  empno NUMBER(5) PRIMARY KEY)
      3  /
    Table created.
    SQL&gt; insert into emp values (1)
      2  /
    1 row created.*
    SQL&gt; r
      1* insert into emp values (1)
    insert into emp values (1)
    ERROR at line 1:
    ORA-00001: unique constraint (APC.SYS_C009930) violated
    SQL&gt;By the way, it's a good idea to explicity name your constraints. It's a lot easier to work with EMP_PK than with SYS_C009930.
    Cheers, APC
    blog: [http://radiofreetooting.blogspot.com]

  • Question about index for some condition

    Hello expert,
    I have following condition in the where subclause, will you please tell if it will use index for transaction_log_fk ?
    pp.transaction_log_fk < p_transaction_log_fk
    Many Thanks,

    You'll have to check out the execution plan if you want to know if Oracle's Optimizer will use the index.
    It depends on the selectivity of your data, table statistics etc.
    If your query returns a lot of records then a FTS would be obvious, for example.
    Here's some more:
    http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9422487749968
    And you should read these links from the SQL and PL/SQL FAQ:
    SQL and PL/SQL FAQ
    Read the following threads from there:
    - When your query takes too long...
    - How to post a SQL statement tuning request
    They explain it all.
    Edited by: hoek on Jun 24, 2011 4:48 PM

  • Question about indexes

    Hi all,
    Given a table T, an index I on T, and a row R of the table T, is it possible to know the index leaf block in the index I containing an entry for the row R ?
    And ,given a table T, an index I on T, and an index leaf block B in this index I, is it possible to know all the rows in the table T to which the entries in B refer to ?
    Thanks in advance for your ideas.

    Hi,
    yes, it's possible, but you'll have to dump some index blocks. See http://richardfoote.wordpress.com/2010/02/08/index-block-dumps-and-treedumps-part-i-knock-on-wood/
    for general guidance and specific examples.
    Best regards,
    Nikolay

  • Another question about indexes

    A new requirement for my company is to rebrand our products, including docs.  This is pretty easily achieved with variables, but I cannot figure out a way to apply variables to index markers.  Did I miss something?   Anybody have a suggestion for a work-around?  This must come up all the time.

    Ruth, if you haven't yet checked out the third party tools for indexing, you might want to browse through the Tool list at
    http://www.leximation.com
    Most folks who do indexes in FM find that the third party tools add considerable flexibility to the "bare essential" capability available in FM itself.
    (and, fwiw, Silicon Prairie Software is excellent!)
    Sheila

  • A simple question about Indexes

    For what kind of tables are Indexes inappropriate? Is it for an INSERT-intensive or UPDATE-intensive table?

    Almost every table requires some set of indexes... I suppose it would be inappropriate to create an index on a table you only inserted into, never read from, never updated, and never deleted from. I can't imagine the utility, however, of this sort of write-only table.
    Maintaining indexes adds some overhead to INSERT transactions and may or may not improve the performance of UPDATEs (depending on whether the index helps you find the row to update more efficiently or whether it just requires maintenance after the update happens). Similarly, it may or may not slow down DELETE operations. Indexes are generally designed, though, to improve query performance.
    Justin

  • I have a question about extracting pages.  When I do the function, adobe saves the individual files as " file name space page number ", so the files look like this "filename 1.pdf", "filename 2.pdf", "filename 3.pdf".  Without too many gory details, I a

    I have a question about extracting pages.  When I do the function, adobe saves the individual files as "<file name><space><page number>", so the files look like this "filename 1.pdf", "filename 2.pdf", "filename 3.pdf".  Without too many gory details, I am using excel to concatenate some data to dynamically build a hyperlink to these extraced files.  It casues me problems, however, for the space to be the the file name.  Is there any way to change the default behavoir of this function to perhaps use a dash or underscore instead of a space?

    No, you can't change the default naming scheme. You can do it yourself if you extract the pages using a script instead of using the built-in command.

  • Question about the partition index

    Hi, all, I have some questions about partitioned index.
    And I get from oracle documents that oracle's partition index can be clarified as local partition index and global partition index.
    And local partition index can be clarified as prefix local partition index and non-prefix local partition index. And I also the word "global prefix partition index".
    But, I can not get what the exact meaning after I consulted many documents and notes from website.
    Can anyone give me one example to cover these topic?
    You help is very thankful!
    Thanks and best regards!

    Hi,
    Local index search by partition.
    Local Indexes: A local index is an index on a partitioned table which is partitioned in the exact same manner as the underlying partitioned table. Each partition of a local index corresponds to one and only one partition of the underlying table.
    Global Partitioned Indexes: A global partitioned index is an index on a partitioned or non-partitioned table which is partitioned using a different partitioning-key from the table. Global-partitioned indexes can only be partitioned using range partitioning. For example, a table could be range-partitioned by month and have twelve partitions, while an index on that table could be range-partitioned using a different partitioning key and have a different number of partitions.
    Global Non-Partitioned Indexes: A global non-partitioned index is essentially identical to an index on a non-partitioned table. The index structure is not partitioned.
    Maybe this links help you:
    http://www.oracle.com/technology/products/oracle9i/datasheets/partitioning.html
    http://asktom.oracle.com/pls/ask/f?p=4950:8:12026637104196321871::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:678824574412
    http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:1612281449571
    Cheers

  • Question about composite index and index skip scan

    Hi,
    I have a confusion.
    I have read Burleson's post on composite index column ordering (http://www.dba-oracle.com/t_composite_index_multi_column_ordering.htm) where he writes that
    "......for composite indexes the most restrictive column value(the column with the highest unique values) should be put first to trim down the result set..."
    But 10g performance tuning book tells this about INDEX SKIP SCAN ::
    "... Index Skip scanning lets a composite index be split logically into smaller subindexes. In skip
    scanning, the initial column of the composite index is not specified in the query. In other words, it is skipped.
    The number of logical subindexes is determined by the number of distinct values in the initial column.
    Skip scanning is advantageous if there are few distinct values in the leading column of the composite index and many distinct values in the non-leading key of the index......."
    So if we design Composite indexes acc. to what Burleson said then how can we take advantage of index skip scanning. These two staements oppose each other,don't they ?
    Can anybody explain this ?

    Dear,
    For the moment forget the distinct values and the compressibility. I've tried to reproduce your case here below (using jonathan lewis table script)
    create table t1
    as
    with generator as (
        select    --+ materialize
            rownum id
        from dual
        connect by
            rownum <= 10000
    select
        rownum              c1,
        mod(rownum,1000)    c2,
        mod(rownum,5000)    c3,
        mod(rownum,10000)   c4,
        lpad(rownum,10,'0') c5,
        rpad('x',5)         c6
    from
        generator    v1,
        generator    v2
    where
        rownum <= 1000
    alter table t1 add constraint t1_pk primary key (c3,c4,c5,C6);
    create index idx_1 on t1 (c1,c2);
    begin
         dbms_stats.gather_table_stats(
              ownname           => user,
              tabname           =>'T1',
              estimate_percent => 100,
              method_opt       => 'for all columns size 1'
    end;
    /and here are what I got with your two selects
    mho.sql>> SELECT c1,c2
      2  FROM t1
      3  WHERE c2 = 3;
            C1         C2
             3          3
    Elapsed: 00:00:00.00
    mho.sql>> start dispcursor
    PLAN_TABLE_OUTPUT
    SQL_ID  4dbgq3m2utd9f, child number 0
    SELECT c1,c2 FROM t1 WHERE c2 = 3
    Plan hash value: 3723378319
    | Id  | Operation            | Name  | Starts | E-Rows | A-Rows |   A-Time   | Buffers |
    |*  1 |  INDEX FAST FULL SCAN| IDX_1 |      1 |      1 |      1 |00:00:00.01 |       7 |
    Predicate Information (identified by operation id):
       1 - filter("C2"=3)
    17 rows selected.
    Elapsed: 00:00:00.34
    mho.sql>> SELECT c3,c4,c5,c6
      2  FROM t1
      3  WHERE c4 = 3
      4  AND c5 = '0000000003'
      5  AND c6 = 'x    ';
            C3         C4 C5         C6
             3          3 0000000003 x
    Elapsed: 00:00:00.00
    mho.sql>> @dispcursor
    PLAN_TABLE_OUTPUT
    SQL_ID  fv62c9uqtktw9, child number 0
    SELECT c3,c4,c5,c6 FROM t1 WHERE c4 = 3 AND c5 = '0000000003' AND c6 = 'x    '
    Plan hash value: 2969533764
    | Id  | Operation            | Name  | Starts | E-Rows | A-Rows |   A-Time   | Buffers |
    |*  1 |  INDEX FAST FULL SCAN| T1_PK |      1 |      1 |      1 |00:00:00.01 |       9 |
    Predicate Information (identified by operation id):
       1 - filter(("C4"=3 AND "C5"='0000000003' AND "C6"='x    '))
    17 rows selected.I didn't succeed to reproduce your index skip scan situation.
    Best Regards
    Mohamed Houri

Maybe you are looking for