Lock tables during partition exchange

Hi,
I want to do the following thing:
there are 9 partitioned tables (set A) and 9 non partitioned (set B).
There is a continuous dataflow into set A.And there is also a dependency between the nine flows within each transaction into set A (there is no dependency between different transactions.).
What I want is to exchange the nine partitions of set A with set B. This because I want to have a performance boost instead of copying the data from A into B.
I need to lock the tables of set A to make sure there is NO insertion of data into one of the tables of set A to avoid loss of dependency and thus loss of data.
I tried several things: lock tables, run autonomous transaction in which the exchange takes place, commit and unlock. But no success.
Who can help me to solve my problem: to lock all nine tables of set A and make sure the dependency remains consistent and no data gets lost?
Thanks.
jurgen

Why you are bothering about LOCKing the table,
you can goahead and do the exchange the table,
since, its ongoing activity, exchanged partition will be there till you merge, drop it.
if you found some more rows after exchange, then you can insert same into that table, or make another table.
Thanks

Similar Messages

  • Bootcamp assistant locks up during partitioning

    I have tried running Boot Camp assistant twice now, and both times it has locked up during the partitioning process. After the first lock up I booted into the recovery disk and ran disk utility. I repaired the disk and repaired permissions on the disk to see if that would help. But it still locked up when it got to the partitioning part of Boot Camp assistant. I was wondering if any one had any advice on why this may be happening.

    You would be better suited posting in the BC forum, if you don't know of it, please click Boot Camp

  • Table with FK with no Index created will LOCK TABLE during DML ?

    Hi all,
    Know that always create index for FK on table as FK's value will 99.9% be use in Where query on table.
    Had seen info with regards to the above and had not been successfull trying to simulate the  above using:
      DROP TABLE "TABLE2";
      CREATE TABLE "TABLE2"
       (     "A2" VARCHAR2(10 BYTE),
          CONSTRAINT "PK_A2" PRIMARY KEY ("A2") ENABLE
    Insert into TABLE2 (A2) values ('AAA');
    Insert into TABLE2 (A2) values ('BBB');
    Insert into TABLE2 (A2) values ('CCC');
    DROP TABLE "TABLE1";
      CREATE TABLE "TABLE1"
       (     "A1" VARCHAR2(10 BYTE),
         "A2" VARCHAR2(10 BYTE),
         "A3" VARCHAR2(10 BYTE),
          CONSTRAINT "PK_A1" PRIMARY KEY ("A1"),
            CONSTRAINT "FK_A1_A2" FOREIGN KEY ("A2")
           REFERENCES "LSD"."TABLE2" ("A2") ENABLE
    Insert into TABLE1 (A1,A2,A3) values ('111','AAA','yyy');
    Insert into TABLE1 (A1,A2,A3) values ('222','BBB','ZZZ');
      When i UPDATE A3 in TABLE1 using '111' record in SQLPlus without COMMIT,
    I was able to UPDATE A3 using '222' in another SQLPlus session, so it does not seems like table is LOCK.
    Questions.
    1. Am using 10GR2, is the above not applicable to 10G ?
    2. Or had understand the above concept wrongly  ?
    Thanks In Advance
    Zack

    Hi Legatti,
    I was able to UPDATE A3 using '222' in another SQLPlus session, so it does not seems like table is LOCK.   Thought that when updating more than 1 record in TABLE1 will caused TABLE1 to be LOCK.
    Now, try to perform an update on the TABLE1 like below:    SQL>update table1 set A3='aaa' where A1=111;
    And open an another session and perform this SQL below    SQL>delete from table2 where A2='BBB'; -- now it's hangs
      Yes !!! Very interesting, it hangs until i do a COMMIT on the UPDATE
    and DELETE session shows ORA-02292 Integrity Constraint violated as child record found.
      Now, when i create a index for A2 on TABLE1, it DOES NOT HANG and shows ORA-2292 immediately.
      So, is this the result of having no index for FK column (A2) on TABLE1 and when doing DML ,
    before COMMIT, will result in TABLE2 to be hang upon doing DML on TABLE2 ?
    Thanks for the valuable lesson learned.
    Zack                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Boot Camp Assistant Locking Up During Partitioning

    I've rebuilt the drive using Diskwarrior (Drive Genius was suggested to defrag it in another thread, DW does the same thing) After rebuilding it, the program locked up still but at least it didn't leave the invisible partition I had to repair with Disk Utility.
    I've tried many different sizes, 100GBs, 80GB and 60GBs, all locked up at the same point
    I ran hardware test and got this error
    4SNS/1/40000000 : TCOD-101.750
    Googling the error code got no results, so I'm not sure if it's related or not
    Any other ideas before a full wipe? I really want to play Witcher 2 :<
    On that note, what qualifies as a bad hdd? I've had this computer for about a year, and a few months ago due to bootcamp not installing and the computer reporting errors Apple wiped my drive and it was fine.... for a few months and now I have issues again

    'nuke the drive
    punt
    you have to backup, reformat the entire drive, and restore.
    DW only builds a new directory, period.
    There are some hidden GPT and EFI partitions that also have to be free of bad blocks and healthy, but only way to fix those is rebuild the drive via reformat, or in Apple-ese, ERASE. As in "WDxxxxxx" (not "My Computer" volume.

  • Primary Key Causing Problem in Interval Partition Exchange

    DB : 11.2.0.2
    OS : AIX 6.1
    I am getting the problem while exchanging data with interval partitioned table. I have a interval partitioned table and a normal staging table having data to be uploaded.
    Following are the steps i am doing.
    SQL> CREATE TABLE DEMO_INTERVAL_DATA_LOAD (
                    ROLL_NUM        NUMBER(10),
                    CLASS_ID        NUMBER(2),
                    ADMISSION_DATE  DATE,
                    TOTAL_FEE       NUMBER(4),
                    COURSE_ID       NUMBER(4))
                    PARTITION BY RANGE (ADMISSION_DATE)
                    INTERVAL (NUMTOYMINTERVAL(3,'MONTH'))
                    ( PARTITION QUAT_1_2012 VALUES LESS THAN (TO_DATE('01-APR-2012','DD-MON-YYYY')),
                     PARTITION QUAT_2_2012 VALUES LESS THAN (TO_DATE('01-JUL-2012','DD-MON-YYYY')),
                     PARTITION QUAT_3_2012 VALUES LESS THAN (TO_DATE('01-OCT-2012','DD-MON-YYYY')),
                     PARTITION QUAT_4_2012 VALUES LESS THAN (TO_DATE('01-JAN-2013','DD-MON-YYYY')));
    Table created.
    SQL> ALTER TABLE DEMO_INTERVAL_DATA_LOAD ADD CONSTRAINT IDX_DEMO_ROLL PRIMARY KEY (ROLL_NUM);
    Table altered.
    SQL> SELECT TABLE_OWNER,
               TABLE_NAME,
               COMPOSITE,
               PARTITION_NAME,
           PARTITION_POSITION,
              TABLESPACE_NAME,
           LAST_ANALYZED
    FROM DBA_TAB_PARTITIONS
        WHERE TABLE_OWNER='SCOTT'
       AND TABLE_NAME='DEMO_INTERVAL_DATA_LOAD'
       ORDER BY PARTITION_POSITION;
    TABLE_OWNER                    TABLE_NAME                     COM PARTITION_NAME                 PARTITION_POSITION TABLESPACE_NAME                LAST_ANAL
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_1_2012                                     1 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_2_2012                                     2 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_3_2012                                     3 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_4_2012                                     4 USERS
    SQL> INSERT INTO DEMO_INTERVAL_DATA_LOAD VALUES (10,1,'12-MAR-2012',1000,90);
    1 row created.
    SQL> INSERT INTO DEMO_INTERVAL_DATA_LOAD VALUES (11,5,'01-JUN-2012',5000,80);
    1 row created.
    SQL> INSERT INTO DEMO_INTERVAL_DATA_LOAD VALUES (12,9,'12-SEP-2012',4000,20);
    1 row created.
    SQL> INSERT INTO DEMO_INTERVAL_DATA_LOAD VALUES (13,7,'29-DEC-2012',7000,10);
    1 row created.
    SQL> INSERT INTO DEMO_INTERVAL_DATA_LOAD VALUES (14,8,'21-JAN-2013',2000,50); ---- This row will create a new interval partition in table.
    1 row created.
    SQL> commit;
    SQL> SELECT TABLE_OWNER,
            TABLE_NAME,
            COMPOSITE,
            PARTITION_NAME,
            PARTITION_POSITION,
            TABLESPACE_NAME,
            LAST_ANALYZED
      FROM DBA_TAB_PARTITIONS
         WHERE TABLE_OWNER='SCOTT'
       AND TABLE_NAME='DEMO_INTERVAL_DATA_LOAD'
       ORDER BY PARTITION_POSITION;
    TABLE_OWNER                    TABLE_NAME                     COM PARTITION_NAME                 PARTITION_POSITION TABLESPACE_NAME                LAST_ANAL
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_1_2012                                     1 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_2_2012                                     2 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_3_2012                                     3 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_4_2012                                     4 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  SYS_P98                                         5 USERS  
    SYS_P98 partition is added to table automatically.
    SQL> CREATE TABLE DEMO_INTERVAL_DATA_LOAD_Y (
                    ROLL_NUM        NUMBER(10),
                    CLASS_ID        NUMBER(2),
                    ADMISSION_DATE  DATE,
                    TOTAL_FEE       NUMBER(4),
                    COURSE_ID       NUMBER(4));
    Table created.
    SQL> INSERT INTO DEMO_INTERVAL_DATA_LOAD_Y VALUES (30,3,'21-MAY-2013',2000,12);
    1 row created.
    SQL> commit;
    Commit complete.
    Since, i need a partition in DEMO_INTERVAL_DATA_LOAD table, which can be used in partition exchange, so i create a new partition as below:
    SQL> LOCK TABLE DEMO_INTERVAL_DATA_LOAD PARTITION FOR (TO_DATE('01-APR-2013','DD-MON-YYYY')) IN SHARE MODE;
    Table(s) Locked.
    SQL> SELECT TABLE_OWNER,
               TABLE_NAME,
               COMPOSITE,
               PARTITION_NAME,
               PARTITION_POSITION,
               TABLESPACE_NAME,
               LAST_ANALYZED
    FROM DBA_TAB_PARTITIONS
        WHERE TABLE_OWNER='SCOTT'
       AND TABLE_NAME='DEMO_INTERVAL_DATA_LOAD'
       ORDER BY PARTITION_POSITION;
    TABLE_OWNER                    TABLE_NAME                     COM PARTITION_NAME                 PARTITION_POSITION TABLESPACE_NAME                LAST_ANAL
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_1_2012                                     1 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_2_2012                                     2 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_3_2012                                     3 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  QUAT_4_2012                                     4 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  SYS_P98                                         5 USERS
    SCOTT                          DEMO_INTERVAL_DATA_LOAD        NO  SYS_P102                                        6 USERS
    SQL> ALTER TABLE DEMO_INTERVAL_DATA_LOAD
    EXCHANGE PARTITION SYS_P102
    WITH TABLE DEMO_INTERVAL_DATA_LOAD_Y
    INCLUDING INDEXES
    WITH VALIDATION;
    ALTER TABLE DEMO_INTERVAL_DATA_LOAD
    ERROR at line 1:
    ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITIONNow, if i disable/drop the primary key constraint, it works without any problem.
    SQL> alter table DEMO_INTERVAL_DATA_LOAD disable constraint IDX_DEMO_ROLL;
    Table altered.
    SQL> alter table DEMO_INTERVAL_DATA_LOAD drop constraint IDX_DEMO_ROLL;
    Table altered.
    SQL> ALTER TABLE DEMO_INTERVAL_DATA_LOAD
    EXCHANGE PARTITION SYS_P102
    WITH TABLE DEMO_INTERVAL_DATA_LOAD_Y
    INCLUDING INDEXES
    WITH VALIDATION;
    Table altered.
    SQL> select * from DEMO_INTERVAL_DATA_LOAD partition (SYS_P102);
      ROLL_NUM   CLASS_ID ADMISSION  TOTAL_FEE  COURSE_ID
            30          3 21-MAY-13       2000         12
    SQL> select * from DEMO_INTERVAL_DATA_LOAD_Y;
    no rows selectedPlease suggest.

    First, thanks for posting the code that lets us reproduce your test. That is essential for issues like this.
    Because the primary key is global you will not be able to use
    INCLUDING INDEXES
    WITH VALIDATION;And you will need to add the primary key to the temp table
    ALTER TABLE DEMO_INTERVAL_DATA_LOAD_Y ADD CONSTRAINT IDX_DEMO_ROLL_Y PRIMARY KEY (ROLL_NUM);The the exchange will work. You will need to rebuild the primary key after the exchange.

  • Partition Exchange during DMLs

    Hello,
    This question regarding Partition Exchange during DML operations on 10.2.0.3
    I have a table that's RANGE-LIST partitioned as follow. Syntaxt may not be perfact..
    CREATE TABLE P_TBL
    O_DATE DATE,
    DOW    NUMBER, -- This actually is TO_NUMBER(TO_CHAR(O_DATE,'D'))
    SALE_AMT NUMBER,
    PARTITION BY RANGE ( DOW)
    SUBPARTITION BY LIST ( STATE)
    PARTITION P01 VALUE LESS THAN ( 2)
    (SUBPARTITION P01_EAST VALUE ('EAST'),
      SUBPARTITION P01_WEST VALUE ('WEST'),
      SUBPARTITION P01_NORTH VALUE ('NORTH'),
      SUBPARTITION P01_SOUTH VALUE ('SOUTH')
    PARTITION P02 VALUE LESS THAN ( 3)
    (SUBPARTITION P02_EAST VALUE ('EAST'),
      SUBPARTITION P02_WEST VALUE ('WEST'),
      SUBPARTITION P02_NORTH VALUE ('NORTH'),
      SUBPARTITION P02_SOUTH VALUE ('SOUTH')
    PARTITION P07 VALUE LESS THAN ( 8)
    (SUBPARTITION P07_EAST VALUE ('EAST'),
      SUBPARTITION P07_WEST VALUE ('WEST'),
      SUBPARTITION P07_NORTH VALUE ('NORTH'),
      SUBPARTITION P07_SOUTH VALUE ('SOUTH')
    /Other table (NP_TBL_EAST ) is Non partioned table. with the same columns.
    CREATE TABLE NP_TBL_[EAST|WEST|SOUTH|NORTH]
    O_DATE DATE,
    DOW    NUMBER,
    SALE_AMT NUMBER,
    )Now I have 2 processes,
    Process 1:
    Continuously INSERT the daily-Data in the P_TBL. Assume it's currently inserting data only in Partition P02 (i.e. Monday Partition )
    INSERT INTO P_TBL
    (O_DATE, DOW,SALE_AMT..... )
    VALUES
    (:1,:2, :3.... )
    Process 2:
    Will swap the previous day's( i.e. Sunday's ) data for each region with Partition Exchange mechanism.
    ALTER TABLE P_TBL exchange subpartition P01_EAST with table NP_TBL_EAST;
    ALTER TABLE P_TBL exchange subpartition P01_NORTH with table NP_TBL_NORTH;
    Now questions:
    1) What kind of lock Process 1 & process 2 will aquire?
    2) Can any of these two processes have risk of failure due to locking?
    Thanks in advance for your help
    -Max

    Create a dummy partitioned table without constraints and, in a loop that will run for 5 minutes, continuously insert into the table.
    While that is running, in a separate session, exchange partitions.
    What happens?
    And yes I am returning to my instructor role intentionally.
    Please report back to the other students the results from your homework assignment. <g>

  • Ora 14098 Index mismatch for tables  in Alter Exchange Partition

    Hi All,
    I want to exchange data from retek schema to CONV schema. Both the table have same partition, but there is no data in CONV table.
    So I'm populating the data from retek of one particular partition into one staging table and then I'm doing exchanging partition with staging table to CONV table.
    I have created the same index and constraints for staging as there are in CONV table.
    But When I'm doing exchange partition I'm getting error Index mismatch.
    v_parition_name:='mar 2012'
    v_stmt := 'create table staging_tab_st_hist as ( select * from retek.abc_st_hist partition(' ||
    v_parition_name || ') )';
    execute immediate v_stmt;
    v_stmt := ' alter table conv.abc_st_hist exchange partition ' ||
    v_parition_name ||
    ' with table staging_tab_st_hist
    including indexes without validation';
    execute immediate v_stmt;

    Welcome to the forum!
    Whenever you post provide your 4 digit Oracle version (result of SELECT * FROM V$VERSION).
    >
    Hi All,
    I want to exchange data from retek schema to CONV schema. Both the table have same partition, but there is no data in CONV table.
    So I'm populating the data from retek of one particular partition into one staging table and then I'm doing exchanging partition with staging table to CONV table.
    I have created the same index and constraints for staging as there are in CONV table.
    But When I'm doing exchange partition I'm getting error Index mismatch.
    v_parition_name:='mar 2012'
    v_stmt := 'create table staging_tab_st_hist as ( select * from retek.abc_st_hist partition(' ||
    v_parition_name || ') )';
    execute immediate v_stmt;
    v_stmt := ' alter table conv.abc_st_hist exchange partition ' ||
    v_parition_name ||
    ' with table staging_tab_st_hist
    including indexes without validation';
    execute immediate v_stmt;
    >
    I don't see any index creation on the staging table. You said this
    >
    I have created the same index and constraints for staging as there are in CONV table.
    >
    But you didn't create the indexes. When you do the CTAS (create table as select) it only creates the table with the same structure; it doesn't create ANY indexes.
    Add the code to create the necessary indexes after you populate the staging table.

  • Problem in Direct Partition Exchange Loading(PEL)

    Hi all,
    I am facing a problem during execution of a OWB mapping. The map is using direct partition exchange loading. There are one source and one target table in the map. it is very simple.
    While the source and target are in the same schema there is no problem. But when they are in different schemas during execution a warning is given. That is:
    ResolveTableNameErrorRTV20006;BIA_RTL_INTERFACE"."SALE_SRC
    Here BIA_RTL_INTERFACE is source schema and SALE_SRC is source table.
    However the source record is going to the target table as required but the same record also exists in the same table after execution which is not desirable for direct PEL. So i think though the loading is done in target but it is not using the direct Partition Exchange Technique.
    Is there some kind of special privileage for Partition Exchange Loading when the source and target are in different schemas in the same database? Plase clarify this. Hope i can explain the problem. Waiting for reply.
    Thanks & Regards,
    Sumanta Das
    Kolkata

    The error means you are trying to swap a partition that still contains data in a configuration where OWB expects an empty partition. How did you set the "Replace existing data in Target Partition" configuration parameter?
    Also, for more details on PEL, review the 10.19 to 10.27 pages of the user manual.
    Regards:
    Igor

  • Explain plan changing after partition exchange

    I currently have a data warehouse where I use partition exchange to refresh the data. I'm finding that after a partition exchange of exactly the same data. explain plan changes.
    database 11.2.0.2
    To demonstrate what I'm doing I simplified the steps.
    first I gather stats on the table that will be exchanged and run explain plan
    exec dbms_stats.gather_table_stats( ownname=> 'IDW_TARGET', tabname=> 'PROGRAM_DIM' );
    Select
    FROM IDW_TARGET.ITD_MONTHLY_SUMMARY_FACT A,
    IDW_TARGET.GL_PERIOD_DIM B,
    IDW_TARGET.PROGRAM_DIM C,
    IDW_TARGET.RPT_ENTITY_DIM D
    WHERE ASST_SEC_CONCISE_NAME = 'abc'
    AND A.GL_PERIOD_KEY = B.KEY
    AND A.PROGRAM_KEY = C.KEY
    AND A.RPT_ENTITY_KEY = D.KEY
    AND B.PERIOD_YEAR >= 2006;
    ** uses FTS on fact table and runs in 20 seconds. **
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
    | 0 | SELECT STATEMENT | | 25M| 71G| 47105 (1)| 00:09:26 | | | | | |
    | 1 | PX COORDINATOR | | | | | | | | | | |
    | 2 | PX SEND QC (RANDOM) | :TQ10003 | 25M| 71G| 47105 (1)| 00:09:26 | | | Q1,03 | P->S | QC (RAND) |
    |* 3 | HASH JOIN | | 25M| 71G| 47105 (1)| 00:09:26 | | | Q1,03 | PCWP | |
    | 4 | BUFFER SORT | | | | | | | | Q1,03 | PCWC | |
    | 5 | PX RECEIVE | | 4551 | 1773K| 103 (0)| 00:00:02 | | | Q1,03 | PCWP | |
    | 6 | PX SEND BROADCAST | :TQ10000 | 4551 | 1773K| 103 (0)| 00:00:02 | | | | S->P | BROADCAST |
    | 7 | PARTITION RANGE SINGLE | | 4551 | 1773K| 103 (0)| 00:00:02 | 1 | 1 | | | |
    | 8 | TABLE ACCESS FULL | RPT_ENTITY_DIM | 4551 | 1773K| 103 (0)| 00:00:02 | 1 | 1 | | | |
    |* 9 | HASH JOIN | | 25M| 61G| 46999 (1)| 00:09:24 | | | Q1,03 | PCWP | |
    | 10 | BUFFER SORT | | | | | | | | Q1,03 | PCWC | |
    | 11 | PX RECEIVE | | 184 | 35696 | 5 (0)| 00:00:01 | | | Q1,03 | PCWP | |
    | 12 | PX SEND BROADCAST | :TQ10001 | 184 | 35696 | 5 (0)| 00:00:01 | | | | S->P | BROADCAST |
    | 13 | PARTITION RANGE SINGLE | | 184 | 35696 | 5 (0)| 00:00:01 | 1 | 1 | | | |
    |* 14 | TABLE ACCESS FULL | GL_PERIOD_DIM | 184 | 35696 | 5 (0)| 00:00:01 | 1 | 1 | | | |
    |* 15 | HASH JOIN | | 25M| 57G| 46992 (1)| 00:09:24 | | | Q1,03 | PCWP | |
    | 16 | BUFFER SORT | | | | | | | | Q1,03 | PCWC | |
    | 17 | PX RECEIVE | | 4085 | 6829K| 1334 (1)| 00:00:17 | | | Q1,03 | PCWP | |
    | 18 | PX SEND BROADCAST | :TQ10002 | 4085 | 6829K| 1334 (1)| 00:00:17 | | | | S->P | BROADCAST |
    | 19 | PARTITION RANGE SINGLE| | 4085 | 6829K| 1334 (1)| 00:00:17 | 1 | 1 | | | |
    |* 20 | TABLE ACCESS FULL | PROGRAM_DIM | 4085 | 6829K| 1334 (1)| 00:00:17 | 1 | 1 | | | |
    | 21 | PX BLOCK ITERATOR | | 71M| 45G| 45650 (1)| 00:09:08 | 1 | LAST | Q1,03 | PCWC | |
    | 22 | TABLE ACCESS FULL | ITD_MONTHLY_SUMMARY_FACT | 71M| 45G| 45650 (1)| 00:09:08 | 1 | 141 | Q1,03 | PCWP | |
    Predicate Information (identified by operation id):
    3 - access("A"."RPT_ENTITY_KEY"="D"."KEY")
    9 - access("A"."GL_PERIOD_KEY"="B"."KEY")
    14 - filter("B"."PERIOD_YEAR">=2006)
    15 - access("A"."PROGRAM_KEY"="C"."KEY")
    20 - filter("ASST_SEC_CONCISE_NAME"='abc'')
    drop table PELPROGRAMDIMALLDATA; -- Start fresh here and drop the partition that will be exchanged
    create table PELPROGRAMDIMALLDATA as select * from PROGRAM_DIM; -- going to use exact same data for partition exchange (only one parition)
    alter table PELPROGRAMDIMALLDATA add constraint CON_342 unique ("VALUE" ) using index ;
    alter table PELPROGRAMDIMALLDATA add constraint CON_343 primary key ("KEY" ) using index ;
    exec dbms_stats.gather_table_stats(ownname=>'IDW_TARGET', tabname=>'PELPROGRAMDIMALLDATA');
    alter table PROGRAM_DIM exchange partition ALL_DATA with table PELPROGRAMDIMALLDATA excluding indexes;
    ** rebuild indexes **
    ** explain plan for same statement uses nested loop**
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
    | 0 | SELECT STATEMENT | | 2637K| 7514M| 33428 (1)| 00:06:42 | | | | | |
    | 1 | PX COORDINATOR | | | | | | | | | | |
    | 2 | PX SEND QC (RANDOM) | :TQ10003 | 2637K| 7514M| 33428 (1)| 00:06:42 | | | Q1,03 | P->S | QC (RAND) |
    |* 3 | HASH JOIN | | 2637K| 7514M| 33428 (1)| 00:06:42 | | | Q1,03 | PCWP | |
    | 4 | BUFFER SORT | | | | | | | | Q1,03 | PCWC | |
    | 5 | PX RECEIVE | | 4551 | 1773K| 103 (0)| 00:00:02 | | | Q1,03 | PCWP | |
    | 6 | PX SEND BROADCAST | :TQ10000 | 4551 | 1773K| 103 (0)| 00:00:02 | | | | S->P | BROADCAST |
    | 7 | PARTITION RANGE SINGLE | | 4551 | 1773K| 103 (0)| 00:00:02 | 1 | 1 | | | |
    | 8 | TABLE ACCESS FULL | RPT_ENTITY_DIM | 4551 | 1773K| 103 (0)| 00:00:02 | 1 | 1 | | | |
    |* 9 | HASH JOIN | | 2637K| 6511M| 33324 (1)| 00:06:40 | | | Q1,03 | PCWP | |
    | 10 | BUFFER SORT | | | | | | | | Q1,03 | PCWC | |
    | 11 | PX RECEIVE | | 184 | 35696 | 5 (0)| 00:00:01 | | | Q1,03 | PCWP | |
    | 12 | PX SEND BROADCAST | :TQ10001 | 184 | 35696 | 5 (0)| 00:00:01 | | | | S->P | BROADCAST |
    | 13 | PARTITION RANGE SINGLE | | 184 | 35696 | 5 (0)| 00:00:01 | 1 | 1 | | | |
    |* 14 | TABLE ACCESS FULL | GL_PERIOD_DIM | 184 | 35696 | 5 (0)| 00:00:01 | 1 | 1 | | | |
    | 15 | NESTED LOOPS | | 2642K| 6035M| 33318 (1)| 00:06:40 | | | Q1,03 | PCWP | |
    | 16 | BUFFER SORT | | | | | | | | Q1,03 | PCWC | |
    | 17 | PX RECEIVE | | | | | | | | Q1,03 | PCWP | |
    | 18 | PX SEND ROUND-ROBIN | :TQ10002 | | | | | | | | S->P | RND-ROBIN |
    | 19 | PARTITION RANGE SINGLE | | 420 | 702K| 220 (0)| 00:00:03 | 1 | 1 | | | |
    | 20 | TABLE ACCESS BY LOCAL INDEX ROWID| PROGRAM_DIM | 420 | 702K| 220 (0)| 00:00:03 | 1 | 1 | | | |
    |* 21 | INDEX RANGE SCAN | PROGRAM_DIM_IX20 | 420 | | 3 (0)| 00:00:01 | 1 | 1 | | | |
    | 22 | PARTITION RANGE ALL | | 6299 | 4201K| 33318 (1)| 00:06:40 | 1 | 9 | Q1,03 | PCWP | |
    | 23 | PARTITION LIST ALL | | 6299 | 4201K| 33318 (1)| 00:06:40 | 1 | LAST | Q1,03 | PCWP | |
    | 24 | TABLE ACCESS BY LOCAL INDEX ROWID | ITD_MONTHLY_SUMMARY_FACT | 6299 | 4201K| 33318 (1)| 00:06:40 | 1 | 141 | Q1,03 | PCWP | |
    | 25 | BITMAP CONVERSION TO ROWIDS | | | | | | | | Q1,03 | PCWP | |
    |* 26 | BITMAP INDEX SINGLE VALUE | ITD_MONTHLY_SUMMARY_SK09 | | | | | 1 | 141 | Q1,03 | PCWP | |
    Predicate Information (identified by operation id):
    3 - access("A"."RPT_ENTITY_KEY"="D"."KEY")
    9 - access("A"."GL_PERIOD_KEY"="B"."KEY")
    14 - filter("B"."PERIOD_YEAR">=2006)
    21 - access("ASST_SEC_CONCISE_NAME"='abc')
    26 - access("A"."PROGRAM_KEY"="C"."KEY")
    exec dbms_stats.gather_table_stats( ownname=> 'IDW_TARGET', tabname=> 'PROGRAM_DIM' );
    ** explain plan for same statement uses full table scan**
    see first explain plan
    Since the stats were not gathered after the partition exchange I would imagine that they would still be used.
    Edited by: user12198207 on Feb 7, 2012 8:13 AM
    Edited by: user12198207 on Feb 7, 2012 9:47 AM

    Locking stats did not make any difference. Also, I deleted the stats at the global level leaving just partition stats and it continued to use the nested loop which takes 15+ minutes instead of 20 seconds with the FTS.
    In my original situation it listed the stats at the global level as stale after the partition exchange. But after I removed many of the steps and use just what's described in this posts.
    select * from dba_tab_statistics
    where table_name='PROGRAM_DIM';
    shows stale stats=no for both global and partition. Kind of unexpected. Further digging in shows that is just determined by a case statement.
    from dba_tab_statistics view ddl
    case
    when t.analyzetime is null then null
    when ((m.inserts + m.deletes + m.updates) >
    t.rowcnt *
    to_number(DBMS_STATS.GET_PREFS('STALE_PERCENT',
    u.name, o.name))/100 or
    bitand(m.flags,1) = 1) then 'YES'
    else 'NO'
    end

  • Partition exchange loading for specific subpartitions

    Hi All,
    Looking at an archive strategy - where we have to archive a specific dataset.
    Rather than a insert/delete routine - I was thinking of using partition exchange.
    The to-be archived table is interval range partitioned on date, with a list subpartition on country.
    It is for specific countries that I want to partition exchange.
        create table
        test_table
        (tbl_id number,
        country varchar2(2),
        sales_dt date,
        volume number)
        partition by range (sales_dt) interval (NUMTOYMINTERVAL(1,'Month'))
        subpartition by list (country)
        Subpartition template
        (subpartition p_ireland values ('IR'),
        subpartition p_france values ('FR'),
        subpartition p_other values (DEFAULT))
        (partition before_2008 values less than (to_date('01-JAN-2008','DD-MON-YYYY'))); The data loaded falls into the partitions and subpartitions correctly. All the partitions names are system generated.
    When I come to partition exchange for all the 'FR' subpartitions- I can't determine the logic.
    Using
        Alter table test_table
        exchange subpartition system_generated_name
        with table TEST_TABLE_ARCH;I can swap out a specific 'known' subpartition.
    I know you can use the 'for' logic with Oracle 11g but can't get the syntax to work.
    Any ideas?

    The error means you are trying to swap a partition that still contains data in a configuration where OWB expects an empty partition. How did you set the "Replace existing data in Target Partition" configuration parameter?
    Also, for more details on PEL, review the 10.19 to 10.27 pages of the user manual.
    Regards:
    Igor

  • Simulation in Bapi/FM for sales order is locking tables

    Hi
    We want to use bapi BAPI_SALESORDER_CHANGE or FM SD_SALESDOCUMENT_CHANGE to simulate the effect on prices of a sales order. We must do this during the printing of the sales order. This bapi/FM is locking the sales order tables during the simulation mode. As we are printing from the sales order, the sales order is already locked so we get the error: V1 042 Sales document xxx is currently being processed. Does anyone have a solution to avoid this lock or an alternative to simulate the price from a sales order?
    We need to use the simulation of the sales order to capture all manual changes in the sales order pricing.
    Kind Regards

    Hi,
    FM BAPI_SALESORDER_SIMULATE gives the same pricing data as  BAPI_SALESORDER_CHANGE. you do not need to change an existing document to get the pricing data. Just simulate the creation of a new order.. th prices should be the same as long as you send the same data.
    Dev.

  • Partition Exchange Loading

    Have anyone had success with this feature in OWB? I've just attempted it but got an "ORA-12841: Cannot alter the session parallel DML state within a transaction". Is there a property somewhere to stop it from generating these alter sessions stmt?
    TIA
    Hong
    Environment:
    OWB version 9.0.2.62.3
    Oracle9i EE 9.0.1.3.0
    Solaris 2.7

    There is a number of restrictions when using Partition Exchange, please check these conditions are true:
    - The partition you are loading into is empty,
    - The index is local (i.e. every partition has it's own index),
    - All the data you are loading fits into the partition (this is a primary suspect in your case),
    - Loading tipe is INSERT (DELETE/INSERT, TRUNCATE/INSERT, CHECK/INSERT should work bu you can get warnings during generation),
    Regards:
    Igor

  • Virtual column and partition exchange load

    Hi All,
    Can someone tell me that if i have a virtual column on a table in 11g then can we load the data as partition exchange loading into the table.
    Thanks & Regards,
    Ankit Rana

    Hemant K Chitale wrote:
    Why not run a simple test with a dummy table, a few columns (plus a virtual column) and a few partitions ?
    Excellent suggestion.
    Shouldn't take more than about 30 minutes to create a test case - and if it takes more than 30 minutes the OP needs the practice anyway to get a better feel for the technology.
    Hint to OP: make sure you put some data in the "incoming" table, make sure you put some data in the "non-exchanged" partitions, remember to include a unique/pk constraint if you're expecting one on production, and run with sql_trace enabled to see what's happening in the background.
    Regards
    Jonathan Lewis

  • Partition exchange doumentation problems

    Oracle 10gR2 EE / Aix5L
    I have a partitioned table on which the primary key is DISABLE VALIDATE and want to exchange a single table with a partition.
    I did that because documentation "UNIQUE Constraints in a Data Warehouse" says :
    "However, there are trade-offs for the data warehouse administrator to consider with DISABLE VALIDATE constraints. Because this constraint is disabled, no DML statements that modify the unique column are permitted against the sales table. You can use one of two strategies for modifying this table in the presence of a constraint:
    * Use DDL to add data to this table (such as exchanging partitions)..."
    Problem #1 :
    "Because this constraint is disabled, no DML statements that modify the unique column are permitted against the sales table."
    That sentence lets suppose that DELETEs or UPDATEs (columns different from PK) should be permitted cause they won't break the uniqueness. That's false. In fact, no DML statements at all are permitted.
    Problem #2 : It's impossible to exchange a single table with a partition when PK is disable Validate (ORA-25132 : UNIQUE constraint (string.string) disabled and validated in ALTER TABLE EXCHANGE PARTITION
    Cause: cannot ALTER TABLE EXCHANGE PARTITION when the partition and the table have a disabled and validated unique constraints AND the unique keys in the partion is not mutually exclusive from the rest of the table.)
    The only way to succeed is to NOValidate the PK, exchange the table and the partition, and Validate the PK. I precise that "Validate PK" succeeds and means that "the unique keys in the partion IS mutually exclusive from the rest of the table."
    Some explanations or advices...
    Thanks for reading my message.

    jpsql wrote:
    For those interested.
    Yes, it is possible to exchange a single table with a partition. The PK of the single table was not VALIDATE. The PK of the partitioned table and the one of the single table have to be both DISBABLED and VALIDATED.Could you elaborate a bit on this? What was exactly the difference to your initial setup? I think I understand that the PK of your unpartitioned table was initially NOT VALIDATED (status ENABLED/DISABLED?) whereas the PK on your partitioned table was VALIDATED, but DISABLED. Now you've VALIDATED the PK of your unpartitioned table (and DISABLED it?) and then you were able to perform the exchange partition without an error message?
    Regards,
    Randolf
    Oracle related stuff blog:
    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/

  • Partition Exchange Issue

    Hello,
    When I am trying to do a partition exchange between one unpartitioned and partitioned table I am getting the following error
    ORA-08103: object no longer exists
    The indexes of the two table matches. I donot know what caused this problem. Can you please help me in resolving this??
    Thanks
    Sathish

    Hi,
    Check Metalink for this.
    There are a lot of bugs related to this error.
    Also check this blog.
    Best Regards,
    Alex

Maybe you are looking for

  • S-Video Output Mono

    Hi, I've been using my Powerbook to connect to my TV and watch QuickTime files using the S-Video port on the back. However recently the output flicked from colour to mono when I plugged the cable in and now I can't seem to get it to display in colour

  • Do I need to update to iOS6 before I switch to my new iPhone?

    Hello! I have an iPhone 5 on its way to me, and I was wondering if I needed to upgrade my current iPhone 3GS to iOS6.   I obviously will want to migrate all of my data over to my new phone, and I wasn't sure if the two phones need to be running the s

  • N86 8MP and bleutooth: "Phone could not be verifie...

    Hello all, I have a N86 8MP with a problem. I cannot connect it to my PC with PC Suite by using bleutooth. PC Suite can find the phone, but after entering the password (usually 123) it says "phone cannot be verified". Software on the phone is updated

  • Iphone keeps showing not enough storage,

    messagr saysd Not enough storage, the iphone cannot be backed up because there is not enought iCloud Storage available.  Cannot press settings or cancel and cannot switch phone off.  Have bacled up phone and downloaded new version of itunes,

  • Spanned file system with zip

    Hi Is there a way of creating a spanned file system with any of the current zip utilities (Native LabView or OpenG etc.)? Effectively the result should be z01, z02, etc. This format is something that both WinRAR and WinZIP accomplish, so the output w