Partitioned Tables and indexes

Hello


I have a question on the table and index partitioning. My scenario is:

Charge 2 mio records in table T once a month. Loaded records are added to existing records, and once loaded data is never changed.
At some point, I want to delete the older recordings, so I intend to this partition table.

T table looks like:
create table t (id       number(10) not null  constraint t_pk primary key,
                period   number(10) not null,
                contract number(10) not null,
                attr     number(10) not null);

create unique index t_ux1 on t(contract,period);

create index t_ix2 on t(period);
My plan is to partition T over the period, and I'm trying to read through the concepts
http://download.Oracle.com/docs/CD/B19306_01/server.102/b14220/partconc.htm#g471747


My question is now, how to manage the indexes, the t_pk, the t_ux1 and the t_ix2. Concepts of say,

«1. If the table partitioning column is a subset of index keys, use a local index.»

"2. If the index is unique, use a global index. If this is the case, you are finished. »


So, that's how I read it
-t_pk is unique, so this should be global
-t_ux1 of columns is a subset, unless I have misunderstood (?), which should be local
-index t_ix2 column is the same as the partitioning column, so it must be local

Is this right, this t_ux1 should be a local partioned index, even if the period is the second column in the index?

If true, what will happen when a partion fell?


I am new in this area, so please feel the comment as you wish.


Concerning
Peter


BANNER
----------------------------------------------------------------
Oracle Database 10 g Enterprise Edition release 10.2.0.3.0 - 64bi
PL/SQL version 10.2.0.3.0 - Production
CORE Production 10.2.0.3.0
AMT for IBM/AIX RISC System/6000: Version 10.2.0.3.0 - production
NLSRTL Version 10.2.0.3.0 - Production

Peter Gjelstrup wrote:

My question is now, how to manage the indexes, the t_pk, the t_ux1 and the t_ix2. Concepts of say,

«1. If the table partitioning column is a subset of index keys, use a local index.»

"2. If the index is unique, use a global index. If this is the case, you are finished. »

So, that's how I read it
-t_pk is unique, so this should be global
-t_ux1 of columns is a subset, unless I have misunderstood (?), which should be local
-index t_ix2 column is the same as the partitioning column, so it must be local

Is this right, this t_ux1 should be a local partioned index, even if the period is the second column in the index?

A partitioned index locally can only be defined as unique if the partition key is part of the columns in the index. Imagine what the database would have to do if this is not the case: in order to verify if a newly added or updated value violates the uniqueness, it will have to travel all the partitions in a serialized operation - means that no one else could do the same thing at the same time. Since he is a killer of serious scalability in terms of locking and contention, this is not allowed.

So: Your T_UX1 index can be defined as a unique index that is local because it contains the partition key. Although the index is not prefixed ("Prefix" means that it is divided by the left side of the columns in the index) which means that there may be access patterns where all partitions should be scanned or the optimizer cannot use a method of size of effective partition according to the way the index is reached.

Your T_PK index cannot be set as local because it must be unique (you can not use a local non-unique index in this case), but does not contain your partition key. It must be a global index. An overall index can be partitioned as well (different from the underlying table) but it doesn't have to be.

Depends on how you access your data you have not T_IX2 index when partitioning by this key because it corresponds to the partition key and therefore could not actually be used by the mechanism of partition pruning that limit your query to the scores of individuals.

If you have more than one MAS environment where running queries are used longer, you should be fine with the index the in general (because they could be analyzed in parallel in parallel operations), but if you have an OLTP environment, then you should avoid local no prefix indexes due to the potential problem that you need to analyze all partitions.

Be borne in mind that with partitioning adds an important layer of complexity to other areas: in particular the options available to the optimizer and analyze cost optimizer statistics. Depends on how you access your statistical data must be maintained on several levels now (level of score and at the global level, in the case of subpartitioning may be still at this level). If your data is important and you rely on "global" level statistics (these are always the case when the optimizer at the time analysis cannot limit access to a single partition) then in the pre - 11 g databases analyze these "global" level statistics can take a lot of time and resources, since actually , you need data several times (once for the partition and even global level).

