Parallel Processing in Oracle

Gurus,
I need to run three cursors at a time. Is it possible in Oracle?
If yes then help in this issue.
Thanks in Advance.

As mentioned, it all depends on whether the results of the 3 cursor processes need to be combined/processed afterwards.
If not, and each cursor process is a independent process, then you can define each of the 3 processes as procedures.
The "main process" can then simply use the Oracle Job Scheduler to start once-off jobs for these 3 PL/SQL procedures. These will then run in parallel, as batch/background jobs.
If the "main process" needs to wait for some reason for these 3 processes to complete processing (and commit their changes), then the following loop structure can be used:
loop
exit when <all 3 jobs have terminated>;
-- if not. sleep for n seconds and then check again
DBMS_LOCK.Sleep( n );
end loop;The check for <all 3 jobs have terminated> can be done using SQL to query the USER_JOBS view.
When the 3 jobs were submitted, each returned a job id. When this no longer exists in USER_JOBS, that once-off job has completed processing.
If each of the 3 jobs needs to communicate with one another via some kind of IPC mechanism.. things are more complex. Not because of PL/SQL or Oracle, but because this is a complex thing to code in any language and system.
Oracle provides a couple of IPC-like mechanisms. These include:
- DBMS_PIPE
- plain vanilla SQL table as "a shared memory area"
- advance message queues
The only real difference is that where you would have coded a fork() in Unix or a CreateThread() in Windows, you will be using DBMS_JOB (or DBMS_SCHEDULER) to spawn a thread.
The rest of the concepts of multi-threading/multi-processing remains the same. Thread safe code. Semaphores. Mutexes. Etc. The basics remains the same.. just the actual "things" used to implement these are called by a different name.

