Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

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

2776362Jul 23 2013 — edited Jul 25 2013

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

This post has been answered by Maurice Müller on Jul 23 2013
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 22 2013
Added on Jul 23 2013
13 comments
3,004 views