Presenting this partitioning may mean other potential problems in terms of execution that change (not for the better sometimes) plans and how to effectively collect statistics. Note that g 11 addresses the issue of 'statistics' by introducing the so-called "extra" global statistics. Greg Rahn wrote a [blog note | http://structureddata.org/2008/07/16/oracle-11g-incremental-global-statistics-on-partitioned-tables/] on this nice feature.

>

If true, what will happen when a partion fell?

Since you're already on 10g, you can specify the database to update the scores of the local index using the UPDATE of the INDEX clause, while 9i could maintain only an overall index and it is up to you to rebuild the local index partitions after the partition DDL on the table (according to the DDL operation).

Kind regards
Randolf

Oracle related blog stuff:
http://Oracle-Randolf.blogspot.com/

SQLTools ++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676 /.
http://sourceforge.NET/projects/SQLT-pp/

Published by: Randolf Geist on Sep 30, 2008 16:39

Added statistics / optimizer warning when you use the partitioning

Tags: Database

Similar Questions

  • partion tables and indexes

    Hi all

    DB: 10.2.0.4

    Is that we can convert a normal table into partitioned tables?
    If Yes, then what is the existing indexes on this table?

    IM totally new about partitioning (Table and Index). I read the oracle docs but still have confusion with local and global index (score and no-partion)...


    Please suggest...

    Kind regards.

    >
    Is that we can convert a normal table into partitioned tables?
    If Yes, then what is the existing indexes on this table?
    >
    You can use the EXCHANGE PARTITION to do. See this article from the Oracle base
    Partitioning of an existing Table using the EXCHANGE PARTITION
    http://www.Oracle-base.com/articles/Misc/partitioning-an-existing-table-using-Exchange-partition.php

    Or you can use for DBMS_REDEFINITION do directly

    See this article from the Oracle base
    http://www.Oracle-base.com/articles/Misc/partitioning-an-existing-table.php

    You can also create a new table and INSERT the data from the old table.

    The option you are using could depend on indexes how you have, if you intend to keep them all and if the indexes on the partitioned table must be either local or global.

    To refine the new partitioned table, you really need evaluate each index to determine that the index should be global or local, and if the index should also be partitioned.

    There isn't any point to create a new table with the same indexes if you want to redefine all the indexes. You would be better of the backup of the original and then table drop indexes before conversion.

    See the VLDB and partitioning Guide
    http://docs.Oracle.com/CD/B28359_01/server.111/b32024/TOC.htm

  • New tables and indexes created do not appear in the view dba_segments

    Hi all

    I created 3 tables and indexes, but these items do not appear in dba_segments views. Is this a normal behavior? Previously, with dictionary managed tablespace, I can specify the least possible to create, at the table/index is created. But I don't know how works the locally managed tablespace. Please do advice. Thank you much in advance.

    I am using Oracle 11 g R2 (11.2.0.1.0) for Microsoft Windows (x 64), running on Windows 7.

    To reproduce this problem, I created the tablespaces as follows:

    CREATE TABLESPACE CUST_DATA
    DATAFILE ' d:\app\asus\oradata\orcl11gr2\CUST_DATA01. DBF' SIZE 512K
    AUTOEXTEND ON NEXT MAXSIZE 2000 K 256K
    MANAGEMENT UNIFORM LOCAL 256K SIZE MEASURE
    SEGMENT SPACE MANAGEMENT AUTO;

    CREATE TABLESPACE CUST_INDX
    DATAFILE ' d:\app\asus\oradata\orcl11gr2\CUST_INDX. DBF' SIZE 256K
    AUTOEXTEND ON NEXT MAXSIZE 2000 K 128K
    MANAGEMENT UNIFORM LOCAL 128K SIZE MEASURE
    SEGMENT SPACE MANAGEMENT AUTO;

    CREATE TABLE CUSTOMER_MASTER (CUST_ID VARCHAR2 (10))
    CUST_NAME VARCHAR2 (30),
    E-MAIL VARCHAR2 (30),
    DATE OF BIRTH,
    ADD_TYPE CHAR (2) CONSTRAINT CK_ADD_TYPE CHECK (ADD_TYPE ("B1", "B2", "H1", "H2")),
    CRE_USER VARCHAR2 (5) DEFAULT USER,.
    CRE_TIME TIMESTAMP (3) DEFAULT SYSTIMESTAMP.
    MOD_USER VARCHAR2 (5).
    MOD_TIME TIMESTAMP (3),
    CONSTRAINT PK_CUSTOMER_MASTER PRIMARY KEY (CUST_ID) USING INDEX TABLESPACE CUST_INDX)
    TABLESPACE CUST_DATA;

    SQL > SELECT TABLE_NAME, nom_tablespace
    USER_TABLES 2
    3 WHERE TABLE_NAME LIKE '% CUST. "

    TABLE_NAME, TABLESPACE_NAME
    ------------------------------ ------------------------------
    CUSTOMER_MASTER CUST_DATA

    SQL > SELECT INDEX_NAME, nom_tablespace
    2 FROM USER_INDEXES
    3 WHERE TABLE_NAME LIKE '% CUST. "

    INDEX_NAME TABLESPACE_NAME
    ------------------------------ ------------------------------
    PK_CUSTOMER_MASTER CUST_INDX


    SQL > SELECT nom_segment, SEGMENT_TYPE, nom_tablespace, BYTES
    2 FROM WHERE USER_SEGMENTS;

    no selected line

    An extension to what Sybrand said:

    There is a parameter called differed_segment_creation, who runs the behavior.

    If it is set to TRUE (the default), no segments will be allocated until you fill your table / index.

    Try to insert a row. You will see your table and index in dba_segments.

    See for more information

    http://docs.Oracle.com/CD/E14072_01/server.112/e10595/tables002.htm

  • How FLASHBACK all TABLEs and indexes in a certain pattern for a restoration of p?

    Today I read a few web pages on how to use FLASHBACK to restore to a Restore Point.

    Unfortunately, all of these examples show just how to restore a single TABLE for example

    FLASHBACK TABLE t to RESTORE POINT before_we_do_anything;

    But how can I FLASHBACK all TABLEs (and indexes and other dependent objects) in a certain pattern to a one-step restore point)?

    FLASHBACK myschema.* to before_we_do_anything POINT of RESTORATION;

    does not work.

    Peter

    There is nothing like that. However, you could flashback the entire database to a point in time. It would of course have implications through patterns all the good.

    Nicolas.

  • After spending tables and index a different tablespace, index got unusable?

    Hello

    I moved to table and index a different tablespace. After the many indices obtained unusable. I did not understand thiis?

    How can I do still usable?

    best regards and thank you?

    If you bâtait the index (after moving the table, by the way), then they should be usable without something extra to see.
    Check this procedure only one (small) table and index if this index can be used later. If not, then you have a mystery :-)

    Kind regards
    Uwe Hesse

    http://uhesse.WordPress.com

  • How to collect statistics of Tables and index

    Hi all

    Please help me in the collection of statistics of Tables and index.

    Thank you

    for tables
    exec dbms_stats.gather_table_stats ("SCOTT", "EMPLOYEES");

    for indexes
    DBMS_STATS.gather_index_stats exec ('SCOTT', 'EMPLOYEES_PK');

    Visit this link for details
    http://nimishgarg.blogspot.com/2010/04/Oracle-dbmsstats-gather-statistics-of.html

  • I'm looking for Custom table and index

    Hi Hussein;
    I want to find tables and indexes in the APPS schema. All custom tables and index begins with ZZ...

    I try to type this query, but its bring many record a lot, where I am not mistaken. And can not find the query for custom index.

    Select a.table_name, a.owner, d.CREATED
    from all_tables an inner join dba_objects d on
    a.OWNER = d.OWNER
    where table_name like '% ZZ' and 'a.OWNER =' APPS

    Thanks for the tips

    Hello

    You do not have to join, ask just DBA_OBJECTS (where type_objet = 'TABLE' and object_name like '% ZZ') or (where object_type = 'TABLE' and OWNER = "CUSTOM SCHEMA"). If you follow the standards of customization, custom tables/index should exist under the custom schema (and not under APPS schema).

    Kind regards
    Hussein

  • The cache/pin layout tables and indexes - Howto?

    Hi all

    I touched upon a request by a seller of BEDS to do something I'm not terribly familiar with... they want to "hide" or "pin" a table and an index in memory.

    I was looking and saw something to the effect of making the Table1

    ALTER TABLE Table1 in CACHE;

    However, the seller has been mention some examples that seem to indicate the creation of a pool of Dungeon (a pool of buffers separate cache?).. and then doing something like

    ALTER TABLE Table1 STORAGE (USER_TABLES KEEP)

    Can someone give me an idea as to the difference between these two concepts... links on how do, etc.?

    Thanks in advance!

    Cayenne

    Hello

    There are 'rules' to pin the tables and indexes. The Oracle documentation states:

    "A good candidate for a segment in the pool of the DUNGEON is a segment that is smaller than 10% of the size of the DEFAULT buffer pool and has suffered at least 1% of the total i/o in the system."

    Here are the rules that I use:

    -Cache tables & indexes where the table is low)<50 blocks)="" and="" the="" table="" experiences="" frequent="" full-table="">

    -Cache objects that use more than 10% of the size of the data buffer.

    Here is the script I use to automate the assignment of the tables in the pool of DUNGEON.

    ATTENTION: This script is not for beginners:

    http://www.rampant-books.com/t_oracle_keep_pool_assignment.htm

    I hope this helps...

    Donald K. Burleson
    Oracle Press author
    Author of "Oracle Tuning: the definitive reference".
    http://www.rampant-books.com/book_2005_1_awr_proactive_tuning.htm

  • How to find the partitioned tables and the number of sheets in each table

    Hello friends,

    I have a scheme called ICS_OWNER where I partitioned and tables not partitoined.

    I want to list all the tables that are partitioned.

    and also

    I want to know what partitions exists in every partitioned table.

    with respective schema specified

    Thank you/Kumar

    When you have questions like this, you don't ask here.
    but you take your (or should I say 'your') keyboard
    and type
    Select *.
    dict
    where table_name like ' % PART %.
    /

    All the dictionary views are listed in the DICT.

    ----------
    Sybrand Bakker
    Senior Oracle DBA

  • Update of the partition table and update rank with php.

    Hello

    I have a partition table on my site which is

    Scores: id - userid - ranking - points-

    Get points for doing things while using the site users. Points are updated, but I don't know how

    to update this user's position by comparing everyone elses points and rank numbers update

    based on the users with most points in php.

    Hope you can help. Thank you

    Weird, the link I provided is not what I wanted; It seems very different and is difficult to read. Anyway, you don't mention what goes wrong with the code you provided. I also don't think that you want to prepend rank alias with the table name 'notes' because it is not a table column. I do not use MySQL, but I think you want to use ' @' for your SQL local variables, so something like:

    $sqlgo = mysql_query ("SET @rank = 0; SELECT @rank: = @ row + 1 rank Users.id, Users.username, Users.profilepic, Scores.scoreid, Scores.userid, Scores.level, Scores.points, rank, Scores.badges OF Scores INNER JOIN users ON Scores.userid = Users.id ORDER BY invoking DESC LIMIT 30 ");

  • DBMS_STATS Table and Index Stats Question?

    All,

    Oracle database version: 10.2.0.3
    Operating system: Solaris 10 X 86-64

    We have a packed application we collect stats of objects with cascade = "TRUE". If the index statistics would be also collected in the process of collecting statistics. We do a estimate_percent = > 30 and method_opt = > all COLUMNS size AUTO no statistical calculation of these paintings that are huge (1 m lines - 192 m). The collected index statistics is based also on the estimate_percent product in the order.

    We found that some of the SQL had improved performance after the calculation of the index statistics in our Test environment that is a copy of production, updated daily.

    We thought the way to collect statistics:

    Collect statistics for tables with estimate_percent and Computing stats on index.

    We are making changes to our scripts and test approach in our Test environment.

    In the meantime, I would like to know the pros and cons of this approach?


    Thank you
    Anantha

    You run your own collect routine of stats, I understand that you disable an Oracle provides and plans automatically on 10g?

    What result did you get the Oracle supplied with AUTO_SAMPLE_SIZE routine?

    Estimate of the table and then calculating the index was something that I saw recommended in the past with ANALYZE and if you see the best results to the test, I think it would be worth in production.

    None of the environments applications two users are exactly the same, but the approach appears reasonable based on your observations.

    I suggest to bring together some before and after snapshots of query performance so that you have documentation of your results.

    IMHO - Mark D Powell-

  • INI_TRANS for TABLE and INDEX

    Hello

    My version of DB is 10.2.0.3

    As default, the INI_TRANS of the tables is 1 and for the index is 2. For some reason I have to increase the INI_TRANS of a table at 5, then what value set for INI_TRANS of indexes on the table?

    I read somewhere that INI_TRANS of the index to be set twice from INI_TRANS. means of the table if table INI_TRANS is 5 then INI_TRANS of the index must be set to 10. Is this true? If Yes, then what is the logic behind this?



    Thank you
    Oratest

    Published by: oratest on February 4, 2013 15:26

    oratest wrote:

    My version of DB is 10.2.0.3

    As default, the INI_TRANS of the tables is 1 and for the index is 2. For some reason I have to increase the INI_TRANS of a table at 5, then what value set for INI_TRANS of indexes on the table?

    I read somewhere that INI_TRANS of the index to be set twice from INI_TRANS. means of the table if table INI_TRANS is 5 then INI_TRANS of the index must be set to 10. Is this true?

    N °
    There is no useful guidelines for a generic parameter. Consider the conflicting scenes:

    (a) five sessions insert five rows separated in a single table block - with 5 locations of ITL. There is an index on the table, but the five inserted rows just keep these different values that their index entries go to 5 different leaf blocks: the index didn't need initrans 5.

    (b) using the different sessions to insert a row in a table - the nature of the SAMS means that (on average) there are 5 rows of SAMS 80 inserted into 16 different blocks - the SAMS table must be 5. However, in this case the indexed column is generated by a sequence and all 80 index entries should be inserted in the same block of sheets, so you initrans 80 on the index. (Except Oracle will make sheets index block split to work around the problems of initrans was too small on the concurrent inserts.)

    You need to consider the nature of the index and model of changing data for each unique index separately - and then you could assign initrans on the index to do NO MORE THAN the initrans + 1 table because (a) who will lose not too much space (b) he is not likely to let the too great claim to happen (c) Oracle will extend dynamically LAUGHED in most cases (d) if it is bad for an index special you will notice it pretty quickly - and there will be other problems (buffer waits occupied) deal anyway on this index.

    Concerning
    Jonathan Lewis

  • Partitioning table and Tablespaces

    Hi all
    We have tables db with millions of records. So we have them partitioned and each partition separate tablespace.

    I want to know in what scenarios should we use separate tablespace for each partition because it leads to a waste of space at times.

    Concerning
    Lokesh

    There are two scenarios where extending partitions on different tablespaces is logical.

    One is when we have to use different profiles for different categories of partition, and we want to get the best value from our stock. For example, our table is partitioned by date. Most of user requests affects the latest records and the oldest records are rarely questioned and perhaps only of asynchronous process. In this scenario, using a different storage space means that we can put partitions on different servers: the most recent partitions on our more fast, more expensive discs and the old stuff on slower and less expensive kit. [url http://download.oracle.com/docs/cd/B28359_01/server.111/b32024/part_lifecycle.htm#CACECAFB] To learn more.

    The other scenario is high availability. Our entire userbase makes queries across the table, but to execute individual queries against only a few partitions; If our table is probably divided by hash or list. By spreading the partitions on different tablespaces, we can miximise the availability of the data in the table. Suppose that we need to do an offline backup or datafile corruption there. If the table spans twenty tablespaces 95% of its data is still available for users.

    Cheers, APC

  • Adding a Partition to a range-Hash partitioned Table

    Hello

    I created the composite partition table (RANGE-HASH).  Oracle: 11.2, OS: HP UX

    CREATE TABLE 'XYZ '. "" TABLE_XYZ.

    (

    ----

    VARCHAR2 (54) "PROFILE" DEFAULT "000000000000000000' ENABLE NON-NULL"

    NUMBER (21.7) "CREATED_ON" DEFAULT 0 ENABLE NOT NULL,.

    ----

    )

    PARTITION BY RANGE

    (

    CREATED_ON

    )

    SUBPARTITION BY HASH

    (

    VIEW PROFILE

    )

    SUBPARTITION TEMPLATE

    (

    SUBPARTITION SP1 TABLESPACE PSAPISU,

    SUBPARTITION TABLESPACE PSAPISU SP2,

    SUBPARTITION SP3 TABLESPACE PSAPISU,

    SUBPARTITION SP4 TABLESPACE PSAPISU,

    SUBPARTITION SP5 TABLESPACE PSAPISU,

    SUBPARTITION SP6 TABLESPACE PSAPISU,

    SUBPARTITION SP7 TABLESPACE PSAPISU,

    SUBPARTITION SP8 TABLESPACE PSAPISU,

    SUBPARTITION SP9 TABLESPACE PSAPISU,

    SUBPARTITION SP10 TABLESPACE PSAPISU,

    SUBPARTITION SP11 TABLESPACE PSAPISU,

    SUBPARTITION SP12 TABLESPACE PSAPISU,

    SUBPARTITION SP13 TABLESPACE PSAPISU,

    SUBPARTITION SP14 TABLESPACE PSAPISU,

    SUBPARTITION SP15 TABLESPACE PSAPISU,

    SUBPARTITION SP16 TABLESPACE PSAPISU,

    SUBPARTITION SP17 TABLESPACE PSAPISU,

    SUBPARTITION SP18 TABLESPACE PSAPISU,

    SUBPARTITION SP19 TABLESPACE PSAPISU,

    SUBPARTITION SP20 TABLESPACE PSAPISU,

    SUBPARTITION SP21 TABLESPACE PSAPISU,

    SUBPARTITION SP22 TABLESPACE PSAPISU,

    SUBPARTITION SP23 TABLESPACE PSAPISU,

    SUBPARTITION SP24 TABLESPACE PSAPISU,

    SUBPARTITION SP25 TABLESPACE PSAPISU

    )

    (

    CREATED_ON_OCP01 PARTITION VALUES LESS THAN (20090101000000).

    CREATED_ON_OCP02 PARTITION VALUES LESS THAN (20090401000000).

    CREATED_ON_OCP03 PARTITION VALUES LESS THAN (20090701000000).

    CREATED_ON_OCP04 PARTITION VALUES LESS THAN (20091001000000).

    CREATED_ON_OCP05 PARTITION VALUES LESS THAN (20100101000000).

    CREATED_ON_OCP06 PARTITION VALUES LESS THAN (20100401000000).

    CREATED_ON_OCP07 PARTITION VALUES LESS THAN (20100701000000).

    CREATED_ON_OCP08 PARTITION VALUES LESS THAN (20101001000000).

    CREATED_ON_OCP09 PARTITION VALUES LESS THAN (20110101000000).

    CREATED_ON_OCP10 PARTITION VALUES LESS THAN (20110401000000).

    CREATED_ON_OCP11 PARTITION VALUES LESS THAN (20110701000000).

    CREATED_ON_OCP12 PARTITION VALUES LESS THAN (20111001000000).

    CREATED_ON_OCP13 PARTITION VALUES LESS THAN (20120101000000).

    CREATED_ON_OCP14 PARTITION VALUES LESS THAN (20120401000000).

    CREATED_ON_OCP15 PARTITION VALUES LESS THAN (20120701000000).

    CREATED_ON_OCP16 PARTITION VALUES LESS THAN (20121001000000).

    CREATED_ON_OCP17 PARTITION VALUES LESS THAN (20130101000000).

    CREATED_ON_OCP18 PARTITION VALUES LESS THAN (20130401000000).

    CREATED_ON_OCP19 PARTITION VALUES LESS THAN (20130701000000).

    CREATED_ON_OCP20 PARTITION VALUES LESS THAN (20131001000000).

    CREATED_ON_OCP21 PARTITION VALUES LESS THAN (20140101000000).

    CREATED_ON_OCP22 PARTITION VALUES LESS THAN (20140401000000).

    CREATED_ON_OCP23 PARTITION VALUES LESS THAN (20140701000000).

    CREATED_ON_OCP24 PARTITION VALUES LESS THAN (20141001000000).

    CREATED_ON_OCP25 PARTITION VALUES LESS THAN (20150101000000).

    PARTITION CREATED_ON_OCPMAX VALUES LESS THAN (MAXVALUE)

    )

    TABLESPACE "PSAPISU" ENABLE LINE MOVEMENT;

    Now, I am trying to add the new partition but becomes under errors:

    ALTER TABLE SAPISU. ADD PARTITION VALUES LESS THAN (20150401000000) CREATED_ON_OCP26 ZTMD_300_VERS_MANAGE

    *

    ERROR on line 1:

    ORA-14074: partition bound must gather greater than that of the last partition

    ERROR on line 1:

    ORA-14018: partition bound list contains too few elements

    I tried the SYNTAX mentioned by Oracle DOC, still getting error. Partitioned table and index management

    Could if it you please let me know, what is the exact syntax that I should follow?

    See you soon

    Sameer

    CREATED_ON_OCPMAX PARTITION SPLIT THAN (MAXVALUE)

    That don't mean to 'divide' the MAXVALUE partition.

    You cannot split a partition that contains the values of A, B, C, D, MAXVALUE to MAXVALUE; that makes no sense. ERROR on line 1:

    ORA-14080: partition cannot be split along the specified high limit

    That exception is to say you can't use MAXVALUE upper limit. You must use a value that is actually IN the partition.

    Go back and look at the definition of your partitions:

    CREATED_ON_OCP25 PARTITION VALUES LESS THAN (20150101000000).

    PARTITION CREATED_ON_OCPMAX VALUES LESS THAN (MAXVALUE)

    See which ends with: "VALUES LESS THAN (MAXVALUE)? MAXVALUE is not IN the score; This is the upper limit of the partition.

    Divide certain value > '20150101000000' and LESS THAN MAXVALUE;

    So if you try to create a partition for OCP26 you can use '20160101000000'.

    CREATE TABLE PART_TEST2)
    VARCHAR2 (54) DEFAULT PROFILE "000000000000000000' ENABLE NOT NULL,
    CREATED_ON NUMBER (21.7) DEFAULT 0 ENABLE NOT NULL
    )
    PARTITION BY RANGE (CREATED_ON)
    (
    CREATED_ON_OCP24 PARTITION VALUES LESS THAN (20141001000000).
    CREATED_ON_OCP25 PARTITION VALUES LESS THAN (20150101000000).
    PARTITION CREATED_ON_OCPMAX VALUES LESS THAN (MAXVALUE)
    )

    ALTER table split partition created_on_ocpmax part_test2
    to (20160101000000) into (partition, partition CREATED_ON_OCPMAX created_on_ocp26)

  • CTXCAT index on partitioned tables

    Hi all

    I use an oracle 11.2 database and try to use the index for a sample application oracle CTXCAT.

    I saw that oracle reference documentation "the CTXCAT index can't stand table and index partitioning, not...» "in http://docs.oracle.com/cd/B28359_01/text.111/b28303/ind.htm#BEIIEAFD

    But I was able to create a CTXCAT index on a partitioned table query to use it successfully.

    So can someone tell me exactly it meaning in the documentation of oracle developer "CTXCAT index does not support index and table partitioning?

    Thanks in advance,

    Mor.

    This simply means that you cannot create a LOCAL partitioned index on a table partitioned using the CTXCAT indextype. There is not probably the creation of a global index (ie. covering all partitions) on a partitioned table.

    The wording could be clearer.

Maybe you are looking for