SUBPARTITION

When I run the table creation script, I get an error "ORA-00922: missing or invalid option. When I remove "INTERVAL (NUMTOYMINTERVAL (1, 'MONTH') 'it works fine.). I can't have a SUBPARTITION interval? I'm on Oracle 11.2

create table A_TEST (
DT    DATE NOT NULL,
COL1_LIST varchar2(10))    
PARTITION BY LIST (COL1_LIST)
SUBPARTITION BY RANGE (DT) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')
(PARTITION P1 VALUES ('A')
  (subpartition SP1 VALUES LESS THAN (TO_DATE('01-10-2013', 'DD-MM-YYYY'))),
PARTITION P2 VALUES ('B')
  (subpartition SP2 VALUES LESS THAN (TO_DATE('01-10-2013', 'DD-MM-YYYY')))
);

If you do not use the model suggested subpartition approach be "someoneelse" then you have a few syntax errors to fix. I think that the following is correct:

(

PARTITION P1 VALUES LESS THAN (TO_DATE (JANUARY 10, 2013 ',' DD-MM-YYYY ""))

(

SUBPARTITION SP_A VALUES ('A'),

SUBPARTITION SP_B VALUES ('B')

)

)

Concerning

Jonathan Lewis

Tags: Database

Similar Questions

  • Rebuild partition/subpartition in parallel

    Hello

    I'm on 11 GR 2.

    I have a composite partitioned table.

    I have the index local bitmap created with the parallel clause. no degree specified and left to "DEFAULT".

    I made the unusable index for some of the subparts.

    Now, I want to rebuild the local indexes on the server.

    alter index < index_name > < partition name > rebuild subpartition;

    Given that these indices were initially created with parallel clause, do I need to explicitly specify the parallel clause for them to be rebuilt at the same time?

    EDIT:

    I've tested this and it seems that I have to specify the parallel clause explicitly for the index to rebuild at the same time. Without the parallel clause, the index used only a thread to do the work.

    Mark as answer and closed.

    Responded. We need to explicitly specify

  • SUBPARTITION to drop and add data give ora-14300

    11.2.0.4

    RHEL

    create a table partitioned by date, sous-partitionnée by the key 2 N, Y values

    Insert a record for sysdate, key_value = 'Y '.

    Insert a record for sysdate, key_value = ' don't


    2 subparts create ok.

    Drop the subparts to this date where value = N.

    Re-insert the record for sysdate, key_value = ' not and generates the error

    ORA-14300: partitioning key in a score cards outside the maximum number of partitions "" ""


    Manually add the subpartition (alter table add) high value N for the data to be inserted again for this partition.

    Is this expected behavior?  I can understand if the model was not there, but it is.  Probably a quirk to treat the scores of void

    
    SQL> drop table part_test;
    
    
    
    
    Table dropped.
    
    
    SQL> SQL> CREATE TABLE part_test
      2  (
      3    ID                  NUMBER(9)     NOT NULL,
      4    create_ts                       date default sysdate,
      5    keep_flag               varchar2(1) default 'Y'
      6  )
      7  COMPRESS BASIC 
      8      PARTITION BY range (create_ts)     INTERVAL (NUMTODSINTERVAL(1,'DAY'))
      9   SUBPARTITION BY list (keep_flag)
     10     subpartition template
     11         (
     12           subpartition sp_date1_list_y values ('Y'),
     13            subpartition sp_date1_list_n values ('N')
     14          )
     15       ( partition p1_date1 values less than (to_date('01-01-2015','DD-MM-YYYY'))
     16       );
    
    
    Table created.
    
    
    SQL>       
    SQL>     
    SQL> insert into part_test
      2  (id, create_ts, keep_flag)
      3  values
      4  (1, sysdate-1, 'Y');
    
    
    
    
    1 row created.
    
    
    SQL> SQL> insert into part_test
      2  (id, create_ts, keep_flag)
      3  values
      4  (2, sysdate-1, 'N');
    
    
    1 row created.
    
    
    SQL> 
    SQL> 
    SQL> insert into part_test
      2  (id, create_ts, keep_flag)
      3  values
      4  (3, sysdate, 'Y');
    
    
    1 row created.
    
    
    SQL> 
    SQL> insert into part_test
      2  (id, create_ts, keep_flag)
      3  values
      4  (4, sysdate, 'N');
    
    
    1 row created.
    
    
    SQL> 
    SQL> commit;
    
    
    Commit complete.
    
    
    SQL> 
    SQL> 
    SQL> set lines 180
    SQL> col high_value format a5
    SQL> 
    SQL> select partition_name, subpartition_name, high_value
      2   from dba_tab_subpartitions
      3  where table_name = 'PART_TEST';
    
    
    PARTITION_NAME                 SUBPARTITION_NAME              HIGH_
    ------------------------------ ------------------------------ -----
    P1_DATE1                       P1_DATE1_SP_DATE1_LIST_Y       'Y'
    P1_DATE1                       P1_DATE1_SP_DATE1_LIST_N       'N'
    SYS_P248743                    SYS_SUBP248741                 'Y'
    SYS_P248743                    SYS_SUBP248742                 'N'
    SYS_P248746                    SYS_SUBP248744                 'Y'
    SYS_P248746                    SYS_SUBP248745                 'N'
    
    
    6 rows selected.
    
    
    
    
    -- drop the last subpartition
    SQL> alter table part_test drop subpartition SYS_SUBP248745;
    
    
    Table altered.
    
    
    SQL> 
    SQL> insert into part_test
      2  (id, create_ts, keep_flag)
      3  values
      4  (4, sysdate, 'N');
    insert into part_test
                *
    ERROR at line 1:
    ORA-14300: partitioning key maps to a partition outside maximum permitted number of partitions
    
    
    
    
    -- manually add the subpartition
    
    
    SQL> 
    SQL> alter table part_test modify partition SYS_P248746 add subpartition sub_partN values('N');
    
    
    Table altered.
    
    
    SQL> 
    
    
    -- and now the data goes in and we can see the subpartition is created
    SQL> insert into part_test
      2  (id, create_ts, keep_flag)
      3  values
      4  (4, sysdate, 'N');
    
    
    1 row created.
    
    
    SQL> commit;
    
    
    Commit complete.
    
    
    SQL> 
    SQL> select partition_name, subpartition_name, high_value
      2   from dba_tab_subpartitions
      3  where table_name = 'PART_TEST';
    
    
    PARTITION_NAME                 SUBPARTITION_NAME              HIGH_
    ------------------------------ ------------------------------ -----
    P1_DATE1                       P1_DATE1_SP_DATE1_LIST_Y       'Y'
    P1_DATE1                       P1_DATE1_SP_DATE1_LIST_N       'N'
    SYS_P248743                    SYS_SUBP248741                 'Y'
    SYS_P248743                    SYS_SUBP248742                 'N'
    SYS_P248746                    SYS_SUBP248744                 'Y'
    SYS_P248746                    SUB_PARTN                      'N'
    
    
    6 rows selected.
    
    
    SQL> 
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    Perhaps more reasonable to expect ORA-14400: inserted partition key is not mapped with any partition?

    The subpartition template applies only to the subpartitions automatically created when the partition is created.

  • Interval question partition and subpartition - range

    11.2.0.4

    (separate issue than my other storage)

    You can partition a table by day apart and subpartition and then by a field ID, a sequential ID in single digits?  I want a subpartition for each code.  something lije

    CREATE TABLE detail_tab

    (prod_id NUMBER (6))

    date of create_ts

    )

    PARTITION OF RANGE (create_ts) INTERVAL (NUMTODSINTERVAL(1,'DAY'))

    SUBPARTITION BY RANGE (prod_id) interval (1)

    Ive read the docs http://docs.oracle.com/cd/E18283_01/server.112/e16541/part_admin001.htm#insertedID5 but you see is not the one I want.  IM thinking the closest, I can get to it is a hash range



    OK - so FYI stock, you should have a LIMITED identity series: your "id" is probably in the ticker.

    Oracle can manage thousands of partitions.

    For example, to create a partitioned table range-list with each list being one, or several, stock ID. Just hardcode the IDs. Or generate the DDL from a table with a game master of ID.

    Creation of segment use deferred for segments are not created until there are at least a lines for the subpartition.

    Remember, however, you must handle everything by SEGMENT. This means the subpartitions. So all this rollilng off be for hundreds of ID stock.

    You should analyze your processes to determine the "roll-off" exact criteria you need. Group stocks into the partition even if they can get out.

    Also - you can use 'tricks' as the creation of CUSTOM symbols that truly represent AGGREGATE data from stocks of one or more.

    We used to store weekly data by using a value DATE when markets aren't open yet. Activity on these dates were given aggregate rather than granular data.

  • Find the right Partition for swap Partiton when there are PARTITION and SUBPARTITION

    Hi all

    I have a small problem:

    I want to find the right cause of partitions of the partition key.  I have a partition and a Subpartition (sample - table in annex).

    I leave the database to generate the partition (and name), the name is generated. I need to find for the exchange of partition

    the right of Partition has cause of a given value of the partition key (in this case EVOD_PART_DATE and 20141101 value).

    When I try to find the right partiton name, I would use generally not:

    SELECT DISTINCT dbms_rowid.rowid_object(ROWID) data_object_id
       FROM F_CONTRACT_EVENT
       WHERE  EVOD_PART_DATE = TO_DATE ('20141101','YYYYMMDD')
    

    Okay, I get 2 rows, I'm expecting one, but cause the result are the subpartions, I get this:

      SELECT *  FROM ALL_OBJECTS WHERE DATA_OBJECT_ID IN ( 155159,155154);
    

    I see:

    EVO_DM    F_CONTRACT_EVENT    SYS_SUBP4292    155159    155159    TABLE SUBPARTITION
    EVO_DM    F_CONTRACT_EVENT    SYS_SUBP4287    155154    155154    TABLE SUBPARTITION
    

    But I don't want the subparts, I want the PARTITON!

    The table:

    CREATE TABLE "EVO_DM"."A0_F_CONTRACT_EVENT" 
       ( "EVOD_DDATE_ID_VALID_FROM" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DDATE_ID_VALID_TO" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DTIME_ID_START" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DSUST_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DCHAN_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DARTI_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DCAMP_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DUSAG_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DOPSY_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DDEVI_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DSHOP_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DPLFO_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DACCO_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DDECL_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DOBJT_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DOFFR_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DCNTR_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DCURR_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DCONT_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DIVWC_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "DD_SUBSCRIPTION_ID" VARCHAR2(50 BYTE) DEFAULT '~' NOT NULL ENABLE, 
        "SINGLE_ISSUE" NUMBER(8,0) DEFAULT 0, 
        "SUBSCRIPTION" NUMBER(8,0) DEFAULT 0, 
        "RENEWAL" NUMBER(8,0) DEFAULT 0, 
        "CONVERSION" NUMBER(8,0) DEFAULT 0, 
        "DOWNLOAD" NUMBER(8,0) DEFAULT 0, 
        "UPDATES" NUMBER(8,0) DEFAULT 0, 
        "NET_VALUE_IN_EUR" NUMBER(10,4) DEFAULT 0 NOT NULL ENABLE, 
        "GROSS_VALUE_IN_EUR" NUMBER(10,4) DEFAULT 0 NOT NULL ENABLE, 
        "COMMISSION_IN_EUR" NUMBER(10,4) DEFAULT 0 NOT NULL ENABLE, 
        "TAX_IN_EUR" NUMBER(10,4) DEFAULT 0 NOT NULL ENABLE, 
        "POSITION_NR" NUMBER(3,0) DEFAULT -1, 
        "DD_ORDER_NR" VARCHAR2(50 BYTE) DEFAULT '~' NOT NULL ENABLE, 
        "EVOD_SOURCE_CD" VARCHAR2(50 BYTE) DEFAULT '~' NOT NULL ENABLE, 
        "FLAG_STOCK_RELEVANT" NUMBER(1,0) DEFAULT '0' NOT NULL ENABLE, 
        "RENEWAL_NR" NUMBER(3,0) DEFAULT -1, 
        "EVOD_DDATE_ID_SUBSCRIPTION" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
        "EVOD_DPRCG_ID" NUMBER(20,0) DEFAULT -1 NOT NULL ENABLE, 
      
       EVOD_PART_DATE DATE  GENERATED ALWAYS AS ( TRUNC(TO_DATE(TO_CHAR(EVOD_DDATE_ID_VALID_FROM),'YYYYMMDD'),'MM')) VIRTUAL)
    PARTITION BY RANGE(EVOD_PART_DATE)
    interval(NUMTOYMINTERVAL (1,'MONTH'))
    SUBPARTITION BY LIST(EVOD_SOURCE_CD)
    SUBPARTITION TEMPLATE(
    SUBPARTITION "P_ITUNES"  VALUES ('ITUNES') ,
    SUBPARTITION    "P_WSP"  VALUES ('WSP'),
    SUBPARTITION   "P_GOOGLE"  VALUES ('PLAYSTORE'),
    SUBPARTITION   "P_DEFAULT"  VALUES ('~') ,
    SUBPARTITION   "P_AMAZON"  VALUES ('AMAZON_EREADER', 'AMAZON_MANUELL', 'AMAZON_TABLET') ,
    SUBPARTITION    "P_MSD"  VALUES ('MSD')
    )
    (
     PARTITION P01 VALUES LESS THAN (TO_DATE('200310','YYYYMM')) SEGMENT CREATION DEFERRED
    )
    PARALLEL 10  ;
    

    Any ideas?

    Thanks for Berlin

    First of all - the DOF you posted is INVALID - you do not specify a delayed segment creation for partitions. Specify you for the table.

    Also, you must remove the DEFAULT value - 1 for the partitioning column. The value '-1' cannot be converted to a valid date for the virtual partitioning column value.» The default value is useless and will give confusion around the year exception err when the exception should actually provide a NULL value for a column not null.

    The documentation explains how to use the EXCHANGE PARTITION and has the code example

    Maintenance of Partitions

    Exchange a Partition of a partitioned Table interval

    You can exchange of range partitions in a partitioned table interval. However, you must make sure that the partition of the interval was created before that you can swap partition. You can leave the database create the partition in the partition of the interval of locking.

    The following example shows an Exchange partition for the interval_sales table, range-partitioned using the monthly from partitions of 1 January 2004. This example shows how to add data to the table using charge Exchange partition for June 2007. Assume there is only a local index on the interval_sales table and equivalent index have been created on the interval_sales_june_2007 table.

    LOCK TABLE interval_sales  PARTITION FOR (TO_DATE('01-JUN-2007','dd-MON-yyyy'))  IN SHARE MODE;    ALTER TABLE interval_sales  EXCHANGE PARTITION FOR (TO_DATE('01-JUN-2007','dd-MON-yyyy'))  WITH TABLE interval_sales_jun_2007  INCLUDING INDEXES;
    

    Note the use of the FOR syntax to identify a partition that has been generated by the system. The name of the partition can be used by querying the *_TAB_PARTITIONS view of data dictionary to find the partition system-generated name.

    Given that the last paragraph? That's what showed Solomon.

    NOTE:-special attention to the FIRST paragraph. If you use segment carried OVER creating the partition you want to Exchange could NOT have been created yet.

    Make SURE that you lock the partition as the example shows, or you will get an exception if it has not been created.

    Also - we know NOT what PROBLEM you're trying to solve.

    If you exchange a PARTITION of a table subpartitioned your working table should actually be partitioned using the SAME parttioning as the subparts in the source table:

    See my response in this thread:

    https://forums.Oracle.com/forums/thread.jspa?threadID=2482090&TSTART=30

    In this thread I have provide the code example illustrating how the table should be created and made Exchange.

  • How to change the default attributes for an index for a subpartition without data in it

    Hello

    The use of oracle 11.2.0.3 attributes and modifydefault for a partition, for example the tablespace can but can not use the same syntax for a subpartition.

    Is it possible to change the default attributes for a subpartition?

    ALTER index RTRN_CUR_CONV_IDX change the default attributes for the subpartition SYS_SUBP64934 RTRN_PART_201505 tablespace

    Thank you

    Refer to the section of the doc "a Subpartition template editing.

    http://docs.Oracle.com/CD/B28359_01/server.111/b32024/part_admin.htm#i1007904

    A Subpartition template editing

    You can change a model of a composite partitioned table subpartition by replacing it with a new model of subpartition. All subsequent operations that use the subpartition template (such as ADD PARTITION or MERGE PARTITIONS ) will now use the new subpartition template. Existing subpartitions remain unchanged.

    If you change a subpartition of a range model * composite partitioned table, then of range partitions that have not yet been created will use the new subpartition template.

    Use of the ALTER TABLE ... SET SUBPARTITION TEMPLATE statement to specify a new subpartition template. For example:

    You will need to 'fix' the new model as in the doc example.

    By the example of partitions with just a line in them, we find the secondary partition with data correctly a tablespace name as expecetd, but 4 other secondary partitions always show the name of the default tablespace in user_ind_subpartitions.

    Any idea whay and if can change

    Change the template affects only the created NEW partitions/subpartitions. If you want existing subpartitions to a different tablespace, you will need to move it.

  • Shrink a subpartition

    Hello

    I have a RDBMS Oracle 11 GR 2.
    I get the following message of error when I try to "shrink" a subpartition:

    SQL > alter table OBD_OWN. DWH_DECLARATIES change the compact shrink subpartition DWH_DCE_RLP_2007_Q2_379 spacing.
    ALTER table OBD_OWN. DWH_DECLARATIES change the compact shrink subpartition DWH_DCE_RLP_2007_Q2_379 spacing
    *
    ERROR on line 1:
    ORA-10635: Type of invalid segment or tablespace


    and

    SQL > select TABLE_OWNER, TABLE_NAME, nom_partition, SUBPARTITION_NAME from dba_tab_subpartitions where SUBPARTITION_NAME

    TABLE_OWNER, TABLE_NAME NOM_PARTITION SUBPARTITION_NAME
    ------------------------------ ------------------------------ ------------------------------ -----------------------------
    OBD_OWN DWH_DECLARATIES DWH_DCE_RLP_2007_Q2 DWH_DCE_RLP_2007_Q2_379


    Can someone tell me how to 'shrink' a table subpartition?

    Thanks and greetings

    Hello

    The syntax is correct.  Please check if the tablespace is with management manual of the space segment.

    Kind regards

    Bigot

  • Subpartition change a table of scales

    I'm on Oracle 11 g.  I have a table that t partitioned SCALES (top level is put on the account id, nested is carried on the transaction date). Nested level has 3 SP1, SP2, SP3 subparts for each range of high-level account id. I want to load daily data in this table and try to use the EXCHANGE partition function to only change the first of the 3 subpartitions SP1, because it is the only newcomer partition data will in...

    Q1.  Am I correct that I can't share in the target T table in the upper level (account level)?

    Q2. So if I'm right then I have Exchange subpartition level.  My question is what should the DOF look like to WORK W table that will be exchanged? If the work W DDL table must be identical to the target T table (i.e., having the two scales) OR must the work table W be partitioned only on the beach on the date of the transaction? At the end for all this I want the target table to be partitioned as it was before the Exchange i.e. scales.

    Q3. I am told that I can't share all the first subparts at once i.e. I have to loop through and taking sub partition exchange both. Is this fair?

    Q3.  Is it the right way, I'm on the creation of the table of work W I have an outer loop through the beaches of account id. For each account id range:

    1 remove the index on W and truncate the work table W

    2. Insert as Select * void target partition SP1 for this account is carried in W

    3 insert the daily records newly arrived in W (now W has the fusion of old and new)

    4. create the index the w

    5 Exchange W with the sub specific partition name i., e name of SP1 for this range of account id

    Q4. Help, please. with any other suggestions for making the most efficient possible. I am told that I have to make a partition of void at a time. Is this fair?

    Sincerely

    I have a table that t partitioned SCALES (top level is put on the account id, nested is carried on the transaction date).

    Why - tell us the business reason for partitioning the table ID account first, and then the TRANSACTION DATE second.

    This suggests that your queries are primarily by account id or account ID range, rather than the date of the transaction. Is this correct?

    I want to load daily data in this table and try to use the EXCHANGE partition function to only change the first of the 3 subpartitions SP1, because it is the only newcomer partition data will in...

    OK - then you load data into MULTIPLE processes.

    Q1.  Am I correct that I can't share in the target T table in the upper level (account level)?

    Yes and no yes - you can exchange at the partition level. But no - your new data are NOT at the level of the score, that's ONE of the subpartitions.

    Q2. So if I'm right then I have Exchange subpartition level.  My question is what should the DOF look like to WORK W table that will be exchanged? If the work W DDL table must be identical to the target T table (i.e., having the two scales)

    For subpartitions work table must correspond to the structure and will be a partitioned table that is partitioned to match the subparts of the main table.

    See my example in this thread:

    https://community.Oracle.com/thread/2484090?TSTART=30

    The Oracle (VLDB and partitioning Guide) documentation has more examples:

    http://docs.Oracle.com/CD/B28359_01/server.111/b32024/part_admin.htm#i1107555

    Exchange a Subpartition of a *-range partitioned Table

    The semantics of the ALTER TABLE ... EXCHANGE SUBPARTITION are identical to those described previously in "Exchange a Subpartition of a *-Hash Partitioned Table '.

    See the examples in the doc

    Q3. I am told that I can't share all the first subparts at once i.e. I have to loop through and taking sub partition exchange both. Is this fair?

    Yes and no yes - it's true. No - you can do that.

    You can exchange an entire partition, even if it is sous-partitionnée, or you can swap a subpartition. But your new data being subpartition level you will need to make an exchange for each subpartition P1.

    If your table is partitioned by date (instead of ID), you can load your work table (partitioned by account id) and then exchange the partition of high level of the ENTIRE page.

    Q4. Help, please. with any other suggestions for making the most efficient possible. I am told that I have to make a partition of void at a time. Is this fair?

    Yes - but as I said before if your table has been partitioned by date and sous-partitionnée by id so you could do a single Exchange.

    Can't help with the indexes because you didn't post the DDL for the table and index, so we can see whether they are global or local. For some use cases you have Oracle automatically to update the index.

    Learn by doing. Create some examples of paintings and try things.

  • SUBPARTITION nonexistent stats

    Hello

    I created a table partitioned to 11.2.

    The partition clause is:

    PARTITION BY RANGE (RIFDATE)

    INTERVAL (NUMTODSINTERVAL(1,'DAY'))

    SUBPARTITION BY HASH (FIELDNAME)

    STORE 4 SUBPARTITIONS (USERS, USERS, USERS, USERS)

    I gathered his stats with:

    exec dbms_stats.gather_table_stats (OWNNAME = > 'SCOTT', TABNAME = > 'MY_TABLE_PART', ESTIMATE_PERCENT = > 100, DEGREE = > CASCADE 2, = > true, granularity = > 'auto');

    Now I see num_rows and analyse in dba_tab_partions but not in dba_tab_subpartition.

    Why?

    Thank you

    DBMS_STATS

  • NUM_ROWS showing not subpartitions

    I created the table that


    create table range2 (number, age number) partition by range (roll) subpartition of range (age) (partition p1 values less than (100) (subpartition p1sp1 values less than (30), subpartition p1sp2 lower values (60), subpartition p1sp3 values less than (90), subpartition p1sp4 values less than (maxvalue)), partition p2 lower (200) (subpartition p2sp1 values less than (30), p2sp2 lower values (60) subpartition subpartition p2sp3 values less than (90))) subpartition p2sp4 values less than (maxvalue)));

    insert into the select rownum range2, rownum of double connect by level < 1000;
    commit;
    exec dbms_stats.gather_table_stats ('VISHNU', 'RANGE2');
    Select the table table_name, nom_partition, num_rows in user_tab_partitions where table_name = "RANGE2";
    NUM_ROWS NOM_PARTITION TABLE_NAME
    ------------------------------ ------------------------------ ----------
    RANGE2 P2 100
    RANGE2 P1 99
    RANGE2 P3 800


    Select table_name, num_rows nom_partition, subpartition_name from user_tab_subpartitions where table_name = "RANGE2";
    TABLE_NAME NOM_PARTITION SUBPARTITION_NAME NUM_ROWS
    ------------------------------ ------------------------------ ------------------------------ ----------
    RANGE2 P2 P2SP1
    RANGE2 P2 P2SP2
    RANGE2 P2 P2SP3
    RANGE2 P2 P2SP4
    RANGE2 P1 P1SP1
    RANGE2 P1 P1SP2
    RANGE2 P1 P1SP3
    RANGE2 P1 P1SP4
    RANGE2 P3 SYS_SUBP101


    The num_rows column returns values from DBA_TAB_PARTITIONS but the DBA_TAB_SUBPARTITIONS is not... am I missing something here...

    Thank you
    Vishnu P

    You must specify the GRANULARITY setting:

    SQL> select * from v$version;
    
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    PL/SQL Release 11.2.0.3.0 - Production
    CORE    11.2.0.3.0      Production
    TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
    NLSRTL Version 11.2.0.3.0 - Production
    
    SQL> --
    SQL> create table range2 (roll number, age number)
      2  partition by range (roll)
      3  subpartition by range(age)
      4  (partition p1 values less than (100) (
      5  subpartition p1sp1 values less than (30),
      6  subpartition p1sp2 values less than (60),
      7  subpartition p1sp3 values less than (90),
      8  subpartition p1sp4 values less than (maxvalue)),
      9  partition p2 values less than (200) (
     10  subpartition p2sp1 values less than (30),
     11  subpartition p2sp2 values less than (60),
     12  subpartition p2sp3 values less than (90),
     13  subpartition p2sp4 values less than (maxvalue)),
     14  partition p3 values less than (maxvalue) (
     15  subpartition p3sp1 values less than (30),
     16  subpartition p3sp2 values less than (60),
     17  subpartition p3sp3 values less than (90),
     18  subpartition p3sp4 values less than (maxvalue))
     19  );
    
    Table created.
    
    SQL> insert into range2 select rownum,rownum from dual connect by level < 1000;
    
    999 rows created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> exec dbms_stats.gather_table_stats(user,'RANGE2');
    
    PL/SQL procedure successfully completed.
    
    SQL> select
      2  table_name,
      3  partition_name,
      4   num_rows
      5  from user_tab_partitions
      6  where table_name='RANGE2'
      7  order by 1,2,3;
    
    TABLE_NAME                     PARTITION_NAME                   NUM_ROWS
    ------------------------------ ------------------------------ ----------
    RANGE2                         P1                                     99
    RANGE2                         P2                                    100
    RANGE2                         P3                                    800
    
    SQL> select
      2  table_name,
      3  partition_name,
      4  subpartition_name,
      5  num_rows
      6  from user_tab_subpartitions
      7  order by 1,2,3;
    
    TABLE_NAME                     PARTITION_NAME                 SUBPARTITION_NAME                NUM_ROWS
    ------------------------------ ------------------------------ ------------------------------ ----------
    RANGE2                         P1                             P1SP1
    RANGE2                         P1                             P1SP2
    RANGE2                         P1                             P1SP3
    RANGE2                         P1                             P1SP4
    RANGE2                         P2                             P2SP1
    RANGE2                         P2                             P2SP2
    RANGE2                         P2                             P2SP3
    RANGE2                         P2                             P2SP4
    RANGE2                         P3                             P3SP1
    RANGE2                         P3                             P3SP2
    RANGE2                         P3                             P3SP3
    
    TABLE_NAME                     PARTITION_NAME                 SUBPARTITION_NAME                NUM_ROWS
    ------------------------------ ------------------------------ ------------------------------ ----------
    RANGE2                         P3                             P3SP4
    
    12 rows selected.
    
    SQL> --
    SQL> exec dbms_stats.gather_table_stats(ownname=> user, tabname => 'RANGE2', partname => 'P1');
    
    PL/SQL procedure successfully completed.
    
    SQL> select
      2  table_name,
      3  partition_name,
      4  subpartition_name,
      5  num_rows
      6  from user_tab_subpartitions
      7  order by 1,2,3;
    
    TABLE_NAME                     PARTITION_NAME                 SUBPARTITION_NAME                NUM_ROWS
    ------------------------------ ------------------------------ ------------------------------ ----------
    RANGE2                         P1                             P1SP1
    RANGE2                         P1                             P1SP2
    RANGE2                         P1                             P1SP3
    RANGE2                         P1                             P1SP4
    RANGE2                         P2                             P2SP1
    RANGE2                         P2                             P2SP2
    RANGE2                         P2                             P2SP3
    RANGE2                         P2                             P2SP4
    RANGE2                         P3                             P3SP1
    RANGE2                         P3                             P3SP2
    RANGE2                         P3                             P3SP3
    
    TABLE_NAME                     PARTITION_NAME                 SUBPARTITION_NAME                NUM_ROWS
    ------------------------------ ------------------------------ ------------------------------ ----------
    RANGE2                         P3                             P3SP4
    
    12 rows selected.
    
    SQL> --
    SQL> exec dbms_stats.gather_table_stats(ownname => user, tabname => 'RANGE2', granularity => 'SUBPARTITION');
    
    PL/SQL procedure successfully completed.
    
    SQL> select
      2  table_name,
      3  partition_name,
      4  subpartition_name,
      5  num_rows
      6  from user_tab_subpartitions
      7  where table_name='RANGE2'
      8  order by 1,2,3;
    
    TABLE_NAME                     PARTITION_NAME                 SUBPARTITION_NAME                NUM_ROWS
    ------------------------------ ------------------------------ ------------------------------ ----------
    RANGE2                         P1                             P1SP1                                  29
    RANGE2                         P1                             P1SP2                                  30
    RANGE2                         P1                             P1SP3                                  30
    RANGE2                         P1                             P1SP4                                  10
    RANGE2                         P2                             P2SP1                                   0
    RANGE2                         P2                             P2SP2                                   0
    RANGE2                         P2                             P2SP3                                   0
    RANGE2                         P2                             P2SP4                                 100
    RANGE2                         P3                             P3SP1                                   0
    RANGE2                         P3                             P3SP2                                   0
    RANGE2                         P3                             P3SP3                                   0
    
    TABLE_NAME                     PARTITION_NAME                 SUBPARTITION_NAME                NUM_ROWS
    ------------------------------ ------------------------------ ------------------------------ ----------
    RANGE2                         P3                             P3SP4                                 800
    
    12 rows selected.
    
  • Subpartition compresses with pctfree

    Hello

    How compress subpartition on exadata, by using "high motion" and pctfree 10 options?

    I used this statement, but I get only ORA-14160: this physical attribute may not be specified for a table subpartition.

    ALTER table table_name move subpartition subpartition_name PCTFREE 10 compress to request high;

    Published by: user837363 on 2012-11-12 05:14

    The document is on My Oracle Support

    https://support.Oracle.com/epmos/faces/UI/km/SearchDocDisplay.JSPX?ID=258597.1&type=document&DisplayIndex=1

    The short version is: you cannot specify physical attributes such as compression for an individual subpartition. You will have to do for the whole score (or even the entire table).

    Marc

  • Using PARTITION FOR / SUBPARTITION FOR the syntax to insert

    We try to use PARTITION syntax for (or, better, SUBPARTITION of syntax) to insert into a table subpartitioned.
    http://docs.Oracle.com/CD/E11882_01/server.112/e26088/sql_elements009.htm#i165979
    08:26:46 GM_CS_CDR@oradev02> select * from v$version;
    
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    PL/SQL Release 11.2.0.3.0 - Production
    CORE    11.2.0.3.0      Production
    TNS for Solaris: Version 11.2.0.3.0 - Production
    NLSRTL Version 11.2.0.3.0 - Production
    
    5 rows selected.
    This table is interval partitions DATA_ORIGIN_ID and list subpartitions on TABLE_NAME.

    First of all, an insert in base without specifying the partitions:
    08:10:05 GM_CS_CDR@oradev02> insert into key_ids2 (
    08:11:51   2  DATA_ORIGIN_ID         ,
    08:11:51   3  TABLE_NAME             ,
    08:11:51   4  DUR_UK                 ,
    08:11:51   5  DUR_UK_ID              )
    08:11:51   6  select
    08:11:51   7  12         ,
    08:11:51   8  TABLE_NAME             ,
    08:11:51   9  DUR_UK                 ,
    08:11:51  10  DUR_UK_ID              
    08:11:51  11  from key_ids where table_name = 'PART' 
    08:11:51  12  and rownum <= 10;
    
    10 rows created.
    Check SUBPARTITION to a SELECT statement syntax:
    08:19:43 GM_CS_CDR@oradev02> 
    08:26:45 GM_CS_CDR@oradev02> 
    08:26:45 GM_CS_CDR@oradev02> 
    08:26:45 GM_CS_CDR@oradev02> 
    08:26:45 GM_CS_CDR@oradev02> select count(*) from key_ids2 
    08:26:45   2  subpartition for(12,'PART');
    
      COUNT(*)
    ----------
            10
    
    1 row selected.
    But if we add a subpartition specification (to limit the locking to a single subpartition), we get a syntax error:
    08:14:57 GM_CS_CDR@oradev02> insert into key_ids2 subpartition for(12,'PART') (
    08:14:57   2  DATA_ORIGIN_ID         ,
    08:14:57   3  TABLE_NAME             ,
    08:14:57   4  DUR_UK                 ,
    08:14:57   5  DUR_UK_ID              )
    08:14:57   6  select
    08:14:57   7  14         ,
    08:14:57   8  TABLE_NAME             ,
    08:14:57   9  DUR_UK||'!'                 ,
    08:14:57  10  DUR_UK_ID              
    08:14:57  11  from key_ids 
    08:14:57  12  where table_name = 'PART' 
    08:14:57  13  and rownum <= 10;
    insert into key_ids2 subpartition for(12,'PART') (
                                         *
    ERROR at line 1:
    ORA-14173: illegal subpartition-extended table name syntax
    Specify the partition level did not work either:
    08:14:58 GM_CS_CDR@oradev02> insert into key_ids2 partition for(14) (
    08:15:23   2  DATA_ORIGIN_ID         ,
    08:15:23   3  TABLE_NAME             ,
    08:15:23   4  DUR_UK                 ,
    08:15:23   5  DUR_UK_ID              )
    08:15:23   6  select
    08:15:23   7  14         ,
    08:15:23   8  TABLE_NAME             ,
    08:15:23   9  DUR_UK||'!'                 ,
    08:15:23  10  DUR_UK_ID              
    08:15:23  11  from key_ids 
    08:15:23  12  where table_name = 'PART' 
    08:15:23  13  and rownum <= 10;
    insert into key_ids2 partition for(14) (
                                      *
    ERROR at line 1:
    ORA-14108: illegal partition-extended table name syntax
    But by specifying explicit partition and subpartition works:
    08:17:45 GM_CS_CDR@oradev02> insert into key_ids2 partition (SYS_P15127) (
    08:18:23   2  DATA_ORIGIN_ID         ,
    08:18:23   3  TABLE_NAME             ,
    08:18:23   4  DUR_UK                 ,
    08:18:23   5  DUR_UK_ID              )
    08:18:23   6  select
    08:18:23   7  12         ,
    08:18:23   8  TABLE_NAME             ,
    08:18:23   9  DUR_UK||'!'                 ,
    08:18:23  10  DUR_UK_ID              
    08:18:23  11  from key_ids 
    08:18:23  12  where table_name = 'PART' 
    08:18:23  13  and rownum <= 10;
    
    10 rows created.
    
    08:18:24 GM_CS_CDR@oradev02> insert into key_ids2 subpartition (SYS_SUBP15126) (
    08:19:42   2  DATA_ORIGIN_ID         ,
    08:19:42   3  TABLE_NAME             ,
    08:19:42   4  DUR_UK                 ,
    08:19:42   5  DUR_UK_ID              )
    08:19:42   6  select
    08:19:42   7  12         ,
    08:19:42   8  TABLE_NAME             ,
    08:19:42   9  DUR_UK||'!#'                 ,
    08:19:42  10  DUR_UK_ID              
    08:19:42  11  from key_ids 
    08:19:42  12  where table_name = 'PART' 
    08:19:42  13  and rownum <= 10;
    
    10 rows created.
    We have succeeded by using the syntax of PARTITION for tables partitioned, but not sous-partitionnee.

    Any ideas?

    Thank you
    Mike

    Support of Oracle reproduced this issue. The resolution was to ensure cursor_sharing is set to "EXACT", we happened to use "SIMILAR" in this case due to a migration of 10 g and 11 g.

    Please visit 1481564.1 for more information.

  • doubt in a table subpartitioning

    Hi gems... good evening...

    I have a table that was previously only range partitions.
    Now I changed it to the partitioning composite range-hash.

    There are 6 partition tablespaces namely TS_PART1, TS_PART2... TS_PART 6.
    The default tablespace of the schema is TS_PROD.

    The table had following structure previously:


    create the table ORDER_BOOK
    (
    CUST_ID NUMBER (10),
    PROFILE_ID NUMBER (10),
    PRODUCT_ID NUMBER (10),
    SUB_PROFILE_ID VARCHAR2 (25).
    DATE OF CASHFLOW_DATE,
    NUMBER (24.6) OF EARNINGS.
    constraint ORDER_BOOK_PK primary key (CUST_ID, PROFILE_ID, PRODUCT_ID, SUB_PROFILE_ID, CASHFLOW_DATE)
    )
    partition by range (CASHFLOW_DATE)
    (
    partition values ORDER_BOOK_PART1 less (TO_DATE (January 1, 2003 ',' DD-MM-YYYY "")) tablespace TS_PART1;
    partition values ORDER_BOOK_PART2 less (TO_DATE (January 1, 2006 ',' DD-MM-YYYY "")) tablespace TS_PART2;
    partition values ORDER_BOOK_PART3 less (TO_DATE (January 1, 2009 ',' DD-MM-YYYY "")) tablespace TS_PART3;
    partition values ORDER_BOOK_PART4 less (TO_DATE (1 January 2012 ',' DD-MM-YYYY "")) tablespace TS_PART4;
    partition values ORDER_BOOK_PART5 less (TO_DATE (1 January 2015 ',' DD-MM-YYYY "")) tablespace TS_PART5;
    partition values ORDER_BOOK_PART6 less (TO_DATE (1 January 2018 ',' DD-MM-YYYY "")) tablespace TS_PART6
    )
    ;
    create index ORDER_BOOK_IDX on ORDER_BOOK (PRODUCT_ID, CASHFLOW_DATE);





    Now, I did the following steps to change the existing partitions to the new partitions composite range-hash:

    Start
    DBMS_REDEFINITION. CAN_REDEF_TABLE
    (uname = > 'DEMO_TEST',)
    tNom = > "ORDER_BOOK"
    options_flag = > DBMS_REDEFINITION. CONS_USE_PK);
    end;
    /


    create the table INTERIM_ORDER_BOOK
    (
    CUST_ID NUMBER (10),
    PROFILE_ID NUMBER (10),
    PRODUCT_ID NUMBER (10),
    SUB_PROFILE_ID VARCHAR2 (25).
    DATE OF CASHFLOW_DATE,
    NUMBER (24.6) OF EARNINGS.
    constraint INTERIM_ORDER_BOOK_PK primary key (CUST_ID, PROFILE_ID, PRODUCT_ID, SUB_PROFILE_ID, CASHFLOW_DATE)
    )
    partition of range (CASHFLOW_DATE)
    SUBPARTITION by hash (CUST_ID)
    model SUBPARTITION
    (
    SUBPARTITION SP1 tablespace TS_PART1,
    SUBPARTITION SP2 tablespace TS_PART2,
    SUBPARTITION SP3 tablespace TS_PART3,
    SUBPARTITION SP4 tablespace TS_PART4,
    SUBPARTITION SP5 tablespace TS_PART5,
    SUBPARTITION SP6 tablespace TS_PART6
    )
    (values less than P1 (to_date('01-01-2003','DD-MM-YYYY')) partition,
    values of partition P2 lower (to_date('01-01-2006','DD-MM-YYYY')),
    values of partition P3 lower (to_date('01-01-2009','DD-MM-YYYY')),
    partition P4 values less than (to_date('01-01-2012','DD-MM-YYYY')),
    values for partition P5 lower (to_date('01-01-2015','DD-MM-YYYY')),
    values of partition P6 lower (to_date('01-01-2018','DD-MM-YYYY')))
    allow the movement of the line;


    Start
    dbms_redifinition.start_redef_table
    (uname = > 'DEMO_TEST',)
    orig_table = > 'ORDER_BOOK ',.
    int_table = > 'INTERIM_ORDER_BOOK ',.
    options_flag = > DBMS_REDEFINITION. CONS_USE_PK);
    end;
    /


    Start
    DBMS_REDEFINITION.finish_redef_table
    (uname = > 'DEMO_TEST',)
    orig_table = > 'ORDER_BOOK ',.
    int_table = > 'INTERIM_ORDER_BOOK');
    end;
    /




    After I did the index with the LOCAL clause is to say local indexes.

    But the problem is that... at the beginning when there is only the range partitioning, then the data will tablespaces corresponding score.

    But after editing the table, fill the array results in consumption of space in partition as well as the default tablespace storage.
    I checked the size of the storage space. Since I came to know about it.

    The output of the USER_TAB_SUBPARTITIONS is correct... each subparts are in the corresponding storage spaces.

    But the primary partitions (USER_TAB_PARTITION) are in the default tablespace.



    Please help me... thanks in advance...

    Published by: user12780416 on April 13, 2012 07:46

    >
    But the primary partitions (USER_TAB_PARTITION) are in the default tablespace.
    >
    Yes - so why is it a surprise?

    You have created a new table and storage for partitions has not specified then the default tablespace has been used. You did not specify tablespaces for subparts to each of them uses the specified tablespace.

    Don't you see the difference between the original

    partition ORDER_BOOK_PART1 values less than (TO_DATE('01-01-2003', 'DD-MM-YYYY')) tablespace TS_PART1,
    

    and the new

    (partition P1 values less than (to_date('01-01-2003','DD-MM-YYYY')),
    
  • SUBPARTITION templates

    How can I copy templates subpartition of a table to another table in the physical model of OSDM?

    I need to create a relatively large number of subpartition templates and I have to do for several tables. They have all of the similar subpartitions.
    Can I create templates for subpartition to a table and copy and paste those to the other tables?
    Otherwise, there is no alternative workaround to avoid creating for each table subpartition templates?

    I use v3.1EA3

    Hello

    The expression of the interval you specified,

    1)
    (VALUES LESS THAN (1) PARTITION

    is not a valid interval expression.

    You must set the Expression of the interval 1.

    If you want to generate the PARTITION VALUES LESS THAN clause (1), you should add a Partition for the Table object in the physical model and set its property to list the value to 1.

    David

    Published by: David last on 19 January 2012 10:58

  • SUBPARTITION model COMPRESS NOCOMPRESS parameter

    Hello

    I am trying to create a table with subpartitions by already partitioned by list, list

    I want to configure some of my subparts are compressed and the rest nocompressed.
    but I could not find how to specify

    I could specify whether the partition at all is compressed or not, but not a subpartition level,.

    Thanks in advance

    Hello

    I'm afraid that it is not possible to specify level subpartition for the moment.

    I connected an improvement on that request.

    Please report this problem,
    David

Maybe you are looking for

  • Installed El Capitan, Mac Mail still doesn't work do not!

    Its been 2 weeks now since I posted about this problem and it has not been a solution or condition that works. I'm starting a new post because the previous is loaded with pages of log files (which have not been answered to) which are simply to spoil

  • professional XP System Restore does not

    My system restore doesn't work on my xp professional and I think that there are errors in registry. Can anyone help please?

  • Oracle apex selection lov 5.0

    I created a form in the apex.A region for the address field where I fill in all the details of the address and insert them into the table.So, Created a LOV in this form region.Values LOV is static.sayvalue: HomeReturn type: 1Office of the value:retur

  • How can I darken text in acrobat reader

    How can I darken text in acrobat reader?  It is rendered to weakly.

  • How adjustment layers After Effects must be ordered?

    after effect error: crash by invoking the plugin effect (Insert here)After Effects crashing on me.  I use FIVE adjustment layers of color and the effects in TWO time correction.y at - it a particular order I should wear diapers?  is it important?tryi