Split partition - index / local

Hi friends,

I'm trying to divide a table partition.

Please let me know if the syntax below are correct.

If the local index used

ALTER TABLE SNYT. PART_ESTD
ESTD_M13_S22 PARTITION SPLIT TO ('IS', 13, '22')
IN (ESTD_M13_S21 PARTITION, PARTITION ESTD_M13_S22)
update of the index;

(by http://asktom.oracle.com/pls/asktom/f?p=100:11:0:::P11_QUESTION_ID:1401247200346349807)
=================================================================

If used Global indexes

ALTER TABLE SNYT. PART_ESTD
ESTD_M13_S22 PARTITION SPLIT TO ('IS', 13, '22')
IN (ESTD_M13_S21 PARTITION, PARTITION ESTD_M13_S22)
UPDATE GLOBAL INDEXES;

Concerning
KSG

Published by: KSG on 23 August 2012 18:27

Published by: KSG on 23 August 2012 18:51

http://docs.Oracle.com/CD/E11882_01/server.112/e26088/statements_3001.htm#i2131218

http://docs.Oracle.com/CD/E11882_01/server.112/e26088/statements_3001.htm#i2151566

Tags: Database

Similar Questions

  • After splitting partition index was not marked UNUSABLE. Oracle 11.1.0.6.0

    Dear experts,

    I do the following:

    SQL > create table tab (an integer, whole b)

    2 partition () range (a)

    3 partition p10 values less than (10),

    4 partition p20 values less than (20).

    5 partition pmax values less than (10000)

    6  );

    Table created

    SQL > alter table tab add constraint tab_pk key primary (b);

    Table changed

    SQL > insert into tab values (1, 1);

    1 row inserted

    SQL > insert into tab values (19: 2);

    1 row inserted

    SQL > insert into tab values (9999, 3);

    1 row inserted

    SQL > commit;

    Validation complete

    SQL > select index_name, status of user_indexes where index-name = "TAB_PK";

    INDEX_NAME STATUS

    ------------------------------ --------

    VALID TAB_PK

    SQL > tab table split partition of alter

    2 pmax (30) into (partition, partition pmax p30);

    Table changed

    SQL > select index_name, status of user_indexes where index-name = "TAB_PK";

    INDEX_NAME STATUS

    ------------------------------ --------

    VALID TAB_PK

    Could you explain please why the overall index of tab_pk was not marked UNUSABLE? The partmax of the partition was not empty.

    It looks like you were the beneficiary of an optimization: Maintenance of Partitions

  • Local partitioned indexes

    Hi all

    I created 2 local partitioned index. The indexes are indexes of function. the table size is 2.3 T.
    I created the first clue that it took 14 hours to create, and even to analyze and it works fine now. Then, I created second index. But now it does not.
    What should I do?

    version 11.1.0.6
    RAC, ASM

    Thanks in advance

    Published by: disaster on April 10, 2011 21:43

    Published by: disaster on April 10, 2011 21:51

    Dear Sir

    ----------------------------------------------------------------------------------------------------------
    | Id  | Operation              | Name         | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |
    ----------------------------------------------------------------------------------------------------------
    |   1 |  PARTITION RANGE SINGLE|              |      1 |      1 |     82 |00:03:37.92 |     534K|    534K|
    |*  2 |   TABLE ACCESS FULL    | TBL          |      1 |      1 |     82 |00:03:37.92 |     534K|    534K|
    ----------------------------------------------------------------------------------------------------------
    

    It is the plan of the real explanation followed by the SQL engine to run your query

    The Oracle optimizer is the estimate (based on the statistics that you have collected about index and table) that your query will return only 1 rank (E-lines = 1) while in reality (when the query has been executed) it's return of 82 lines (A-Rows = 82) within 3 minutes and 37 seconds (A-Time = 00:03:37.92)

    It is clear that your index function that is not used.

    You should be aware that when you create a function based index, oracle will create a virtual column that is hidden behind the scene.

    Try to gather statistics on this column using dbms_stats.

    Please, try first to TEST

    BEGIN
       DBMS_STATS.gather_table_stats
                     (ownname             => user,
                      tabname             => 'TBL',
                      CASCADE             => TRUE,
                      method_opt         => 'FOR ALL HIDDEN COLUMNS SIZE 1'
                             );
    END;
    /
    

    and re - run your query and post once again the new plan explain him like you did before

    Best regards

    Mohamed Houri

  • Question about "split partition" command

    Hello

    I have the following partitioned table...

    CREATE TABLE trans_tab
    (

    TRANS_ID number (10),
    DATE OF TRANS_DATE,
    CONSTRAINT PK_TRNS_ID PRIMARY KEY (TRANS_ID))
    PARTITION BY RANGE (TRANS_DATE)
    (PARTITION TRANS_2010 VALUES LESS THAN (TO_DATE ("2010-10-01 00:00:00 ',' SYYYY-MM-DD HH24:MI:SS ',' NLS_CALENDAR = GREGORIAN '")) TABLESPACE TRANS_2010,)
    PMAX VALUES LESS THAN (MAXVALUE) TABLESPACE TRANS_MAX PARTITION);

    Now, I intend to add a partition, as shown below...

    ALTER table split partition pmax trans_tab at (TO_DATE (' 2012-10-01 00:00:00 ',' SYYYY-MM-DD HH24:MI:SS ',' NLS_CALENDAR = GREGORIAN ')) in (2012 partition, partition pmax);


    The command above split partition worked well and ended quickly in the TEST environment which had only 100 records. I now intend to do in the production, which has about 90 MM records in the table. Here are my questions...

    (1) I will try to find how long would the "split partition" command to run into a table that has ~ 90 mm record table the command "split partition" to physically move the records or just logically to remap the records to the appropriate partition? If it is logical remapping, I guess that the split command would complement quickly even against a huge table... Could check you?

    (2) in the TEST environment, I checked the non partitioned status of the global and the local index after splitting the partiton and they look good? Should I be rebuild the index after splitting the partition?

    Thanks for your time...

    Assuming he has no line of 2012 year in partition PMAX, the SPLIT would create a vacuum PMAX anew. However, it has the maximum value of TRANS_DATE in the PMAX partition - so he must sweep the partition (or use a LOCAL index on the partition, if available). Therefore, depending on how it can identify lines, it may take a little time.

    I think that the current PMAX partition is not empty (that is, it has lines of 2011). As a result, a SPLIT will cause GLOBAL Indexes to score UNUSABLE unlesss you use the UPDATE GLOBAL INDEXES.

    Was your test with the actual number of lines to PMAX?

    Hemant K Collette

  • partitioning and partitioned index

    I created 1 table with partitions.

    CREATE TABLE SAMPLE_ORDERS
    (NUMBER OF ORDER_NUMBER,
    ORDER_DATE DATE,
    NUMBER OF CUST_NUM
    NUMBER OF TOTAL_PRICE
    NUMBER OF TOTAL_TAX
    NUMBER OF TOTAL_SHIPPING)
    PARTITION OF RANGE (ORDER_DATE)
    (
    SO99Q1 PARTITION VALUES LESS THAN (TO_DATE (APRIL 1, 1999 ',' MON-DD-YYYY "")),
    SO99Q2 PARTITION VALUES LESS THAN (TO_DATE (1 JULY 1999 ',' MON-DD-YYYY "")),
    SO99Q3 PARTITION VALUES LESS THAN (TO_DATE (OCTOBER 1, 1999 ',' MON-DD-YYYY "")),
    SO99Q4 PARTITION VALUES LESS THAN (TO_DATE (JANUARY 1, 2000 ',' MON-DD-YYYY "")),
    SO00Q1 PARTITION VALUES LESS THAN (TO_DATE (APRIL 1, 2000 ',' MON-DD-YYYY "")),
    SO00Q2 PARTITION VALUES LESS THAN (TO_DATE (JULY 1, 2000 ',' MON-DD-YYYY "")),
    SO00Q3 PARTITION VALUES LESS THAN (TO_DATE (OCTOBER 1, 2000 ',' MON-DD-YYYY "")),
    SO00Q4 PARTITION VALUES LESS THAN (TO_DATE (JANUARY 1, 2001 ',' MON-DD-YYYY ""))
    )
    ;


    Few questions is now.
    1. How can I create indexes on the table.
    2. How can I rebuild the index if it is partitioned index?
    3. What is the impact of the reconstruction of indexes on the table (all table locks or just locks partitioned index)
    4. If I want to create partition for future purposes, for example for each month do I need to partition manually created for the same thing?

    Thank you

    When you create an Index with the keyword LOCAL and do not specify the names of each partition, Oracle uses the default Partition of Table name.

    For example, to rebuild the index corresponding to the first partition of the table, partition

    alter index sales_orders_ndx_l rebuild partition SO99Q1 ;
    

    DML may continue to run against the other partitions of the table (and their corresponding indices).

    When you do the maintenance of the score as the addition of a new Partition or split an existing Partition, for each Partition of the 'new' Table, a corresponding Index Partition will be automatically created.
    In order to ensure that the affected Index partitions are not left in a State UNUSABLE but are also rebuilt with maintaining the Table Partition, add the clause INDEX of UPDATE of the ALTER TABLE statement you use.

  • deletion of a partitioned index

    Hi friends,

    I use 10.2.0.4 oracle on solaris.

    I have several partitioned index with the 2011 created on a daily basis. I tried to drop one of the indexes and got the below error.

    SQL > ALTER INDEX QOSDEV. PK_RATE_CISCOMEMORYPOOL DROP PARTITION 'OCTOBER 5, 2012 '.

    ALTER INDEX QOSDEV. PK_RATE_CISMEPOOL DROP PARTITION 'OCTOBER 5, 2012 '.

    Error on line 2

    ORA-14076: submitted alter index partition/subpartition operation is not valid for local partitioned indexes

    Script done on line 2.

    I ask you how to remove these partitions.

    Thank you

    DBApps

    Hello

    Try-

    ALTER drop partition table RATE_CISCOMEMORYPOOL 'October 5, 2012;

    Anand

  • Partitioned index

    Using Oracle 11.2.0.3

    We are evalauating partitiong stragetegies with a view to the realization of gains from perfomnace in reports in particular.

    How effeicient are partitioned indexes in this by example anti-terrorism just partitioned index aan table is not partitioned.

    One big fact to durrogate keys that have bitmpa indxese table which link to accentuate associated key dimensions.

    Patitioning given bitmap index which links to the largest dimension and partitiong Kay dimesnion dimension laregts.

    Reflections on partitioned indexes would be particularly useful.

    Thank you

    user5716448 wrote:
    Using Oracle 11.2.0.3

    We are evalauating partitiong stragetegies with a view to the realization of gains from perfomnace in reports in particular.

    How effeicient are partitioned indexes in this by example anti-terrorism just partitioned index aan table is not partitioned.

    One big fact to durrogate keys that have bitmpa indxese table which link to accentuate associated key dimensions.

    Patitioning given bitmap index which links to the largest dimension and partitiong Kay dimesnion dimension laregts.

    Reflections on partitioned indexes would be particularly useful.

    Thank you

    It is not possible to create a partitioned index bitmp on a non-partitioned table. Bitmap indexes can be local partitioned only.
    --
    John Watson
    Oracle Certified Master s/n
    http://skillbuilders.com

  • Split partitions in number of partitions

    I have a partitioned table. Score is based on the Date column, and each partition is for the period of 1 month. I want to split a partition into 4 smaller partitions.

    I tried split partition but split partition can be used to split the existing partition into 2 partitions. I tried to add sub partitions in an existing table, which failed, because this isn't a composite partition.

    That's what I tried.

    alter table activity
    set subpartition template
    (
    subpartition SP_1_NEWNAME values less than (TO_DATE('07-JAN-2007 00:00:00', 'DD-MON-YYYY HH24:MI:SS')),
    subpartition sp_2_NEWNAME values less than (to_date('15-JAN-2007 00:00:00', 'DD-MON-YYYY HH24:MI:SS')),
    subpartition SP_3_NEWNAME values less than (to_date('15-JAN-2007 00:00:00', 'DD-MON-YYYY HH24:MI:SS'))
    );
    
    

    Any suggestions?

    Thank you

    you would have to hit the score several times. You can recreate the object with the Assembly of partitions or dbms_redefinition allows you to change the definition of the object.

  • Global partitioned index hash

    Is it possible to create an index of global partitioned hash on the columns of the primary key of a table that is not partitioned itself?
    If a table has a PK constraint there an index generated automatically on the PK columns.
    Y at - it a syntax to make the overall index partitioned hash when creating the constraint of PK,.
    or syntax to MODIFY the indexes after the creation of the constraint?

    When you add a Pk to a table, you can choose a place already in the index. Something like

    alter table t1 add constraint T_PK primary key (col1) using index T_IDX;
    

    Create the partitioned index as you like with the same columns as the primary key and use the foregoing.

  • Help Split Partition

    Is - a can split a partition in addition to 2?

    Example:
    alter table HISTORY
    split partition HIST_MAX 
    at (TO_DATE(' 2010-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    into (
    PARTITION HIST_10Q1
        STORAGE(FREELISTS 1 
                FREELIST GROUPS 1)
        TABLESPACE HIST_DATA_1
        LOGGING,        
    PARTITION HIST_MAX_NEW
        STORAGE(FREELISTS 1 
                FREELIST GROUPS 1)
        TABLESPACE HIST_DATA_4
        LOGGING
    );
    TO
    alter table HISTORY
    split partition HIST_MAX 
    at (TO_DATE(' 2010-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    into (
    PARTITION HIST_10Q1
        STORAGE(FREELISTS 1 
                FREELIST GROUPS 1)
        TABLESPACE HIST_DATA_1
        LOGGING,        
    PARTITION HIST_10Q2
        STORAGE(FREELISTS 1 
                FREELIST GROUPS 1)
        TABLESPACE HIST_DATA_1
        LOGGING,        
    PARTITION HIST_10Q3
        STORAGE(FREELISTS 1 
                FREELIST GROUPS 1)
        TABLESPACE HIST_DATA_1
        LOGGING,
    PARTITION HIST_10Q4
        STORAGE(FREELISTS 1 
                FREELIST GROUPS 1)
        TABLESPACE HIST_DATA_1
        LOGGING,                
    PARTITION HIST_MAX_NEW
        STORAGE(FREELISTS 1 
                FREELIST GROUPS 1)
        TABLESPACE HIST_DATA_4
        LOGGING
    );
    Our MAX partition has grown too great and fast that we must divide and add more partitions to cover what we have in the MAX and also for the future. I know we can do it one by one (divided by 2), but I was wondering if we can do all of a sudden.

    Version is 9.2.0.7

    No, you must do the split of recursively.

    Divide HIST_MAX by (HIST_10Q4, HIST_MAX)

    Then, divided HIST_10Q4 (HIST_10Q3, HIST_10Q4)

    Then, divided HIST_10Q4 (HIST_10Q2, HIST_10Q3)
    and so on.

    Hemant K Collette

  • Max Split partition

    I have a table of 20 GB which has been partitioned by range (quarterly of the years of annual basis basis).
    And most of the data have been stored in the max score and the segment size more quickly.
    Now, I want to get rid of max partition and divide the table with more music that would capture data each year. This way I can have only 2 years worth of data on production and partition can be removed easily after moving to datawarehouse.

    Please suggest. I want to divide partitions is each year as
    ""2008"PARTITION VALUES LOWER THAN (TO_DATE (' 2009-01-01 00:00:00 ',))".
    TABLESPACE "LLS_DATA01" NOCOMPRESS.


    Here is the table / / desc

    «CREATE TABLE «THEY'RE "» test. "
    ("STARTDATE" DATE NOT NULL ACTIVATE,)
    ACTIVATE THE "CALLID' CHAR (9 BYTES) NOT NULL,
    NUMBER OF "CUSTOMERLLSID."
    NUMBER OF "CRCLIENTLLSID."
    NUMBER OF "EAPLLSID."
    NUMBER OF "EAPCOMMROOMID."
    'LANGID' VARCHAR2 (5 BYTE),
    VARCHAR2 (20 BYTE) "CRCLIENTID."
    VARCHAR2 (255 BYTE) "PERSONALCODE."
    "PIN."
    VARCHAR2 (4 BYTE) "SPECIALPROMOCODE."
    NUMBER OF "PREBILLESTIMATE."
    CHECK CONSTRAINT 'LANID"ENABLE (LANID IN ('A', 'B', 'C', 'E', 'P')),
    ENABLE CHECK CONSTRAINT 'TRUE_OR_FALSE_IC1' (InterpreterLunchAdjustmentMade IN (', 'F')),
    ENABLE CHECK CONSTRAINT 'TRUE_OR_FALSE_IC2' (DontBillCustomer IN (', 'F')),
    ENABLE CHECK CONSTRAINT 'TRUE_OR_FALSE_IC3' (DontPayInterpreter IN (', 'F')),
    ENABLE CHECK CONSTRAINT 'TRUE_OR_FALSE_IC4' (RecordChanged IN (', 'F')),
    ENABLE CHECK CONSTRAINT 'TRUE_OR_FALSE_IC5' (LogicalDelete IN (', 'F')),
    KEY CONSTRAINT PRIMARY "XPKINTERPRETATIONCALLS" ("INTERPRETATIONSTARTDATE", 'CALLID')
    TABLESPACE "LLS_INDX01" ENABLE
    )
    TABLESPACE "U12_DATA".
    PARTITION BY RANGE ("STARTDATE")
    (PARTITION '2007Q 3' VALUES LESS THAN (TO_DATE (' 2007-10-01 00:00:00 ',' SYYYY-MM-DD HH24:MI:SS ',' NLS_CALENDAR = GREGORIAN ')))
    TABLESPACE "LLS_INTCALLS_DATA01" NOCOMPRESS,
    PARTITION '2007Q 4' VALUES LESS THAN (TO_DATE (' 2008-01-01 00:00:00 ',))
    TABLESPACE "LLS_DATA01" NOCOMPRESS,
    PARTITION 'CALLSMAX' VALUES LESS THAN (MAXVALUE)
    TABLESPACE NOCOMPRESS 'LLS_INTCALLS_DATA01');

    Go to the Morgan Library: www.morganslibrary.org/reference.html
    Select the PARTITIONING
    Search for "Split Partition".

    If you like the library... to bookmark the page.

  • ORA-14086: a partitioned index cannot be reconstructed as a whole

    Hello

    I'm trying to rebuld index had error below.

    SQL > alter index rms12. PRICE_HIST_I1 regeneration;
    ALTER index rms12. PRICE_HIST_I1 rebuild
    *
    ERROR on line 1:
    ORA-14086: a partitioned index cannot be reconstructed as a whole

    Select index_name, separated from dba_indexes where table_name = 'PRICE_HIST '.

    o/p

    Index_name partitioned

    PRICE_HIST_I2 YES
    PRICE_HIST_I1 YES

    Thank you

    If you need to find the names of partition in dba_ind_paritions.

    ------
    Sybrand Bakker
    Senior Oracle DBA

  • NOLOGGING in alter table split partition...

    Hi all

    Please can tell me where I would add the NOLOGGING in the below statement, or any other means by which I can stop to redo being generated

    ALTER table split partition EB_LOGS_082008 at (to_date('01-01-2010','DD-MM-YYYY')) NOLOGGING EB_LOGS into (partition EBLAST_TABLE, partition EB_LOGS_012010 tablespace EBLAST_TABLE tablespace EB_LOGS_082008) parallel;

    Wow... Grammar ALTER TABLE just constantly more and more complex, isn't?

    According to this:
    http://download.Oracle.com/docs/CD/E11882_01/server.112/e10592/clauses005.htm#CJAHABGF

    "For partitioned objects, the value specified for this clause is the physical attribute by default segments (and ALTER following... associated with all the partitions specified in the CREATE statement ADD PARTITION statements), unless you specify the logging attribute in the description of the PARTITION. »

    If I read that correctly, so if you want the NOLOGGING keyword to indicate more than just the physical default attribute, then it must be in the description of the PARTITION.

    So something like this, perhaps?
    Totally not tested, BTW:
    ALTER table EB_LOGS split partition EB_LOGS_082008 at (to_date('01-01-2010','DD-MM-YYYY')) into (partition EB_LOGS_082008 tablespace EBLAST_TABLE nologging, partition EB_LOGS_012010 tablespace EBLAST_TABLE nologging) parallel;

    Once again, this is an assumption and cannot yet pass the analysis.

    In regards to the perceived dangers of NOLOGGING operations, well, it is certainly something that must be clearly understood, but not to fear. The disadvantage of an operation NOLOGGING is that if you need to recover from a backup taken before the NOLOGGING operation, until a point in time after the operation NOLOGGING objects in the database that were submitted to NOLOGGING operations will logically corrupted and must be rebuilt.

    Finally, I fell on this can also be useful, regarding the optimization of SPLIT PARTITION operations:
    http://download.Oracle.com/docs/CD/E11882_01/server.112/e10837/part_admin.htm#VLDBG00304

    Hope that helps,

    -Mark

  • Table partition and no partition indexes

    Hello

    I have the partition table that contains about 1 ml recods and he have daily score.
    This partition table have only a unique index that is a partition No.

    CREATE UNIQUE INDEX xxxxxx WE yyyyyy
    (ITEM_GUID, IMAGE_SIDE)
    LOGGING
    TABLESPACE zzzzzz
    PCTFREE 10
    INITRANS 2
    MAXTRANS 255
    STORAGE)
    INITIAL 170M
    ACCORDING TO 1 M
    MINEXTENTS 1
    MAXEXTENTS 2147483645
    PCTINCREASE 0
    DEFAULT USER_TABLES
    )
    NOPARALLEL;

    I drop very first partition of

    Fall of ALTER TABLE wwww.yyyyy SCORE PT_20080706;

    But this isn't my unique INVALID index.

    Is it normal to have a VALID unique index after the fall of any partition?

    Do I have to rebuild a unique index again?

    DB: oracle 10.2.0.3
    platform: solaris

    Thanks in advance

    According to the Oracle doc, if you drop the bulkhead with an overall index,.

    All index global, or all partitions of global partitioned indexes are marked UNUSABLE unless one of the following are true:

    You specify the UPDATE INDEX (cannot be specified for tables organized by index. Use GLOBAL updating INDEXES.)

    The dropped partition or its subparts are empty

    more info here
    http://download.Oracle.com/docs/CD/B19306_01/server.102/b14231/partiti.htm#sthref2751

    Check ALL_PART_INDEXES and ALL_INDEXES to check the State of your indexes.

  • Size of the partition and Index Local

    
    

    Hi all

    Database information: 11.2.0.3 64-bit Linux. It is a 3 RAC Cluster node.

    I recently partitioned a Parent and child tables as PARTITION of REFERENCE set. The parent table has been RANGE - partitioned. The first partition is on an integer column and the beaches are 0-1000, 10001-2000, 20001-30000 and so on. The secondary partition is on a date and it is partitioned for each quarter.

    I created a local index as follows (faullt2vehicle, offboard_load_date, record_type, Column_Y).

    Here's an example query I will carry out, where the date is covering 2 secondary partitions

    select  * from gets_tool_Fault t where fault2vehicle                                      = 12195
    and offboard_load_date                                 BETWEEN TO_DATE('2015-04-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
    AND TO_DATE('2015-07-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
    AND record_type                                        IN('FLT','STP','HC','EGU','EOAEQP','CEL')
    

    When I generate the plan explain below is the output

    Plan hash value: 2702285198
    
    --------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                           | Name               | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    --------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                    |                    |   386 | 76428 |   244   (0)| 00:00:03 |       |       |
    |   1 |  PARTITION RANGE SINGLE             |                    |   386 | 76428 |   244   (0)| 00:00:03 |     2 |     2 |
    |   2 |   PARTITION RANGE ITERATOR          |                    |   386 | 76428 |   244   (0)| 00:00:03 |     7 |     8 |
    |   3 |    TABLE ACCESS BY LOCAL INDEX ROWID| GETS_TOOL_FAULT    |   386 | 76428 |   244   (0)| 00:00:03 |    10 |    18 |
    |*  4 |     INDEX RANGE SCAN                | GETS_TOOL_FAULT_C7 |   386 |       |     7   (0)| 00:00:01 |    10 |    18 |
    --------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       4 - access("FAULT2VEHICLE"=12195 AND "OFFBOARD_LOAD_DATE">=TO_DATE(' 2015-04-01 00:00:00', 'syyyy-mm-dd 
                  hh24:mi:ss') AND "OFFBOARD_LOAD_DATE"<=TO_DATE(' 2015-07-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
           filter("RECORD_TYPE"='CEL' OR "RECORD_TYPE"='EGU' OR "RECORD_TYPE"='EOAEQP' OR "RECORD_TYPE"='FLT' OR 
                  "RECORD_TYPE"='HC' OR "RECORD_TYPE"='STP')
    
    

    If you observe the optimizer is currently to identify the partition, and then the secondary partition, but what is confusing to me, this is why the restricted PREMISES index scan scans all secondary partitions for a given partition. The partition should be not even as a value from PARTITION RANGE ITERATOR of 7 and 8.

    Interestingly, when I provide a date range which is in single partition the pruning is happening correctly
    
    Plan hash value: 3457799067
    
    --------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                           | Name               | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    --------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                    |                    |     1 |   197 |     4   (0)| 00:00:01 |       |       |
    |   1 |  PARTITION RANGE SINGLE             |                    |     1 |   197 |     4   (0)| 00:00:01 |     2 |     2 |
    |   2 |   PARTITION RANGE SINGLE            |                    |     1 |   197 |     4   (0)| 00:00:01 |     7 |     7 |
    |*  3 |    TABLE ACCESS BY LOCAL INDEX ROWID| GETS_TOOL_FAULT    |     1 |   197 |     4   (0)| 00:00:01 |    16 |    16 |
    |*  4 |     INDEX RANGE SCAN                | GETS_TOOL_FAULT_N1 |     1 |       |     3   (0)| 00:00:01 |    16 |    16 |
    --------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       3 - filter("RECORD_TYPE"='CEL' OR "RECORD_TYPE"='EGU' OR "RECORD_TYPE"='EOAEQP' OR "RECORD_TYPE"='FLT' OR 
                  "RECORD_TYPE"='HC' OR "RECORD_TYPE"='STP')
       4 - access("FAULT2VEHICLE"=12195 AND "OFFBOARD_LOAD_DATE">=TO_DATE(' 2015-04-01 00:00:00', 'syyyy-mm-dd 
                  hh24:mi:ss') AND "OFFBOARD_LOAD_DATE"<=TO_DATE(' 2015-06-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
    

    Thank you

    Jayadeep

    1. your index (faullt2vehicle, offboard_load_date, record_type, Column_Y), your query has a predicate based on a beach on the second column in this index, which means that the order of the index that must be examined is dictated by this predicate and each row in the range must be considered (filtered) to check the third predicate.  Basic guideline on the column in the index you are ordering for more effective use: If you have columns where predicates are always equal put these columns at the beginning of the index, the columns where predicates are usually based on a beach go towards the end. You seem to have been misled by reviews 'the prefix local index' stick to your two columns of partitioning at the front of your index - which should NOT be an automatic choice for the local index: see this note ( https://jonathanlewis.wordpress.com/2011/02/28/prefixed/ ) comments that follow and OTN article it is linked to.

    2 since you have two indexes that start the same way (this goes with the local prefix again) you made easy for the optimizer to choose the index (for you) is clearly evil. That's why behind the choice of the optimizer is probably another example of an issue that I spoke a few days ago: Re: Composite index + map selection N1 your index is probably greater than the index of C7, and the order of the entries in the C7 index probably makes the data much more dispersed that it really is (i.e. high clustering_factor).

    Concerning

    Jonathan Lewis

    PS (update):

    If there are many rows for each fault_id, then you must create an index from fault_id with 'compress 1' (or compress N if the first columns of the index N are repetitive).

    When dealing with range partitions do not forget that the high value partition is never reached in the document, do so based in the form "date_col BETWEEN date1 and date2", use the form "date_col > = dateX and date_col»< datey"="" or="" you="" may="" find="" that="" you="" are="" accessing="" one="" more="" partition="" than="" you="" hope="" to,="" and="" in="" some="" cases="" that="" may="" mean="" "multiple"="" (i.e.="" 2)="" when="" you="" were="" expecting="" 1="" (and="" the="" optimizer="" is="" much="" better="" at="" estimating="" costs="" for="" a="" single="">

Maybe you are looking for

  • 'iPhone Messages' icon appearing in the Dock

    I experienced this with Yosemite as well.  Don't remember what level it is resolved, but things were fine until I upgraded to El Capitan.  The 'Message' icon won't stop appearing on the left side of the bar on my Dock.  I did the following on the adv

  • my email is open, but no window shows? I get the email but cannot open the window to see?

    My mail app is open. I get an email, but I can't open the window to see. I restarted my computer and right clicking on the icon to open a new window. What can I do to get the window to open it? I can see my mail on other devices or online.

  • the upgrade of 700-311 hp envy

    Work of collapsed Keep getting display drivers was that again done everything I can to correct with no joy. Now its so bad, I can't use. I use the computer for photos. I want to try a new graphics card and memory of the year on the rise. Can someone

  • 0x0000009C (0 x 000000004, 0x80546E70, 0xB2000000, 0x00070F0F)

    After the computer is idling for 1-2 hours, I get a blue screen with this error code:0x0000009C (0 x 000000004, 0x80546E70, 0xB2000000, 0x00070F0F). And if I restart the computer the screen turns white and the devices stop responding, but I see that

  • Two strange things happened! v01, 01.22 A

    The new firmware worked fine until it started last night. I have listen to some FM and use the new Sleep function... It was the first time I had ever used the function Sleep when I loaded the firmware when it came out.  OK, I updated the time 60mins