Unable to partition table on referenced columns?

Is there any way to partition a table on a FK that is referencing another table in the table definition?
Create table test (
ID number(12) primary key,
FK referencing other_test,
c1 varchar2(50)
Partition by List(FK) (
Partition P1 values (1),
Partition P2 values (2),
Partition P3 values (3)
);

Is this better? Geez, I think you would get the point from the DDL I posted above.
Create table test (
ID number(12) primary key,
FK1 referencing other_test,
c1 varchar2(50)
Partition by List(FK1) (
Partition P1 values (1),
Partition P2 values (2),
Partition P3 values (3)
Error at Command Line:7 Column:22
Error report:
SQL Error: ORA-00932: inconsistent datatypes: expected - got NUMBER
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:   
*Action:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

Similar Messages

  • Oracle 11.2 - Perform parallel DML on a non partitioned table with LOB column

    Hi,
    Since I wanted to demonstrate new Oracle 12c enhancements on SecureFiles, I tried to use PDML statements on a non partitioned table with LOB column, in both Oracle 11g and Oracle 12c releases. The Oracle 11.2 SecureFiles and Large Objects Developer's Guide of January 2013 clearly says:
    Parallel execution of the following DML operations on tables with LOB columns is supported. These operations run in parallel execution mode only when performed on a partitioned table. DML statements on non-partitioned tables with LOB columns continue to execute in serial execution mode.
    INSERT AS SELECT
    CREATE TABLE AS SELECT
    DELETE
    UPDATE
    MERGE (conditional UPDATE and INSERT)
    Multi-table INSERT
    So I created and populated a simple table with a BLOB column:
    SQL> CREATE TABLE T1 (A BLOB);
    Table created.
    Then, I tried to see the execution plan of a parallel DELETE:
    SQL> EXPLAIN PLAN FOR
      2  delete /*+parallel (t1,8) */ from t1;
    Explained.
    SQL> select * from table(dbms_xplan.display);
    PLAN_TABLE_OUTPUT
    Plan hash value: 3718066193
    | Id  | Operation             | Name     | Rows  | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
    |   0 | DELETE STATEMENT      |          |  2048 |     2   (0)| 00:00:01 |        |      |            |
    |   1 |  DELETE               | T1       |       |            |          |        |      |            |
    |   2 |   PX COORDINATOR      |          |       |            |          |        |      |            |
    |   3 |    PX SEND QC (RANDOM)| :TQ10000 |  2048 |     2   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
    |   4 |     PX BLOCK ITERATOR |          |  2048 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |            |
    |   5 |      TABLE ACCESS FULL| T1       |  2048 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |            |
    PLAN_TABLE_OUTPUT
    Note
       - dynamic sampling used for this statement (level=2)
    And I finished by executing the statement.
    SQL> commit;
    Commit complete.
    SQL> alter session enable parallel dml;
    Session altered.
    SQL> delete /*+parallel (t1,8) */ from t1;
    2048 rows deleted.
    As we can see, the statement has been run as parallel:
    SQL> select * from v$pq_sesstat;
    STATISTIC                      LAST_QUERY SESSION_TOTAL
    Queries Parallelized                    1             1
    DML Parallelized                        0             0
    DDL Parallelized                        0             0
    DFO Trees                               1             1
    Server Threads                          5             0
    Allocation Height                       5             0
    Allocation Width                        1             0
    Local Msgs Sent                        55            55
    Distr Msgs Sent                         0             0
    Local Msgs Recv'd                      55            55
    Distr Msgs Recv'd                       0             0
    11 rows selected.
    Is it normal ? It is not supposed to be supported on Oracle 11g with non-partitioned table containing LOB column....
    Thank you for your help.
    Michael

    Yes I did it. I tried with force parallel dml, and that is the results on my 12c DB, with the non partitionned and SecureFiles LOB column.
    SQL> explain plan for delete from t1;
    Explained.
    | Id  | Operation             | Name     | Rows  | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
    |   0 | DELETE STATEMENT      |          |     4 |     2   (0)| 00:00:01 |        |      |            |
    |   1 |  DELETE               | T1       |       |            |          |        |      |            |
    |   2 |   PX COORDINATOR      |          |       |            |          |        |      |            |
    |   3 |    PX SEND QC (RANDOM)| :TQ10000 |     4 |     2   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
    |   4 |     PX BLOCK ITERATOR |          |     4 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |            |
    |   5 |      TABLE ACCESS FULL| T1       |     4 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |            |
    The DELETE is not performed in Parallel.
    I tried with another statement :
    SQL> explain plan for
    2        insert into t1 select * from t1;
    Here are the results:
    11g
    | Id  | Operation                | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
    |   0 | INSERT STATEMENT         |          |     4 |  8008 |     2   (0)| 00:00:01 |        |      |            |
    |   1 |  LOAD TABLE CONVENTIONAL | T1       |       |       |            |          |        |      |            |
    |   2 |   PX COORDINATOR         |          |       |       |            |          |        |      |            |
    |   3 |    PX SEND QC (RANDOM)   | :TQ10000 |     4 |  8008 |     2   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
    |   4 |     PX BLOCK ITERATOR    |          |     4 |  8008 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |            |
    |   5 |      TABLE ACCESS FULL   | T1       |     4 |  8008 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |            |
    12c
    | Id  | Operation                          | Name     | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
    |   0 | INSERT STATEMENT                   |          |     4 |  8008 |     2   (0)| 00:00:01 |        |      |            |
    |   1 |  PX COORDINATOR                    |          |       |       |            |          |        |      |            |
    |   2 |   PX SEND QC (RANDOM)              | :TQ10000 |     4 |  8008 |     2   (0)| 00:00:01 |  Q1,00 | P->S | QC (RAND)  |
    |   3 |    LOAD AS SELECT                  | T1       |       |       |            |          |  Q1,00 | PCWP |            |
    |   4 |     OPTIMIZER STATISTICS GATHERING |          |     4 |  8008 |     2   (0)| 00:00:01 |  Q1,00 | PCWP |            |
    |   5 |      PX BLOCK ITERATOR             |          |     4 |  8008 |     2   (0)| 00:00:01 |  Q1,00 | PCWC |            |
    It seems that the DELETE statement has problems but not the INSERT AS SELECT !

  • Cannot alter partitioned table with spatial column in Oracle 11.2.0.2.0

    Hello,
    I possibly discovered a bug in Oracle 11.2.0.2.0
    This script works fine with Oracle *11.2.0.1.0*:
    create table GEO_TABLE (
    ID NUMBER(19) not null,
    PART_NAME VARCHAR2(50) not null,
    GEO_POS MDSYS.SDO_GEOMETRY,
    constraint PK_GEO_TABLE primary key (ID)
    SEGMENT CREATION IMMEDIATE partition by list ( PART_NAME ) (partition P_DEFAULT values (DEFAULT)) enable row movement;
    ALTER TABLE GEO_TABLE ADD (COLUMN2 NUMBER(8) DEFAULT 0 NOT NULL);
    With Oracle *11.2.0.2.0* (on SLES 11, 64bit) i will get this error message on the alter table statement:
    SQL-Fehler: ORA-00600: Interner Fehlercode, Argumente: [kkpoffoc], [], [], [], [], [], [], [], [], [], [], []
    00600. 00000 - "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
    *Cause:    This is the generic internal error number for Oracle program
    exceptions.     This indicates that a process has encountered an
    exceptional condition.
    *Action:   Report as a bug - the first argument is the internal error number
    Can anyone reproduce this behaviour?
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE     11.2.0.2.0     Production
    TNS for Linux: Version 11.2.0.2.0 - Production
    NLSRTL Version 11.2.0.2.0 - Production
    Edited by: user7425061 on 19.11.2010 12:04

    Metalink does not have any references for this error - please raise SR with Oracle support.

  • How to manage large partitioned table

    Dear all,
    we have a large partitioned table with 126 columns and 380G not indexed can any one tell me how to manage it because now the queries are taking more that 5 days
    looking forward for your reply
    thank you

    Hi,
    You can store partitioned tables in separate tablespaces. This does the following:
    Reduce the possibility of data corruption in multiple partitions
    Back up and recover each partition independently
    Control the mapping of partitions to disk drives (important for balancing I/O load)
    Improve manageability, availability, and performance
    Remeber as the doc states :
    The maximum number of partitions or subpartitions that a table may have is 1024K-1.
    Lastly you can use SQL*Loader and the import and export utilities to load or unload data stored in partitioned tables. These utilities are all partition and subpartition aware.
    Document Reference:
    http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14231/partiti.htm
    Adith

  • Create partition table upto level 3

    Hi All,
    I want to create partition table using 3 columns. could you please tell me is that possible to do in oracle 11G. if can please tell me the way to create
    PARTITION BY LIST (Acct_type)
    SUBPARTITION BY LIST (PERIOD)
    and needs to partition this using another column.( account_source)
    please help me.
    Regards,
    krish

    Hello,
    3 levels of partition are not possible.
    But perhaps you can combine 2 levels as follows:
    With Oracle 11g you can use a virtual column:
    CREATE TABLE F_ACCOUNT_PART
    acc_type varchar2(100),
    acc_source varchar2(100),
    period date,
    acc_type_source varchar2(201) as (acc_type||'_'||acc_source) )
    PARTITION BY LIST (acc_type_source)
    PARTITION FA_AA_ACC1 VALUES ('AA-ACC1') TABLESPACE USERS,
    PARTITION FA_BB_ACC1 VALUES ('BB-ACC1') TABLESPACE USERS,
    PARTITION FA_CC_ACC1 VALUES ('CC-ACC1') TABLESPACE USERS,
    PARTITION FA_DD_ACC1 VALUES ('DD-ACC1') TABLESPACE USERS,
    PARTITION FA_AA_ACC2 VALUES ('AA-ACC2') TABLESPACE USERS,
    PARTITION FA_BB_ACC2 VALUES ('BB-ACC2') TABLESPACE USERS,
    PARTITION FA_CC_ACC2 VALUES ('CC-ACC2') TABLESPACE USERS,
    PARTITION FA_DD_ACC2 VALUES ('DD-ACC2') TABLESPACE USERS,
    PARTITION all_other VALUES (DEFAULT) TABLESPACE USERS
    )For versions prior to 11g you have to build a new column acc_type_source and fill the values cancatenated.
    Maik

  • How can I add a new column in compress partition table.

    I have a compress partition table when I add a new column in that table it give me an error "ORA-22856: CANNOT ADD COLUMNS TO OBJECT TABLES". I had cretaed a table in this clause. How can I add a new column in compress partition table.
    CREATE TABLE Employee
    Empno Number,
    Tr_Date Date
    COMPRESS PARTITION BY RANGE (Tr_Date)
    PARTITION FIRST Values LESS THAN (To_Date('01-JUL-2006','DD-MON-YYYY')),
    PARTITION JUNK Values LESS THAN (MAXVALUE));
    Note :
    When I create table with this clause it will allow me to add a column.
    CREATE TABLE Employee
    Empno Number,
    Tr_Date Date
    PARTITION BY RANGE (Tr_Date)
    PARTITION FIRST Values LESS THAN (To_Date('01-JUL-2006','DD-MON-YYYY')),
    PARTITION JUNK Values LESS THAN (MAXVALUE));
    But for this I have to drop and recreate the table and I dont want this becaue my table is in online state i cannot take a risk. Please give me best solution.

    Hi Fahed,
    I guess, you are using Oracle 9i Database Release 9.2.0.2 and the Table which you need to alter is in OLTP environment where data is usually inserted using regular inserts. As a result, these tables generally do not get much benefit from using table compression. Table compression works best on read-only tables that are loaded once but read many times. Tables used in data warehousing applications, for example, are great candidates for table compression.
    Reference : http://www.oracle.com/technology/oramag/oracle/04-mar/o24tech_data.html
    Topic : When to Use Table Compression
    Bug
    Reference : http://dba.ipbhost.com/lofiversion/index.php/t147.html
    BUG:<2421054>
    Affects: RDBMS (9-A0)
    NB: FIXED
    Abstract: ENH: Allow ALTER TABLE to ADD/DROP columns for tables using COMPRESS feature
    Details:
    This is an enhancement to allow "ALTER TABLE" to ADD/DROP
    columns for tables using the COMPRESS feature.
    In 9i errors are reported for ADD/DROP but the text may
    be misleading:
    eg:
    ADD column fails with "ORA-22856: cannot add columns to object tables"
    DROP column fails with "ORA-12996: cannot drop system-generated virtual column"
    Note that a table which was previously marked as compress which has
    now been altered to NOCOMPRESS also signals such errors as the
    underlying table could still contain COMPRESS format datablocks.
    As of 10i ADD/SET UNUSED is allowed provided the ADD has no default value.
    Best Regards,
    Muhammad Waseem Haroon
    [email protected]

  • How to add new column in partition table

    Hi,
    In Oracle 10g Database, I have one table (X) with list partition . I have added one new column to "X" by "Alter Table" command. Please advise whether any other command needs to be executed since it is a partition table .
    The "X" table is used for partition swapping with another table (Y). I have added the same column also in table "Y". Will there be any issue while swapping the partion with the following command
    alter table X exchange partition partition_name with table Y
    Version Details :
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 OS
    Solaris 5.10
    Thanks in advance

    you would have to explicitly put that into the create table as select - the partition details.
    ops$tkyte%ORA10GR2> create table t1
    2 PARTITION BY RANGE (dt)
    3 (
    4 PARTITION part1 VALUES LESS THAN (to_date('13-mar-2003','dd-mon-yyyy')) ,
    5 PARTITION part2 VALUES LESS THAN (to_date('14-mar-2003','dd-mon-yyyy')) ,
    6 PARTITION junk VALUES LESS THAN (MAXVALUE)
    7 )
    8 COMPRESS
    9 as
    10 select * from t;
    Table created.
    Source:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:69076630635645
    Hth
    Girish Sharma

  • How to find the partition column in a partitioned table

    Hi,
    I have a partition table and I need to find out what column was used to partition the table. Range partition.
    Thanks,
    Maria Sanchez

    select *
    from dba_part_key_columns

  • Unable to wipe ZFS partition table from the disk

    I used an SD card as part of a zfs zpool made of three SD cards, without partition table. ZFS was managing the entire devices, not just partitions.
    I subsequently retired this zpool but did not run “zpool destroy”. This worked for two of the cards, but it seems as if one of the SD cards just can’t shake the zfs_member marker, no matter what I do.
    So far I tried multiple times, on several different machines (including two without ZOL installed, so zfs cache file is not an issue here):
    1. dd the entire device with zeros. Four times.
    2. zpool labelclear -f /dev/sdc
    3. create new msdos partition table in gparted and fdisk
    4.
    $ mkfs.btrfs -f /dev/sdc
    $ mount /dev/sdc /mnt/usb
    mount: unknown filesystem type 'zfs_member'
    Unable to wipe ZFS partition table from the disk
    5. Windows format and Partition Minitools windows equivalent of gparted.
    As you can see, none of those methods wrote over the zfs data. It remains intact and invulnerable to anything I tried.
    I am out of ideas. It looks like google is out of ideas, too.

    Yeah, somehow while writing the first post I missed that wipefs also does absolutely nothing.
    # wipefs /dev/sdc
    offset type
    0x23000 zfs_member [raid]
    LABEL: SD
    UUID: 9662645799256520897
    # wipefs /dev/sdc -o 0x23000
    /dev/sdc: 8 bytes were erased at offset 0x00023000 (zfs_member): 0c b1 ba 00 00 00 00 00
    # wipefs /dev/sdc
    offset type
    0x23000 zfs_member [raid]
    LABEL: SD
    UUID: 9662645799256520897

  • How to get view's information about referenced columns in tables

    Hello all,
    I was searching for DBA view in Oracle DB that shows info about view. Especially, I want to find information for every column in a view - from which table is that column and what is its original column name. Is that possible at all?
    Thanks in advance!

    Hi Ivansev,
    How about this?
    select dbms_metadata.get_ddl('VIEW',<view_name>,<owner_of_view_default_current>) from dual; Example:
    SQL> set long 4000
    SQL> select  dbms_metadata.get_ddl('VIEW','V1','USER1') from dual;
    DBMS_METADATA.GET_DDL('VIEW','V1','USER1')
      CREATE OR REPLACE FORCE VIEW "USER1"."V1" ("EMPN") AS
      select ename empn from scott.emp
    SQL>

  • Unable to import table or columns in OBIEE 11G RPD

    Hi All,
    We are unable to import table into the RPD using OCI 10G/11G to import the table then the import box open but we are unable to see the tables below the schema name. When we use ODBC 3.5 and created a DSN for the database then we are able to see all the tables and import them. But the problem here is that when we are using window server 7 64 bit to install client and then importing the table ODBC is not working fine as well.
    Please note that we are using OBIEE 11G which is installed on unix box and we connect to RPD using client installed on windows server.
    Appreciate all the help in advance.
    Thanks,
    Mohit

    Hi Sayak,
    This means we need to installed Oracle client to resolve this problem. Can you please share if you have some knowledge regarding the same.
    Thanks,
    Mohit

  • Unable to Create Partitioned Table

    Hi All,
    I was trying to create a partitioned table using following
    Create table customers (custcode number(5),
    Name varchar2(20),
    Addr varchar2(10),
    City varchar2(20),
    Bal number(10,2))
    Partition by list (city),
    Partition north_India values (‘DELHI’,’CHANDIGARH’),
    Partition east_India values (‘KOLKOTA’,’PATNA’),
    Partition south_India values (‘HYDERABAD’,’BANGALORE’,’CHENNAI’),
    Partition west India values (‘BOMBAY’,’GOA’);
    It is throwing me an error
    ORA-00922: missing or invalid option
    Will you please tell me what is wrong with this query? Is it possible to create partitioned table using select statement (create table as select... Partition by...)?
    Regards
    ~Pravin

    Pravin
    Will you please tell me what is wrong with this query?I see 4 errors in the syntax. Therefore, I strongly suggest you to have a lock to this:
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm#i2146309
    In addition, have a look to the error message. If I run your script in SQL*Plus it clearly shows where the problem is. E.g.:
    SQL> Create table customers (custcode number(5),
      2  Name varchar2(20),
      3  Addr varchar2(10),
      4  City varchar2(20),
      5  Bal number(10,2))
      6  Partition by list (city),
      7  Partition north_India values (‘DELHI’,’CHANDIGARH’),
      8  Partition east_India values (‘KOLKOTA’,’PATNA’),
      9  Partition south_India values (‘HYDERABAD’,’BANGALORE’,’CHENNAI’),
    10  Partition west India values (‘BOMBAY’,’GOA’);
    Partition by list (city),
    ERROR at line 6:
    ORA-00922: missing or invalid option
    Is it possible to create partitioned table using select statement?Yes. With the usual syntax.
    HTH
    Chris Antognini
    Author of Troubleshooting Oracle Performance, Apress 2008 (http://top.antognini.ch)

  • Partition Pruning on Interval Range Partitioned Table not happening when SYSDATE used in Where Clause

    We have tables that are interval range partitioned on a DATE column, with a partition for each day - all very standard and straight out of Oracle doc.
    A 3rd party application queries the tables to find number of rows based on date range that is on the column used for the partition key.
    This application uses date range specified relative to current date - i.e. for last two days would be "..startdate > SYSDATE -2 " - but partition pruning does not take place and the explain plan shows that every partition is included.
    By presenting the query using the date in a variable partition pruning does table place, and query obviously performs much better.
    DB is 11.2.0.3 on RHEL6, and default parameters set - i.e. nothing changed that would influence optimizer behavior to something unusual.
    I can't work out why this would be so. It very easy to reproduce with simple test case below.
    I'd be very interested to hear any thoughts on why it is this way and whether anything can be done to permit the partition pruning to work with a query including SYSDATE as it would be difficult to get the application code changed.
    Furthermore to make a case to change the code I would need an explanation of why querying using SYSDATE is not good practice, and I don't know of any such information.
    1) Create simple partitioned table
    CREATETABLE part_test
       (id                      NUMBER NOT NULL,
        starttime               DATE NOT NULL,
        CONSTRAINT pk_part_test PRIMARY KEY (id))
    PARTITION BY RANGE (starttime) INTERVAL (NUMTODSINTERVAL(1,'day')) (PARTITION p0 VALUES LESS THAN (TO_DATE('01-01-2013','DD-MM-YYYY')));
    2) Populate table 1million rows spread between 10 partitions
    BEGIN
        FOR i IN 1..1000000
        LOOP
            INSERT INTO part_test (id, starttime) VALUES (i, SYSDATE - DBMS_RANDOM.value(low => 1, high => 10));
        END LOOP;
    END;
    EXEC dbms_stats.gather_table_stats('SUPER_CONF','PART_TEST');
    3) Query the Table for data from last 2 days using SYSDATE in clause
    EXPLAIN PLAN FOR
    SELECT  count(*)
    FROM    part_test
    WHERE   starttime >= SYSDATE - 2;
    | Id  | Operation                 | Name      | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    |   0 | SELECT STATEMENT          |           |     1 |     8 |  7895  (1)| 00:00:01 |       |       |
    |   1 |  SORT AGGREGATE           |           |     1 |     8 |            |          |       |       |
    |   2 |   PARTITION RANGE ITERATOR|           |   111K|   867K|  7895   (1)| 00:00:01 |   KEY |1048575|
    |*  3 |    TABLE ACCESS FULL      | PART_TEST |   111K|   867K|  7895   (1)| 00:00:01 |   KEY |1048575|
    Predicate Information (identified by operation id):
       3 - filter("STARTTIME">=SYSDATE@!-2)
    4) Now do the same query but with SYSDATE - 2 presented as a literal value.
    This query returns the same answer but very different cost.
    EXPLAIN PLAN FOR
    SELECT count(*)
    FROM part_test
    WHERE starttime >= (to_date('23122013:0950','DDMMYYYY:HH24MI'))-2;
    | Id  | Operation                 | Name      | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    |   0 | SELECT STATEMENT          |           |     1 |     8 |   131  (0)| 00:00:01 |       |       |
    |   1 |  SORT AGGREGATE           |           |     1 |     8 |            |          |       |       |
    |   2 |   PARTITION RANGE ITERATOR|           |   111K|   867K|   131   (0)| 00:00:01 |   356 |1048575|
    |*  3 |    TABLE ACCESS FULL      | PART_TEST |   111K|   867K|   131   (0)| 00:00:01 |   356 |1048575|
    Predicate Information (identified by operation id):
       3 - filter("STARTTIME">=TO_DATE(' 2013-12-21 09:50:00', 'syyyy-mm-dd hh24:mi:ss'))
    thanks in anticipation
    Jim

    As Jonathan has already pointed out there are situations where the CBO knows that partition pruning will occur but is unable to identify those partitions at parse time. The CBO will then use a dynamic pruning which means determine the partitions to eliminate dynamically at run time. This is why you see the KEY information instead of a known partition number. This is to occur mainly when you compare a function to your partition key i.e. where partition_key = function. And SYSDATE is a function. For the other bizarre PSTOP number (1048575) see this blog
    http://hourim.wordpress.com/2013/11/08/interval-partitioning-and-pstop-in-execution-plan/
    Best regards
    Mohamed Houri

  • Query regarding Partition table Explain plan

    Hello,
    We are amidst a tuning activity, wherein a large table has been partitioned for better administration. During testing, I was analyzing the explain plans for long running sql's and found a piece that I was unable to understand. The PSTART and PSTOP columns show ROWID as its value, which in normal partition pruning scenario be the Partition number or the KEY. I tried to look around for this issue but did not get enough information. Can anybody help me of what it means? Also, if there is a good explanation of the same, it will be extremely helpful.
    The snippet from explain plan looks like:
    | Id  | Operation                                | Name                          | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     | Pstart| Pstop |
    7 |        TABLE ACCESS BY GLOBAL INDEX ROWID| XXXXXXXXXXXXXXXXXXXX             | 43874 |  9083K|       |  1386   (1)| 00:00:17 | ROWID | ROWID |
    On another similar query it looks like:
    | Id  | Operation                             | Name                         | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     | Pstart| Pstop |
    |   6 |     TABLE ACCESS BY GLOBAL INDEX ROWID| XXXXXXXXXXXXXX               | 22455 |  4648K|       |   456   (1)| 00:00:06 |     9 |     9 |
    I have another query with regards to the Partition tables. Does it, require/benefit if, the Indexes to be in partitioned mode? I tried to read about it but did not get a conclusive evidence. I am trying to test it and post here the outcome, but if anybody has experience of working with it, it would be great to have some advice.
    Oracle Version:- 10.2.0.4
    Regards,
    Purvesh.

    Hi Purvesh.
    Great explanation and example on this this topic...
    Ask Tom &amp;quot;explain plan on range-partitioned table&amp;quot;
    Hope this help.

  • Local index vs global index in partitioned tables

    Hi,
    I want to know the differences between a global and a local index.
    I'm working with partitioned tables about 10 millons rows and 40 partitions.
    I know that when your table is partitioned and your index non-partitioned is possible that
    some database operations make your index unusable and you have tu rebuid it, for example
    when yo truncate a partition your global index results unusable, is there any other operation
    that make the global index unusable??
    I think that the advantage of a global index is that takes less space than a local and is easier to rebuild,
    and the advantage of a local index is that is more effective resolving a query isn't it???
    Any advice and help about local vs global index in partitioned tables will be greatly apreciatted.
    Thanks in advance

    here is the documentation -> http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14220/partconc.htm#sthref2570
    In general, you should use global indexes for OLTP applications and local indexes for data warehousing or DSS applications. Also, whenever possible, you should try to use local indexes because they are easier to manage. When deciding what kind of partitioned index to use, you should consider the following guidelines in order:
    1. If the table partitioning column is a subset of the index keys, use a local index. If this is the case, you are finished. If this is not the case, continue to guideline 2.
    2. If the index is unique, use a global index. If this is the case, you are finished. If this is not the case, continue to guideline 3.
    3. If your priority is manageability, use a local index. If this is the case, you are finished. If this is not the case, continue to guideline 4.
    4. If the application is an OLTP one and users need quick response times, use a global index. If the application is a DSS one and users are more interested in throughput, use a local index.
    Kind regards,
    Tonguç