Similar Messages

  • Parallel Processing in Oracle 10g

    Dear Oracle Experts,
    I would like to use the Parallel Processing feature on My production database running on Unix Box.
    No: of CPU in each node is 8 and its RAC database
    Before going for this option i would like to certain things regarding Parallel Processing.
    1. According to my server specification how much DOP i can specify.
    2. Which option for Setting Parallel is good
    a. Using the 'alter table A parallel 4' or passing the parallel hints in the sql statements
    3. We have a batch processing jobs which are loading data into the tables from flat files (24*7) using sql loader. is it possible to parallel this operation and any negative effect if enabled parallel.
    4. Query or DML - which one will be perform best with parallel option.
    5. What are the negative issue if parallel option is enabled.
    6. what are the things to be taken care while enabling the parallel option.
    Thanks in Advance
    Edited by: user585870 on Jun 7, 2009 12:04 PM

    Hi,
    first of all, you should read [Using Parallel Execution|http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/usingpe.htm#DWHSG024] in documentation for your version - almost all of these topics are covered there.
    1. According to my server specification how much DOP i can specify.It depends not only on number of CPU. More important factors are settings of PARALLEL_MAX_SERVERS and PARALLEL_ADAPTIVE_MULTI_USER.
    2. Which option for Setting Parallel is good - Using the 'alter table A parallel 4' or passing the parallel hints in the sql statementsIt depends on your application. When setting PARALLEL on a table, all SQL dealing with that table would be considered for parallel execution. So if it is normal for your app to use parallel access to that table, it's OK. If you want to use PX on a limited set of SQL, then hints or session settings are more appropriate.
    3. We have a batch processing jobs which are loading data into the tables from flat files (24*7) using sql loader. is it possible to parallel this operation and any negative effect if enabled parallel.Yes, refer to documentation.
    4. Query or DML - which one will be perform best with parallel option.Both may take advantages of using PX (with some restrictions to Parallel DML) and both may run slower than non-PX versions.
    5. What are the negative issue if parallel option is enabled.1) Object checkpoint happens before starting parallel FTS (true for >=10gR2, before that version tablespace checkpoint was used)
    2) More CPU and memory resources are used with PX - it may be both benefit and an issue, especially with concurrent PX.
    6. what are the things to be taken care while enabling the parallel option.Read the documentation - it contains almost all you need to know. Since you are using RAC, you sould not forget about method of PX slaves load balancing between nodes. If you are on 10g, refer to INSTANSE_GROUPS/PARALLEL_INSTANCE_GROUPS parameters, if you are using 11g then properly configure services.

  • How to enable an monitor parallel processing in Oracle

    Hi All,
    I have 2 short questions:
    1. When we want parallel processing, we can either use a parallel hint in the query, or alter a table to be parrallel. My question is what is the difference in the following 2 syntax:
    a. ALTER TABLE myTable PARALLEL (DEGREE 3);
    b. ALTER TABLE myTable PARALLEL 3;
    Does the "DEGREE" keywor make any difference? or they both are same statements?
    2. When we enable parallel processing, how can we monitor oracle processes, to confirm that a certain table is being actually processed by multiple threads of a singe user process?
    An early response would be highly appreciated. Thanks.

    1)The parallel clause lets you change the default degree of parallelism for queries and DML on the table.
    2) PARALLEL DEGREE specifies the number of query server processes that can scan the table in parallel. Either specify a positive integer or DEFAULT which signifies to use the initialization parameter
    check further http://mywebsys.com/oracle/syntax/view_syntax.php?id=23
    Thanks

  • How to implement parallel processing in oracle.

    Hi Gurus,
    In one our procedures we are calling 7 procedures internally. We want to execute them parallely insted of sequentially.
    Please help me to resolve this issue.
    thanks in advance...

    Hi,
    You have dbms_job package in Oracle 9i and dbms_scheduler from Oracle 10g.
    Though you can run all these procedures parallel submitting via dbms_job, any exception/error out in any of these procedures need to be handled explicitly. Just be aware that once you submit these jobs, your application loses control of the execution and you have to build a whole infrastructure for rerun in case of an exception(log/exception tables, monitoring application to periodically check the exception tables, alerts from procedures in case of an exception and so on ...)
    It's going to become more complex if you have any dependencies between these procedures.

  • Can Essbase support more than 8 threads parallel processing?

    Recently both AMD and Intel start to release their 6 cores Xeon CPU to achieve higher CPU performance. Existing Essbase can configure to max 8 threads in parallel processing, will Oracle consider to upgrade the configuration parameters e.g. max 12 threads so that Essbase can enjoy the benefits from hardware upgrade?

    What we have tested is even with the the max no. of threads is 8 in 64 bit server, It didn't help us in improving the single explicit job performance compared to 4 threads in the 32 bit server.
    But the 64 bit server provided the more stability when multiple explicit jobs are triggered parallel by the way we can make the batch window short.

  • Parallel processing for increaing the performance

    various ways of parallel processing in oracle especially using hints
    Please let me knw if there exists any online documentation in understanding the concept

    First of all: As a rule of thumb don't use hints. Hints make programs too unflexible. A hint may be good today, but might make things worse in future.
    There are lots of documents available concerning parallel processing:
    Just go to http://www.oracle.com/pls/db102/homepage?remark=tahiti and search for parallel (processing)
    Due to my experience in 10g, enabling parallel processing might slow down processing extremely for regular tables. The reason are lots of waits in the coordination of the parallel processes.
    If, however, you are using parallel processing for partitioned tables, parallel processing works excellent. In this case, take care to choose the partitioning criterion properly to be able to distribute processing.
    If, for example, your queries / DMLs work on data corresponding to a certain time range, don't use the date field as partitioning criterion, since in this case parallel processing might work on just a single partition. Which again would result in massive waits for process coordination.
    Choose another criterion to distribute the data to be accessed to at least <number of CPUs -1> partitions (one CPU is needed for the coordination process). Additionally consider to use parallel processing only in cases where large tables are involved. Compare this situation with writing a book: If you are planning to have some people writing a (technical) book consisting of just 10 pages, it wouldn't make any sense at all concerning time reduction. If, however, the book is planned to have 10 chapters, each chapter could be written by a different author. Reducing the resulting time to about 1/10 compared to a single author writing all chapters.
    To enable parallel processing for a table use the following statement:
    alter table <table name> parallel [<integer>];If you don't use the <integer> argument, the DB will choose the degree of parallelism, otherwise it is controlled by your <integer> value. Remember that you allways need a coordinator process, so don't choose integer to be larger than <number of CPUs minus 1>.
    You can check the degree of parallelism by the degree column of user_/all_/dba_tables.
    To do some timing tests, you also can force parallel dml/ddl/query for your current session.
    ALTER SESSION FORCE PARALLEL DML/DDL/QUERY [<PARALLEL DEGREE>];

  • How can I implement parallel processing feature in Oracle 9i?

    I need to load (and transform) millions of data from Table1 to Table2. How can I speed the process using parallel processing. The server has 4 processors (running on Win2k Advanced server).
    Can anyone guide me what are the exact steps required to enable parallel loading. I've already partitioned Table1 into 4 parts.

    insert /*+ PARALLEL(8) */ into table A select * from table B ;
    or alter table A parallel 8 ;
    or alter session enable parallel dml ;
    Look for PARALLEL on http://tahiti.oracle.com for more infos.
    Fred

  • Is pga is being used in Parallel process

    HI
    is pga is being used in parallel processing. if yes then increasing the size of pga can increase performance
    thank

    Firstofall we need to clarify the "PGA" in Oracle.
    PGA is a type of memory which contains data and control information for a server process. When server process starts, a PGA value is assinged to a single user (if i don't remember wrong, it's default is 5M). The collection of PGA's is defined as total instance PGA. PGA_AGGREGATE_TARGET defines the maximum value which can get.
    Regarding to your concept, in my opinion it's basically wrong. Caching happens in buffer_cache which is a component of the SGA. When you first execute your sql text, Oracle caches it to reduce the physical I/O. Afterwards, if you need to execute it again, this will be a logical I/O.
    If i got your question wrong, please expend it more for further help.

  • Explain Plan - Parallel Processing Degree of 2 and CPU_Cost

    Explain Plan - Parallel Processing Degree of 2 and CPU_Cost
    When I use a hint to use parallel processing with a degree of 2
    the I/O cost seems consistently divided by (1.8) but the cpu cost
    adjustment is inconsistent(between 2.17 and 2.62).
    Any ideas on why the cpu cost varies with each table ?
    Is there a formula to adjust the cpu_cost ?
    Thanks,
    Summary:
    The i/o cost reduction is consistent (divide by 1.8)
    Table 1: 763/424 = 1.8
    Table 2: 18774/10430 = 1.8
    Table 3(not shown): 5/1.8 = 3
    But the cpu cost reduction varies:(between 2.17 and 2.62)
    Table 1: 275812018/122353500 = 2.25
    Table 2: 7924072407/3640755000 = 2.17
    Table 3(not shown): 791890/301467 = 2.62
    Example:
    Oracle Database 10.2.0.4.0
    Table 1:
    1.) Full table scan on Table 1 without parallel processing.
    EXPLAIN PLAN FOR select/*+ CPU_COSTING
    PARALLEL(table_1,1)*/
    * from table_1
    SQL> select cost,io_cost,cpu_cost from plan_table;
    IO_COST CPU_COST
    763 275812018
    2.) Process Table 1 in parallel with a degree of 2.
    EXPLAIN PLAN FOR select/*+ CPU_COSTING
    PARALLEL(table_1,2)*/
    * from table_1
    IO_COST CPU_COST
    424 122353500
    Table 2:
    3.) Full table scan on Table 2 without parallel processing.
    EXPLAIN PLAN FOR select/*+ CPU_COSTING
    PARALLEL(table_2,1)*/
    * from table_2
    IO_COST CPU_COST
    18774 7924072407
    4.) Process Table 2 in parallel with a degree of 2.
    EXPLAIN PLAN FOR select/*+ CPU_COSTING
    PARALLEL(table_2,2)*/
    * from table_2
    IO_COST CPU_COST
    10430 3640755000

    The COST value is for the benefit of the CBO; not YOU.
    What should be more important to you is the elapsed run time for the SQL

  • Can anyone guide me to ideas on basics of parallel processing in SQL

    Hi all,
    Can anyone guide me to ideas on basics of parallel processing in SQL and its usage in the the performance tuning of the query. If so what's the syntax to be followed and how to arrive at the optimized query after tuning

    My 2'c on the subject.
    Don't break your head over parallel query (PQ) processing. It should be something that is of concern to the DBA/Oracle architect - not the developer.
    Yes, it is good to be aware of how it works. But you should not write hints in your code that forces PQ processing.
    Simple example. You use hints to force a PQ of degrees 5 (meaning 5 PQ processes will be used). It works great on development. In production, 10 users are running that query round about the same time. The PQ ceiling is 20 PQ processes. The 1st 4 users each gets 5 PQs processes and the remaining 6 get none. Or another developer did the same thing, only he was very greedy and coded a PQ of degrees 20 into his SQL. So his SQL is now consuming all available PQ processes. So how did forcing PQ in your code addressed performance? It did just for a couple of users with the majority of users now facing even worse performance.
    The DBA is the one that should be tuning this. He/she can set the degree of PQ per table. Control the size of the PQ etc.
    And it does not stop there. The primary reason for PQ in Oracle is to lower the latency of I/O. Let's say Oracle needs to reads 100MB worth of data (full table scan or fast full index scan for example). It uses multi block (sequential) reads to read bigger chunks at a time. Still, a single process can only read I/O so fast - the speed of which is entirely dependant on the I/O subsystem and hardware.
    Using a second process to assist with the I/O can reduce the overall time. Instead of 1 process reading 100MB data, there are now 2 processes only having to read 50MB each.
    But as I mentioned, the actual I/O thruput is a lower level function. Let's say you start a 100 processes. Great - each only have to read 1MB worth of data. Response should be fast.
    Wrong. Those 100 processes seriously overload the I/O subsystem and throttle it so badly that the complete platform's performance is degraded severely. So instead of these 100 process speeding up I/O performance, they trash the performance of the entire platform.
    Sure, this is an extreme example. But the basic concepts are usually illustrated much better using such an example.
    So, you as developer deciding on just whether to use PQ and just how many PQ processes to use...? Wrong. It is not your decision, not your area of responsibility and usually not your area of expertise.
    Know what PQ is. Know how PQ works. But think long and hard before forcing PQ via your code (using hints) on a production platform.

  • How to monitor parallel processing

    Hi All,
    I have 2 short questions:
    1. When we want parallel processing, we can either use a parallel hing in the query, or alter a table to be parrallel. My question is what is the difference in the following 2 syntax:
    a. ALTER TABLE myTable PARALLEL (DEGREE 3);
    b. ALTER TABLE myTable PARALLEL 3;
    Does the "DEGREE" keywor make any difference? or they both are same statements?
    2. When we enable parallel processing, how can we monitor oracle processes, to confirm that a certain table is being actually processed by multiple threads of a singe user process?
    An early response would be highly appreciated. Thanks.

    user566817 wrote:
    2. When we enable parallel processing, how can we monitor oracle processes, to confirm that a certain table is being actually processed by multiple threads of a singe user process?There are a number of virtual performance views that can be used. Please refer to the Oracle® Database Reference guide for details on these.
    Had a look though my scripts and I have this one.. cannot recall if I "borrowed" it from somewhere and customised it and how old it is.. but it should (hopefully) still be mostly correct. It uses the virtual view v$px_process to determine the list of current PQ slaves in the pool and if they are used, map them to the Oracle session using them.
    select  distinct
            x.server_name           as "PQ",
            x.status                as "Status",
            x.sid                   as "OraPID",
            w2.sid                  as "Parent OraPID",
            v.osuser                as "O/S User",
            v.schemaname            as "User",
            w1.event                as "Child Wait",
            w2.event                as "Parent Wait"
    from    v$px_process    x,
            v$lock          l,
            v$session       v,
            v$session_wait w1,
            v$session_wait w2
    where   x.sid =! l.sid(+)
    and     to_number (substr(x.server_name,3)) = l.id2(+)
    and     x.sid = w1.sid(+)
    and     l.sid = w2.sid(+)
    and     x.sid = v.sid(+)
    and     nvl(l.type,'PS') = 'PS'Use at own risk - best would be to verify that this is still valid using the Reference Guide. Or create similar ones using the available V$ views for the details you want to see (e.g. SQL statement executed per PQ, etc).

  • How to enable Parallelism process in 10.1.0.5 database

    Hi All,
    We have oracle database 10.1.0.5 running in windows 2003 server.
    I am trying to enable parallelism process in the database by including the following init parameters
    PARALLEL_AUTOMATIC_TUNING
    PARALLEL_SERVER
    PARALLEL_MIN_SERVERS
    PARALLEL_MAX_SERVERS
    But while i am trying to bring the database i am getting an error message like these parameter has been deprecated.
    Could anyone help me to enable parallel process in 10g database.
    Thanks in advance.
    Regards
    Aruna

    >
    I am trying to enable parallelism process in the database by including the following init parameters
    PARALLEL_AUTOMATIC_TUNING
    PARALLEL_SERVER
    PARALLEL_MIN_SERVERS
    PARALLEL_MAX_SERVERS
    But while i am trying to bring the database i am getting an error message like these parameter has been deprecated.
    >
    PARALLEL_AUTOMATIC_TUNING is deprecated since 10g. It's always true now. PARALLEL_SERVER is related to OPS (prior to RAC) and long time deprecated.
    You enable parallel query with an ALTER TABLE statement like
    SQL> ALTER TABLE SALES PARALLEL;or with a hint like
    SQL> select /*+ parallel(sales) */ * from sales;Kind regards
    Uwe
    http://uhesse.wordpress.com

  • Parallel Execution in Oracle

    Hi,
    I have source data which keeps on populating.I want to process the records parallely using Oracle Stored Procedure.I should not reprocess the records that are already processed.Please suggest an logic.
    Right now i have only option of calling the procedure multiple times in unix environment.
    Regards,
    Venkat

    An example of how to create a worloads table that enables target table (to process) to be chunked, and processed.
    SQL> --// we have a table with a PK that is not a gap-free
    SQL> --// sequential number
    SQL> create table sample_data(
      2          id              primary key,
      3          last_update,
      4          name
      5  ) organization index
      6  nologging as
      7  select
      8          object_id,
      9          sysdate,
    10          object_name
    11  from       all_objects
    12  /
    Table created.
    SQL>
    SQL> --// first couple of rows - as can be seen, we cannot
    SQL> --// use id column ranges as the 1-1000 range could be
    SQL> --// 10 rows, the 1001-2000 range 1 row, and the 2001-3000
    SQL> --// range 900 rows.
    SQL> select * from(
      2          select * from sample_data order by 1
      3  ) where rownum < 11;
            ID LAST_UPDATE         NAME
           100 2013/07/08 09:10:01 ORA$BASE
           116 2013/07/08 09:10:01 DUAL
           117 2013/07/08 09:10:01 DUAL
           280 2013/07/08 09:10:01 MAP_OBJECT
           365 2013/07/08 09:10:01 SYSTEM_PRIVILEGE_MAP
           367 2013/07/08 09:10:01 SYSTEM_PRIVILEGE_MAP
           368 2013/07/08 09:10:01 TABLE_PRIVILEGE_MAP
           370 2013/07/08 09:10:01 TABLE_PRIVILEGE_MAP
           371 2013/07/08 09:10:01 STMT_AUDIT_OPTION_MAP
           373 2013/07/08 09:10:01 STMT_AUDIT_OPTION_MAP
    10 rows selected.
    SQL>
    SQL> --// we create a workloads table - we'll use this to
    SQL> --// hand out work to a parallel process
    SQL> create table workloads(
      2          workload_name   varchar2(30),
      3          workload_id     number,
      4          workload_data   number,
      5          constraint pk_workloads primary key
      6          ( workload_name, workload_id )
      7  ) organization index
      8  /
    Table created.
    SQL>
    SQL> --// we create the workloads (1 workload per rows in
    SQL> --// this example) for processing the sample_data table
    SQL> insert into workloads
      2  select
      3          'SampleData1',
      4          rownum,
      5          id
      6  from       sample_data;
    57365 rows created.
    SQL> commit;
    Commit complete.
    SQL>
    SQL> --// we can now chunk the SampleData1 workload using the
    SQL> --// workload_id as it is a sequential gap free number to
    SQL> --// use for even distribution of work
    SQL> col VALUE format 999,999,999
    SQL> select 'Start at ' as "LABEL", min(workload_id) as  "VALUE" from workloads where workload_name = 'SampleData1'
      2  union all
      3  select 'End at ', max(workload_id) from workloads where workload_name = 'SampleData1'
      4  union all
      5  select 'For rowcount ', count(*) from workloads where workload_name = 'SampleData1'
      6  /
    LABEL                VALUE
    Start at                 1
    End at              57,365
    For rowcount        57,365
    SQL>
    SQL> --// for example, we want to create 10 workload buckets and
    SQL> --// fill each with a range of workload identifiers
    SQL> with workload_totals( start_id, end_id ) as(
      2          select min(workload_id), max(workload_id) from workloads where workload_name = 'SampleData1'
      3  ),
      4  buckets_needed( b ) as(
      5          select ceil(end_id/10) from workload_totals
      6  ),
      7  buckets( workload_id, bucket) as (
      8          select workload_id, ceil(workload_id/b) from workloads, buckets_needed where workload_name = 'SampleData1'
      9          order by 1
    10  )
    11  select
    12          row_number() over(order by min(workload_id))    as BUCKET,
    13          min(workload_id)                                as START_WORLOAD_ID,
    14          max(workload_id)                                as END_WORKLOAD_ID
    15  from       buckets
    16  group by bucket
    17  order by 1
    18  /
        BUCKET START_WORLOAD_ID END_WORKLOAD_ID
             1                1            5737
             2             5738           11474
             3            11475           17211
             4            17212           22948
             5            22949           28685
             6            28686           34422
             7            34423           40159
             8            40160           45896
             9            45897           51633
            10            51634           57365
    10 rows selected.
    SQL>
    SQL> --// we need now a procedure that will work as a thread and be called, in
    SQL> --// parallel, to process a workload bucket
    SQL> create or replace procedure ProcessWorkload(
      2          workloadName    varchar2,
      3          startID         number,
      4          endID           number
      5  ) is
      6  begin
      7          --// we make this simple - we read the workload data from
      8          --// workloads table and do an update of sample data
      9          update(
    10                  select
    11                          s.*
    12                  from    sample_data s
    13                  where   s.id in(
    14                          select
    15                                  w.workload_data
    16                          from    workloads w
    17                          where   w.workload_name = 'SampleData1'
    18                          and     w.workload_id between startID and endID
    19                  )
    20          )
    21          set     name = lower(name),
    22                  last_update = sysdate;
    23  end;
    24  /
    Procedure created.
    SQL>
    SQL> --// process sample_data in parallel via 10 workload buckets, using 2
    SQL> --// parallel processes
    SQL> var c refcursor
    SQL> declare
      2          taskName        varchar2(30);
      3  begin
      4          taskName := 'Parallel-PQ-Process1';
      5          DBMS_PARALLEL_EXECUTE.create_task( taskName );
      6
      7          --// we use our SQL above to create 10 buckets, with each bucket
      8          --// (or chunk) specifying the start and end workload id's to
      9          --// process
    10          DBMS_PARALLEL_EXECUTE.create_chunks_by_sql(
    11                  task_name => taskName,
    12                  sql_stmt =>
    13                          'with workload_totals( start_id, end_id ) as(
    14                                  select min(workload_id), max(workload_id) from workloads where workload_name = ''SampleData1''
    15                          ),
    16                          buckets_needed( b ) as(
    17                                  select ceil(end_id/10) from workload_totals
    18                          ),
    19                          buckets( workload_id, bucket) as (
    20                                  select workload_id, ceil(workload_id/b) from workloads, buckets_needed where workload_name = ''SampleData1''
    21                                  order by 1
    22                          )
    23                          select
    24                                  min(workload_id),
    25                                  max(workload_id)
    26                          from    buckets
    27                          group by bucket ',
    28                  by_rowid => false
    29          );
    30
    31          --// next we process the 10 buckets/chunks, two at a time
    32          DBMS_PARALLEL_EXECUTE.Run_Task(
    33                  task_name => taskName,
    34                  sql_stmt => 'begin ProcessWorkload(''SampleData1'',:start_id,:end_id); end;',
    35                  language_flag => DBMS_SQL.NATIVE,
    36                  parallel_level => 2
    37          );
    38
    39          --// wait for it to complete
    40          while DBMS_PARALLEL_EXECUTE.task_status( taskName ) != DBMS_PARALLEL_EXECUTE.Finished loop
    41                  DBMS_LOCK.Sleep(10);
    42          end loop;
    43
    44          --// stats cursor
    45          open :c for
    46          select
    47                  task_name,
    48                  job_name,
    49                  chunk_id,
    50                  status,
    51                  start_id,
    52                  end_id,
    53                  end_id-start_id                         as UPDATES_DONE,
    54                  to_char(start_ts,'hh24:mi:ss.ff')       as START_TS,
    55                  to_char(end_ts,'hh24:mi:ss.ff')         as END_TS,
    56                  end_ts-start_ts                         as DURATION
    57          from    user_parallel_execute_chunks
    58          where   task_name = taskName
    59          order by 1,2;
    60
    61          --// remove task
    62          DBMS_PARALLEL_EXECUTE.drop_task( taskName );
    63  end;
    64  /
    PL/SQL procedure successfully completed.
    SQL>
    SQL> col TASK_NAME format a20
    SQL> col JOB_NAME format a20
    SQL> col START_TS format a15
    SQL> col END_TS format a15
    SQL> col DURATION format a28
    SQL> print c
    TASK_NAME            JOB_NAME               CHUNK_ID STATUS       START_ID     END_ID UPDATES_DONE START_TS        END_TS          DURATION
    Parallel-PQ-Process1 TASK$_15266_1              5821 PROCESSED           1       5737         5736 09:10:19.066131 09:10:19.313965 +000000000 00:00:00.247834
    Parallel-PQ-Process1 TASK$_15266_1              5822 PROCESSED       28686      34422         5736 09:10:19.315984 09:10:19.682781 +000000000 00:00:00.366797
    Parallel-PQ-Process1 TASK$_15266_1              5823 PROCESSED        5738      11474         5736 09:10:19.684925 09:10:19.818145 +000000000 00:00:00.133220
    Parallel-PQ-Process1 TASK$_15266_1              5824 PROCESSED       17212      22948         5736 09:10:19.818694 09:10:19.950409 +000000000 00:00:00.131715
    Parallel-PQ-Process1 TASK$_15266_1              5830 PROCESSED       51634      57365         5731 09:10:20.605421 09:10:20.721599 +000000000 00:00:00.116178
    Parallel-PQ-Process1 TASK$_15266_1              5826 PROCESSED       40160      45896         5736 09:10:20.080270 09:10:20.214443 +000000000 00:00:00.134173
    Parallel-PQ-Process1 TASK$_15266_1              5827 PROCESSED       11475      17211         5736 09:10:20.217662 09:10:20.339758 +000000000 00:00:00.122096
    Parallel-PQ-Process1 TASK$_15266_1              5828 PROCESSED       34423      40159         5736 09:10:20.342242 09:10:20.453802 +000000000 00:00:00.111560
    Parallel-PQ-Process1 TASK$_15266_1              5829 PROCESSED       45897      51633         5736 09:10:20.454376 09:10:20.603116 +000000000 00:00:00.148740
    Parallel-PQ-Process1 TASK$_15266_1              5825 PROCESSED       22949      28685         5736 09:10:19.950975 09:10:20.079311 +000000000 00:00:00.128336
    10 rows selected.
    SQL>
    SQL> --// updated sample data
    SQL> select * from(
      2          select * from sample_data order by 1
      3  ) where rownum < 11;
            ID LAST_UPDATE         NAME
           100 2013/07/08 09:10:19 ora$base
           116 2013/07/08 09:10:19 dual
           117 2013/07/08 09:10:19 dual
           280 2013/07/08 09:10:19 map_object
           365 2013/07/08 09:10:19 system_privilege_map
           367 2013/07/08 09:10:19 system_privilege_map
           368 2013/07/08 09:10:19 table_privilege_map
           370 2013/07/08 09:10:19 table_privilege_map
           371 2013/07/08 09:10:19 stmt_audit_option_map
           373 2013/07/08 09:10:19 stmt_audit_option_map
    10 rows selected.
    SQL>
    To eliminate the workload table approach, you need to find an alternative method for chunking the target table. Whether such a method is available depends entirely on the structure and nature of your target table  (and is the preferred approach over using a secondary worktable to drive parallel processing).

  • Comparison between and DB2 in Parallel processing capability

    which one is the peter in parallel processing oracle or DB2? what is the differ in the capability between them?

    Though not specific to parallel processing, you may wish to check out an Oracle White Paper on comparision between 11g RAC vs DB2 v9 at the following link, which may be of help -
    http://www.oracle.com/technetwork/database/clustering/overview/wp-oracleibm-2009-130764.pdf

  • Strange responsetime with query triggering parallel processing

    Hi,
    Are there anyone who can run this SQL below on a RAC 11g R2, and give me feedback on how long time it took?
    In my environment it takes more than a minute, and I suspect there is a problem with the database and parallel processing.
    If I collect the values from the inner select and make a list of comma-separated values, it goes fast.
    Replace SCHEMA_NAME with an existing SCHEMA_NAME on you database before running.
    SELECT sa.*
      FROM gv$sqlarea sa
      WHERE sa.sql_id in (SELECT sql_id from gv$sqlarea where parsing_schema_name like '%SCHEMA_NAME%' and rownum < 100)
    Thanks!

    You are using the hint a bit incorrectly.
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements006.htm#SQLRF50805
    <quote>
    The NO_PARALLEL hint overrides a PARALLEL parameter in the DDL that created or altered the table. For example:
    SELECT /*+ NO_PARALLEL(hr_emp) */ last_name
    FROM employees hr_emp;
    <quote>
    Check Metalink note 267330.1 as well.

Maybe you are looking for

  • Can I receive emails for different BT addresses in...

    I have several BT Yahoo email addresses but is it correct I can only view each email sent to me by logging in each time to the seperate account windows.  I ideally would like to have, after logging in for instance to my main account, to have one rece

  • Properties shell for 64-bit version?

    Hi, I am currently running Adobe Reader X for 64-bit on Windows 7 64-bit but it the PDF metadata that used to show is in Explorer is not showing (title, author, keywords, etc.). I read on another forum that this is caused by the fact that pdfshell.dl

  • Lion bugs

    Hello community, I've been testing Lion (10.7.1) since it came out and have made the following notes on problems I've encountered along the way: Occasionally the keyboard stops working.  The function keys continue to work (ie the volume brightness et

  • Share objects between two repositories

    hello, How can I use the objects in a another designer/2000 repository in my repository? Is it possible? Thanks in advance.

  • Enabling UEFI Boot Support on Compaq

    Hi, I purchased a Compaq CQ5300Y a long time ago, and since it has been sitting in the corner of my room for so long, I decided to try and put Steam OS on it, because it just came out. So I got as far as plugging my USB drive into the computer, and i