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 PMHi,
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 conceptFirst 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
thankFirstofall 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 3640755000The 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 tuningMy 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 -
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,
VenkatAn 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
-
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