Maybe you are looking for

  • Migration 10.1.2 - 10.1.3, error:: no ocijdbc10 in java.library.path

    Hi, I'm using Jdev 10.1.3, and my problem is the following one: In my connection definition, that ORACLE_JDBC_TYPE is oci8 and when i try to conenct to BD, it occurs: java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path I've Oracle Clien

  • Encore and Windows 7

    I have successfully moved my Premiere 1.5 over to my new Windows 7 system.  I now want to get a version of Encore.  Does anyone know which versions are compitable with Premiere 1.5 AND Windows 7? Thanks in advance...

  • Solution Manager 7.1 SP4: Session Timeout during SOLMAN_SETUP

    Hello Experts, We recently installed Solution Manager 7.1 SP4 on Linux/Oracle. We also completed the System Preparation and Basic Configuration part of the SOLMAN_SETUP wizard as well (which includes applying the Central Correction Note and other ste

  • OracleLite: Loading JDBC Driver

    At the code line: Class.forName("oracle.lite.poljdbc.POLJDBCDriver"); I get the "problem loading database driver" error. Any ideas anyone? Thanks.

  • Looking for programmer for Arch AIF GTK frontend GUI

    I am the English admin & web developer for the Maryan Linux project. Let me just say what it is so you don't have to go researching about it. Maryan Linux is a Linux distribution, based on Arch, using E17 as its DE. It is designed to be extra user fr