Parallel execution of query

Hi Everyone,
I am using following version oracle version
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
"CORE 10.2.0.4.0 Production"
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
Parameter for parallel execution.
Name        Type Value
parallel_server      1 FALSE
parallel_server_instances   3 1
recovery_parallelism    3 0
fast_start_parallel_rollback  2 LOW
parallel_min_percent    3 0
parallel_min_servers     3 4
parallel_max_servers    3 10
parallel_instance_group    2
parallel_execution_message_size 3 2152
parallel_adaptive_multi_user  1 TRUE
parallel_threads_per_cpu   3 2
parallel_automatic_tuning   1 FALSE
If i execute two or more SQL with parallel hint, i realised that the SQL which is first executed is using the parallelism functionality and rest are sequentially.
select /*+ parallel(a) */  max(sal)  from emp a;
SELECT /*+ parallel(a) parallel(b) */ a.empno, b.deptno FROM emp a,  dept b
WHERE a.deptno = b.deptno
I have following queries.
1. How can i find out how many Degree of parallalism is being used by SQL
2. What needs to be done so that both SQL can be executed using parallel execution.
3. How to find out how many 'Query server' are being used by SQL and how many left for another SQL
   to use 'Query server'
Regards,
Sandeep

Did you already consult the documentation? "Rules for Parallelizing Queries":  Types of Parallelism
And you can find several threads on AskTom, for example: Ask Tom "Number of CPUs and Degree of Parallelism"

Similar Messages

  • Query Cubes with Parallel executions?

    I have the following problem:
    As I mentioned in my first question here: Combined Cube of smaller cubes?
    We joined four cube views to form a fact table for a bigger cube. Actually we don't form a bigger view based on the cube views' now, but use an etl to insert into a fact table the results by months. Let's say our cubes are DDS_CUBE, KD_CUBE, GFO_CUBE and ZL_CUBE.
    We use DDS_CUBE as our main and do a left join on the others to insert rows in fact table for AOR_CUBE. There are around 238 000 rows per month in DDS_CUBE and DDS_CUBE have data for 12 months. The other cubes have average the same rows of data.
    And when I ran the query with all the rows after 3 hours it's still running and I think it shouldn't be.
    *When I limit the rows with rownum < 1000 it executes for under 5 minutes.
    Is there a way to optimize this, can I query the cubes with parallel executions not from the views but from the table they are kept?
    Edit: Forgot to mention that DDS_CUBE is partitioned by month and have a total of 84 partitions, but only 12 are loaded.
    Message was edited by: valeksandrova
    Also is there a way to import OLAP cubes from AWM to OWB?

    Update:
    I wrote a procedure with bulk collect. It turns out that the DDS_CUBE is causing problems. The query selects from it around 238k rows which are the total amount of rows in the cube for the selected month and then it just stops, it doesn't proceed the rest of the query to select from the other cubes.
    Also, lets say my select statement is like this:
    SELECT <cols> FROM DDS_CUBE
    LEFT JOIN GFO_CUBE on <join>
    LEFT JOIN KD_CUBE on <join>
    LEFT JOIN ZL_CUBE on <join>
    WHERE <condition that select only the members of the lowest dimension levels and for only one month>
    And I'm wondering why does the execution plan does right join on the GFO, KD and ZL cubes and not a LEFT join based on the DDS_CUBE.
    It goes selecting all(all months, all levels, everything) the rows of the other cubes (11M from ZL and 238k from DDS, and there it stops, doesn't proceed to KD or GFO cube). Why isn't just selecting first the needed 238k from DDS_CUBE and then filter only the needed ones from the other cubes?

  • 11gR2 query parallel execution

    I need to retrieve info from a very big table many times with different where conditions and compared execution plan for the queries using composite index on (group_id, start,end).
    SELECT /*+ index(a idx_loc) */ a.id , a.group_id
    from location a
    where a.group_id=10
    and a.start>=30000
    and a.end<=60000;
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
    | 0 | SELECT STATEMENT | | 578 | 25432 | 191K (1)| 00:38:14 | | |
    | 1 | PARTITION LIST SINGLE | | 578 | 25432 | 191K (1)| 00:38:14 | KEY | KEY |
    | 2 | PARTITION LIST SINGLE | | 578 | 25432 | 191K (1)| 00:38:14 | 6 | 6 |
    | 3 | TABLE ACCESS BY LOCAL INDEX ROWID| LOCATION | 578 | 25432 | 191K (1)| 00:38:14 | 6 | 6 |
    |* 4 | INDEX SKIP SCAN | IDX_LOC | 592 | | 190K (1)| 00:38:07 | 6 | 6 |
    SELECT /*+ parallel */ a.id , a.group_id
    from location a
    where a.group_id=10
    and a.start>=30000
    and a.end<=60000;
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
    | 0 | SELECT STATEMENT | | 578 | 25432 | 16333 (1)| 00:00:33 | | | | | |
    | 1 | PX COORDINATOR | | | | | | | | | | |
    | 2 | PX SEND QC (RANDOM)| :TQ10000 | 578 | 25432 | 16333 (1)| 00:00:33 | | | Q1,00 | P->S | QC (RAND) |
    | 3 | PX BLOCK ITERATOR | | 578 | 25432 | 16333 (1)| 00:00:33 | 6 | 6 | Q1,00 | PCWC | |
    |* 4 | TABLE ACCESS FULL| LOCATION | 578 | 25432 | 16333 (1)| 00:00:33 | 6 | 6 | Q1,00 | PCWP | |
    My questions are:
    1) The execution plan shows the query using parallel hint has much less cpu cost and time compared with the one with index hint. So it seems it is better to use the parallel execution. is there any downside to use parallel hint that I should consider?
    2) I can also modify the application to submit multiple queries (using index hint) in parallel (which opens multiple sessions). Is the parallel hint in the query superior to parallel queries in application?

    user7435395 wrote:
    I need to retrieve info from a very big table many times with different where conditions and compared execution plan for the queries using composite index on (group_id, start,end). BIG is a very qualitative term. So you need to be more specific. And when ever you ask for a SQL Tuning request please provide the following details mentioned in {thread:id=863295}
    SELECT /*+ index(a idx_loc) */ a.id , a.group_id
    from  location a
    where  a.group_id=10
    and a.start>;=30000
    and a.end;=60000;
    | Id  | Operation                           | Name                      | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    |   0 | SELECT STATEMENT                    |                           |   578 | 25432 |   191K  (1)| 00:38:14 |       |       |
    |   1 |  PARTITION LIST SINGLE              |                           |   578 | 25432 |   191K  (1)| 00:38:14 |   KEY |   KEY |
    |   2 |   PARTITION LIST SINGLE             |                           |   578 | 25432 |   191K  (1)| 00:38:14 |     6 |     6 |
    |   3 |    TABLE ACCESS BY LOCAL INDEX ROWID| LOCATION |   578 | 25432 |   191K  (1)| 00:38:14 |     6 |     6 |
    |*  4 |     INDEX SKIP SCAN                 | IDX_LOC           |   592 |       |   190K  (1)| 00:38:07 |     6 |     6 |
    --------------------------------------------------------------------------------------------------------------------------------- As you have forced oracle to use IDX_LOC. it is going for a [url http://docs.oracle.com/cd/B19306_01/server.102/b14211/optimops.htm#PFGRF10105]INDEX SKIP SCAN. And if the cardinality of the subindex column is low then oracle may be doing more work here. I think that is what exactly happening in your case. A simple full table scan could be more efficient.
    SELECT /*+ parallel */ a.id , a.group_id
    from  location a
    where  a.group_id=10
    and a.start>;=30000
    and a.end;=60000;
    | Id  | Operation            | Name                      | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib |
    |   0 | SELECT STATEMENT     |                           |   578 | 25432 | 16333   (1)| 00:00:33 |       |       |        |      |            |
    |   1 |  PX COORDINATOR      |                           |       |       |            |          |       |       |        |      |            |
    |   2 |   PX SEND QC (RANDOM)| :TQ10000                  |   578 | 25432 | 16333   (1)| 00:00:33 |       |       |  Q1,00 | P->S | QC (RAND)  |
    |   3 |    PX BLOCK ITERATOR |                           |   578 | 25432 | 16333   (1)| 00:00:33 |     6 |     6 |  Q1,00 | PCWC |            |
    |*  4 |     TABLE ACCESS FULL| LOCATION |   578 | 25432 | 16333   (1)| 00:00:33 |     6 |     6 |  Q1,00 | PCWP |            |
    ----------------------------------------------------------------------------------------------------------------------------------------------- Again PARALLEL query has its own down side. There is no free lunch. You need to spend more resource. And most of the time in a OLTP system with multi user access its not worthwhile.
    So the first thing i would suggest you is to remove all your hint and get an execution plan and post it. And read the above link provided an post all the necessary details.
    You need to be first clear about your problem.

  • 11g Parallel Execution on AIX 6 - SMT Enabled or Disabled?

    Greetings,
    I've had no luck searching for an answer to this question and I'm hoping someone can answer it:
    Can Oracle 11g Parallel Execution spread the "granules" of paralllism across the threads (logical cpus) in an AIX SMT enabled environment, or should SMT be disabled and the "granules" be spread scross the processors (virtual cpus)? The application is a data warehouse in a non-RAC configuration using a p570 server. From what I've read, the server must be SMP for Oracle parallel execution capabilities to be maximized, but I think all AIX servers are SMP (not sure if the server needs to be ordered as an SMP server). I'm mostly concerned with the data load processing at this point, and not so concerned for the query right now. I believe AIX 6.1 can enable/disable SMT dynamically. So would it make sense to disable during data loads, and enable for DSS query?
    Hope the question makes sense. Thanks for any help in advance!

    SMT will determine Oracle's cpu_count parameter.
    However this is a static parameter.
    So it won't work, and it might be even dangerous to change it on the fly.
    Sybrand Bakker
    Senior Oracle DBA
    Experts: those who did read documentation.

  • Parallel Execution questions

    Hi everyone, i have few questions about Parallel Execution.
    1- Query Coordinator to scan the table, split up the table to the processes. But, each process take different number of rows. For example, in oracle 10g database architecture, thomas kyte gave an example:
    "SELECT COUNT(*) FROM BIG_TABLE"
    It is distributed to 4 processes. One process take 1000 rows, another process 1200 etc. Why this is not equal? How the number of rows is determined by the QC?
    2- If we do not determine the degree of parallelism ( /*+ PARALLEL(B) */ instead of /*+ PARALLEL(B,16) */ ) how the cbo determine the degree of parallelism?
    3- in the explain plan i see lots of thing i do not know. For example :
    :TQ10000
    what is that?
    -> TQ, IN-OUT, PQ_Disturb columns?
    thanks for responses.

    Hi
    Why this is not equal? How the number of rows is determined by the QC?The number of rows is not used to split the table. Data is split in granules and distributed to the slave processed based on two methods:
    - partition granules: a whole partition is given to a specific slave process
    - block range granules: range of blocks are given to each slave process
    So, depending on the size of the granules, one slave process might process much more data than another.
    If we do not determine the degree of parallelism how the cbo determine
    the degree of parallelism?It depends on the configuration. In fact, there is a default at session level, at system level and at table level. Depending which ones are set, a DOP is chosen. In addition, the DOP might be decreased at runtime (before the execution starts, not dynamically during it).
    For example : :TQ10000 what is that?Producers send data to consumers through so called "table queues" (TQ). The number, in your case 10000, is just a identifier generated by the database engine.
    TQTable queue, e.g.: TQ10000 -> Q1,00
    IN-OUTThis is the relationship between parallel operations. E.g. P->P means that a parallel operation sends data to another parallel operation.
    PQ_Disturb columns?This is the method used to distribute rows. E.g. RANGE means that the producers send specific ranges of rows to different consumers.
    For a more detailed discussion about these topics have a look to the documentation:
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/usingpe.htm#i1009828
    HTH
    Chris Antognini
    Author of Troubleshooting Oracle Performance, Apress 2008 (http://top.antognini.ch)

  • Parallel execution

    Hello!
    One of my views includes
    "decode" in which one of expressions is "select from ... " ,
    all indexes and tables have degree of parallelism equal 1,
    and only sometimes I see parallel execution of guery.
    My question is
    whether can my decode's become the reason of parallel execution?
    Thanks and regards,
    Pavel

    Hi Pavel,
    Pavel wrote:
    Hello!
    One of my views includes
    "decode" in which one of expressions is "select from ... " ,
    all indexes and tables have degree of parallelism equal 1,
    and only sometimes I see parallel execution of guery.
    My question is
    whether can my decode's become the reason of parallel execution?No, decision to run a statement in parallel is taken based on many considerations, e.g. degree of parallelism of the objects involved, session settings (parallel query/parallel DML), cost etc. but use of decode function isn't one of them.
    Best regards,
    Nikolay

  • Parallel execution for Expression Filters

    I'm looking for any information on whether expression filters are amenable to parallel execution or not.
    I had a look through the documentation without success, and saw that in the type declarations for supporting objects there is no mention of DETERMINISTIC or PARALLEL_ENABLE. However, the static functions and procedures do not look like they have any constructs that the database would see as an impediment for parallel execution.
    Can anyone advise on this?

    Thanks for that.
    Maybe in a parallel query environment the index will not be used. But I was really wondering whether the execution of the Evaluate function itself would be parallelised, as it invokes functions that are not explicitly marked as deterministic or as safe for parallel execution.
    http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_packages.htm#BABIGDGE
    Well, I'll see if I can investigate (maybe I'll have to suspend those system triggers that prevent modification of the Type ... just for experimental reasons, you understand).

  • Parallel execution and temporary tablespaces

    I have a large long running (1 hour) data warehouse query in a materialized view.
    If I parallelize it using the parallel hint then I run out of temporary tablespace.
    I've tried creating a bunch of temporary tablespaces and putting them into a temp tablespace group but it still runs out of space. Parallel execution seems to use up way more temp tablespace than sequential execution.
    I know it is a very general question, but what are the tips for parallelizing a long running query with respect to temporary tablespace management?
    I've tried searching on the interwebs but I don't find anything that addresses this particular issue.

    And here is the parallel explain plan:
    PLAN_TABLE_OUTPUT
    Plan hash value: 1293981491
    | Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
    | 0 | SELECT STATEMENT | | 81M| 17G| | 19232 (2)| 00:00:01 | | | |
    | 1 | TABLE ACCESS BY INDEX ROWID | MART$SC_SCORES | 1 | 13 | | 3 (0)| 00:00:01 | | | |
    |* 2 | INDEX UNIQUE SCAN | SSCS_SDCC_FK_I | 1 | | | 2 (0)| 00:00:01 | | | |
    | 3 | PX COORDINATOR | | | | | | | | | |
    | 4 | PX SEND QC (RANDOM) | :TQ10017 | 81M| 17G| | 19232 (2)| 00:00:01 | Q1,17 | P->S | QC (RAND) |
    |* 5 | HASH JOIN RIGHT OUTER BUFFERED | | 81M| 17G| | 19232 (2)| 00:00:01 | Q1,17 | PCWP | |
    | 6 | PX RECEIVE | | 41925 | 491K| | 2 (0)| 00:00:01 | Q1,17 | PCWP | |
    | 7 | PX SEND BROADCAST | :TQ10014 | 41925 | 491K| | 2 (0)| 00:00:01 | Q1,14 | P->P | BROADCAST |
    | 8 | PX BLOCK ITERATOR | | 41925 | 491K| | 2 (0)| 00:00:01 | Q1,14 | PCWC | |
    | 9 | INDEX FAST FULL SCAN | I_DWH_ZIP_ZIPCODE_EIDIID | 41925 | 491K| | 2 (0)| 00:00:01 | Q1,14 | PCWP | |
    |* 10 | HASH JOIN | | 81M| 16G| | 19218 (2)| 00:00:01 | Q1,17 | PCWP | |
    | 11 | JOIN FILTER CREATE | :BF0000 | 6414K| 159M| | 806 (2)| 00:00:01 | Q1,17 | PCWP | |
    | 12 | PX RECEIVE | | 6414K| 159M| | 806 (2)| 00:00:01 | Q1,17 | PCWP | |
    | 13 | PX SEND HASH | :TQ10015 | 6414K| 159M| | 806 (2)| 00:00:01 | Q1,15 | P->P | HASH |
    | 14 | PX BLOCK ITERATOR | | 6414K| 159M| | 806 (2)| 00:00:01 | Q1,15 | PCWC | |
    |* 15 | INDEX FAST FULL SCAN | I_DWH_ADDRESS_COMB_ZIP | 6414K| 159M| | 806 (2)| 00:00:01 | Q1,15 | PCWP | |
    | 16 | PX RECEIVE | | 80M| 14G| | 18397 (2)| 00:00:01 | Q1,17 | PCWP | |
    | 17 | PX SEND HASH | :TQ10016 | 80M| 14G| | 18397 (2)| 00:00:01 | Q1,16 | P->P | HASH |
    | 18 | JOIN FILTER USE | :BF0000 | 80M| 14G| | 18397 (2)| 00:00:01 | Q1,16 | PCWP | |
    |* 19 | HASH JOIN RIGHT OUTER BUFFERED | | 80M| 14G| | 18397 (2)| 00:00:01 | Q1,16 | PCWP | |
    | 20 | PX RECEIVE | | 42M| 409M| | 827 (2)| 00:00:01 | Q1,16 | PCWP | |
    | 21 | PX SEND HASH | :TQ10012 | 42M| 409M| | 827 (2)| 00:00:01 | Q1,12 | P->P | HASH |
    | 22 | PX BLOCK ITERATOR | | 42M| 409M| | 827 (2)| 00:00:01 | Q1,12 | PCWC | |
    | 23 | MAT_VIEW ACCESS FULL | MBI$CMN_ACTION_COST | 42M| 409M| | 827 (2)| 00:00:01 | Q1,12 | PCWP | |
    | 24 | PX RECEIVE | | 80M| 14G| | 17549 (1)| 00:00:01 | Q1,16 | PCWP | |
    | 25 | PX SEND HASH | :TQ10013 | 80M| 14G| | 17549 (1)| 00:00:01 | Q1,13 | P->P | HASH |
    |* 26 | HASH JOIN BUFFERED | | 80M| 14G| | 17549 (1)| 00:00:01 | Q1,13 | PCWP | |
    | 27 | PX RECEIVE | | 6312K| 794M| | 7519 (1)| 00:00:01 | Q1,13 | PCWP | |
    | 28 | PX SEND HASH | :TQ10010 | 6312K| 794M| | 7519 (1)| 00:00:01 | Q1,10 | P->P | HASH |
    |* 29 | HASH JOIN RIGHT OUTER BUFFERED | | 6312K| 794M| | 7519 (1)| 00:00:01 | Q1,10 | PCWP | |
    | 30 | VIEW | | 4443K| 80M| | 2125 (2)| 00:00:01 | Q1,10 | PCWP | |
    | 31 | HASH GROUP BY | | 4443K| 33M| 158M| 2125 (2)| 00:00:01 | Q1,10 | PCWP | |
    | 32 | PX RECEIVE | | 10M| 78M| | 950 (1)| 00:00:01 | Q1,10 | PCWP | |
    | 33 | PX SEND HASH | :TQ10007 | 10M| 78M| | 950 (1)| 00:00:01 | Q1,07 | P->P | HASH |
    | 34 | PX BLOCK ITERATOR | | 10M| 78M| | 950 (1)| 00:00:01 | Q1,07 | PCWC | |
    | 35 | TABLE ACCESS FULL | DWH$PHONE | 10M| 78M| | 950 (1)| 00:00:01 | Q1,07 | PCWP | |
    |* 36 | HASH JOIN | | 6312K| 680M| | 5392 (1)| 00:00:01 | Q1,10 | PCWP | |
    | 37 | PX RECEIVE | | 6329K| 36M| | 130 (2)| 00:00:01 | Q1,10 | PCWP | |
    | 38 | PX SEND HASH | :TQ10008 | 6329K| 36M| | 130 (2)| 00:00:01 | Q1,08 | P->P | HASH |
    | 39 | PX BLOCK ITERATOR | | 6329K| 36M| | 130 (2)| 00:00:01 | Q1,08 | PCWC | |
    | 40 | INDEX FAST FULL SCAN | PK_DWH_DEBTOR | 6329K| 36M| | 130 (2)| 00:00:01 | Q1,08 | PCWP | |
    | 41 | PX RECEIVE | | 6312K| 644M| | 5259 (1)| 00:00:01 | Q1,10 | PCWP | |
    | 42 | PX SEND HASH | :TQ10009 | 6312K| 644M| | 5259 (1)| 00:00:01 | Q1,09 | P->P | HASH |
    |* 43 | HASH JOIN RIGHT OUTER BUFFERED| | 6312K| 644M| | 5259 (1)| 00:00:01 | Q1,09 | PCWP | |
    | 44 | PX RECEIVE | | 3689K| 31M| | 4271 (1)| 00:00:01 | Q1,09 | PCWP | |
    | 45 | PX SEND HASH | :TQ10005 | 3689K| 31M| | 4271 (1)| 00:00:01 | Q1,05 | P->P | HASH |
    | 46 | VIEW | | 3689K| 31M| | 4271 (1)| 00:00:01 | Q1,05 | PCWP | |
    | 47 | HASH GROUP BY | | 3689K| 56M| 84M| 4271 (1)| 00:00:01 | Q1,05 | PCWP | |
    | 48 | PX RECEIVE | | 3689K| 56M| | 3653 (1)| 00:00:01 | Q1,05 | PCWP | |
    | 49 | PX SEND HASH | :TQ10003 | 3689K| 56M| | 3653 (1)| 00:00:01 | Q1,03 | P->P | HASH |
    |* 50 | HASH JOIN | | 3689K| 56M| | 3653 (1)| 00:00:01 | Q1,03 | PCWP | |
    | 51 | BUFFER SORT | | | | | | | Q1,03 | PCWC | |
    | 52 | PX RECEIVE | | 3 | 21 | | 1 (0)| 00:00:01 | Q1,03 | PCWP | |
    | 53 | PX SEND BROADCAST | :TQ10000 | 3 | 21 | | 1 (0)| 00:00:01 | | S->P | BROADCAST |
    | 54 | INLIST ITERATOR | | | | | | | | | |
    |* 55 | INDEX RANGE SCAN | I_DWH_PAYMENT_TYPE_EIDIID | 3 | 21 | | 1 (0)| 00:00:01 | | | |
    | 56 | PX BLOCK ITERATOR | | 28M| 242M| | 3648 (1)| 00:00:01 | Q1,03 | PCWC | |
    |* 57 | TABLE ACCESS FULL | DWH$PAYMENT | 28M| 242M| | 3648 (1)| 00:00:01 | Q1,03 | PCWP | |
    | 58 | PX RECEIVE | | 6312K| 589M| | 986 (2)| 00:00:01 | Q1,09 | PCWP | |
    | 59 | PX SEND HASH | :TQ10006 | 6312K| 589M| | 986 (2)| 00:00:01 | Q1,06 | P->P | HASH |
    |* 60 | HASH JOIN | | 6312K| 589M| | 986 (2)| 00:00:01 | Q1,06 | PCWP | |
    | 61 | PX RECEIVE | | 2937 | 172K| | 5 (20)| 00:00:01 | Q1,06 | PCWP | |
    | 62 | PX SEND BROADCAST | :TQ10004 | 2937 | 172K| | 5 (20)| 00:00:01 | Q1,04 | P->P | BROADCAST |
    |* 63 | HASH JOIN BUFFERED | | 2937 | 172K| | 5 (20)| 00:00:01 | Q1,04 | PCWP | |
    | 64 | PX RECEIVE | | 220 | 1540 | | 2 (0)| 00:00:01 | Q1,04 | PCWP | |
    | 65 | PX SEND HASH | :TQ10001 | 220 | 1540 | | 2 (0)| 00:00:01 | Q1,01 | P->P | HASH |
    | 66 | PX BLOCK ITERATOR | | 220 | 1540 | | 2 (0)| 00:00:01 | Q1,01 | PCWC | |
    | 67 | TABLE ACCESS FULL | DWH$MANDATOR | 220 | 1540 | | 2 (0)| 00:00:01 | Q1,01 | PCWP | |
    | 68 | PX RECEIVE | | 2937 | 152K| | 2 (0)| 00:00:01 | Q1,04 | PCWP | |
    | 69 | PX SEND HASH | :TQ10002 | 2937 | 152K| | 2 (0)| 00:00:01 | Q1,02 | P->P | HASH |
    | 70 | PX BLOCK ITERATOR | | 2937 | 152K| | 2 (0)| 00:00:01 | Q1,02 | PCWC | |
    | 71 | TABLE ACCESS FULL | DWH$PACKAGE | 2937 | 152K| | 2 (0)| 00:00:01 | Q1,02 | PCWP | |
    | 72 | PX BLOCK ITERATOR | | 6312K| 228M| | 980 (1)| 00:00:01 | Q1,06 | PCWC | |
    | 73 | TABLE ACCESS FULL | DWH$CASE | 6312K| 228M| | 980 (1)| 00:00:01 | Q1,06 | PCWP | |
    | 74 | PX RECEIVE | | 78M| 4199M| | 10016 (1)| 00:00:01 | Q1,13 | PCWP | |
    | 75 | PX SEND HASH | :TQ10011 | 78M| 4199M| | 10016 (1)| 00:00:01 | Q1,11 | P->P | HASH |
    | 76 | PX BLOCK ITERATOR | | 78M| 4199M| | 10016 (1)| 00:00:01 | Q1,11 | PCWC | |
    |* 77 | TABLE ACCESS FULL | DWH$ACTION | 78M| 4199M| | 10016 (1)| 00:00:01 | Q1,11 | PCWP | |
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • Can I use Parallel execution for Global Temporary table within SP and How

    Dear Gurus,
    I have Global temporary table as below
    Create global temporary table Temp_Emp
    empno number,
    ename varchar2(20),
    deptno number
    ) on commit preserve rows;
    During processing I insert the data into this table and then fire query on Temp_Emp, get the data and pass it to front end.
    The SP as shown below
    Create or replace procedure get_emp_data
    empid in number,
    emp_detail out RefCsr -- Ref cursor
    as
    begin
    -- some code here
    open emp_detail for
    select *
    from Temp_Emp
    where empno = empid;
    end get_emp_data;
    Can use Parallel Query execution on Temp_Emp table and how ?
    i.e. do need to explicitly use parallel construct in query or is it default.
    Because I have many SQL like above (on global temporary tables) within Stored Procedures.
    Can anybody give me any suggestion.
    Thanking in Advance
    Sanjeev

    How come you are populating a temporary table and then opening a cursor on this temporary table for the front end to use?
    Couldn't you presumably just form a query out of the code you use to populate the temporary table? This is the recommended approach in Oracle.

  • How to run multiple CodedUI Ordered Tests over multiple Test Agents for parallel execution using Test Controller

    we are using VS 2013, I need to run multiple Coded UI Ordered Tests in parallel on different agents.
    My requirement :
    Example:   I have 40 Coded UI Test scripts in single solution/project. i want to run in different OS environments(example 5 OS ).  I have created 5 Ordered tests with the same 40 test cases. 
    I have one Controller machine and 5 test agent machines. Now I want my tests to be distributed in a way that every agent gets 1 Ordered test to execute. 
    Machine_C = Controller (Controls Machine_1,2,3,4,5)
    Machine_1 = Test Agent 1 (Should execute Ordered Test 1 (ex: OS - WIN 7) )
    Machine_2 = Test Agent 2 (Should execute Ordered Test 2 (ex:
    OS - WIN 8) )
    Machine_3 = Test Agent 3 (Should execute Ordered Test 3
    (ex: OS - WIN 2008 server)  )
    Machine_4 = Test Agent 4 (Should execute Ordered Test 4 (ex:
    OS - WIN 2012 server) )
    Machine_5 = Test Agent 5 (Should execute Ordered Test 5 (ex:
    OS - WIN 2003 server) )
    I have changed the  “MinimumTestsPerAgent” app setting value
    as '1' in controller’s configuration file (QTController.exe.config).
    When I run the Ordered tests from the test explorer all Test agent running with each Ordered test and showing the status as running. but with in the 5 Test Agents only 2 Agents executing the test cases remaining all 3 agents not executing the test cases but
    status showing as 'running' still for long time (exp: More then 3 hr) after that all so  its not responding. 
    I need to know how I can configure my controller or how I can tell it to execute these tests in parallel on different test agents. This will help me reducing the script execution time. 
     I am not sure what steps I am missing. 
    It will be of great help if someone can guide me how this can be achieved.
    -- > One more thing Can I Run one Coded UI Ordered Test on One Specific Test Agent?
    ex: Need to run ordered Test 1 in Win 7 OS (Test Agent 1) only.
    Thanks in Advance.

    Hi Divakar,
    Thank you for posting in MSDN forum.
    As far as I know, we cannot specify coded UI ordered test run on specific test agent. And it is mainly that test controller determine which coded UI ordered test assign to which test agent.
    Generally, I know that if we want to run multiple CodedUI Ordered Tests over multiple Test Agents for parallel execution using Test Controller.
    We will need to change the MinimumTestsPerAgent property to 1 in the test controller configuration file (QTControllerConfig.exe.config) as you said.
    And then we will need to change the bucketSize number of tests/number of machines in the test settings.
    For more information about how to set this bucketSize value, please refer the following blog.
    http://blogs.msdn.com/b/aseemb/archive/2010/08/11/how-to-run-automated-tests-on-different-machines-in-parallel.aspx
    You can refer this Jack's suggestion to run your coded UI ordered test in lab Environment or load test.
    https://social.msdn.microsoft.com/Forums/vstudio/en-US/661e73da-5a08-4c9b-8e5a-fc08c5962783/run-different-codedui-tests-simultaneously-on-different-test-agents-from-a-single-test-controller?forum=vstest
    Best Regards,
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Direct Execution of query having Unicode Characters

    Direct Execution of query having Unicode Characters
    Hi All,
    In my application I am firing a Select Query having Unicode characters in Where Clause under condition like '%%'
    to Oracle 10g DB from a Interface written in VC6.0...
    Application funcationality is working fine for ANSI characters and getting the result of Select properly.
    But in case of Unicode Characters in VC it says 'No Data Found'.
    I know where the exact problem is in my code. But not getting the exact solution for resolving my issue...
    Here with I am adding my code snippet with the comments of what i understand and what i want to understand...
    DBPROCESS Structure used in the functions,_
    typedef struct
    HENV hEnv;
    HDBC hDbc;
    HSTMT hStmt;
    char CmdBuff[[8192]];
    char RpcParamName[[255]];
    SQLINTEGER SpRetVal;
    SQLINTEGER ColIndPtr[[255]];
    SQLINTEGER ParamIndPtr[[255]];
    SQLPOINTER pOutputParam;
    SQLUSMALLINT CurrentParamNo;
    SQLUSMALLINT OutputParamNo;
    SQLUSMALLINT InputParamCtr;
    SQLINTEGER BatchStmtNo;
    SQLINTEGER CmdBuffLen;
    short CurrentStmtType;
    SQLRETURN LastStmtRetcode;
    SQLCHAR SqlState[[10]];
    int ShowDebug;
    SQLCHAR* ParameterValuePtr;
    int ColumnSize;
    DBTYPE DatabaseType;
    DRVTYPE OdbcDriverType;
    BLOCKBIND *ptrBlockBind;
    } DBPROCESS;
    BOOL CDynamicPickList::GetResultSet(DBPROCESS *pDBProc, bstrt& pQuery, short pNumOdbcBindParams, COdbcBindParameter pOdbcBindParams[], CQueryResultSet& pQueryResultSet)
         int               lRetVal,
                        lNumRows;
         bstrt               lResultSet;
         wchar_t               lColName[[256]];     
         SQLUINTEGER          lColSize;
         SQLSMALLINT          lColNameLen,
                        lColDataType,
                        lColNullable,
                        lColDecDigits,                         
                        lNumResultCols;
         wchar_t               lResultRow[[32]][[256]];
    OdbcCmdW(pDBProc, (wchar_t *)pQuery); *//Query is perfectly fine till this point all the Unicode Characters are preserved...*
         if ( OdbcSqlExec(pDBProc) != SUCCEED )
              LogAppError(L"Error In Executing Query %s", (wchar_t *)pQuery);          
              return FALSE;
    Function OdbcCmdW_
    //From this point have no idea what is exactly happening to the Unicode Characters...
    //Actually i have try printing the query that gets stored in CmdBuff... it show junk for Unicode Characters...
    //CmdBuff is the Char type Variable and hence must be showing junk for Unicode data
    //I have also try printing the HexaDecimal of the query... I m not getting the proper output... But till i Understand, I think the HexaDecimal Value is perfect & preserved
    //After the execution of this function the call goes to OdbcSqlExec where actual execution of qurey takes place on DB
    SQLRETURN OdbcCmdW( DBPROCESS p_ptr_dbproc, WCHAR      p_sql_command )
         char *p_sql_commandMBCS;
         int l_ret_val;
         int l_size = wcslen(p_sql_command);
         int l_org_length,
    l_newcmd_length;
    p_sql_commandMBCS = (char *)calloc(sizeof(char) * MAX_CMD_BUFF,1);
    l_ret_val = WideCharToMultiByte(
                        CP_UTF8,
                        NULL,                         // performance and mapping flags
                        p_sql_command,          // wide-character string
                        -1,                         // number of chars in string
                        (LPSTR)p_sql_commandMBCS,// buffer for new string
                        MAX_CMD_BUFF,                    // size of buffer
                        NULL, // default for unmappable chars
                        NULL // set when default char used
    l_org_length = p_ptr_dbproc->CmdBuffLen;
    l_newcmd_length = strlen(p_sql_commandMBCS);
    p_ptr_dbproc->CmdBuff[[l_org_length]] = '\0';
    if( l_org_length )
    l_org_length++;
    if( (l_org_length + l_newcmd_length) >= MAX_CMD_BUFF )
    if( l_org_length == 0 )
    OdbcReuseStmtHandle( p_ptr_dbproc );
    else
    strcat(p_ptr_dbproc->CmdBuff, " ");
         l_org_length +=2;
    strcat(p_ptr_dbproc->CmdBuff, p_sql_commandMBCS);
    p_ptr_dbproc->CmdBuffLen = l_org_length + l_newcmd_length;
    if (p_sql_commandMBCS != NULL)
         free(p_sql_commandMBCS);
    return( SUCCEED );
    Function OdbcSqlExec_
    //SQLExecDirect Requires data of Unsigned Char type. Thus the above process is valid...
    //But i am not getting what is the exact problem...
    SQLRETURN OdbcSqlExec( DBPROCESS *p_ptr_dbproc )
    SQLRETURN l_ret_val;
    SQLINTEGER l_db_error_code=0;
         int     i,l_occur = 1;
         char     *token_list[[50]][[2]] =
    {     /*"to_date(","convert(datetime,",
                                       "'yyyy-mm-dd hh24:mi:ss'","1",*/
                                       "nvl","isnull" ,
                                       "to_number(","convert(int,",
                                       /*"to_char(","convert(char,",*/
                                       /*"'yyyymmdd'","112",
                                       "'hh24miss'","108",*/
                                       "sysdate",     "getdate()",
                                       "format_date", "dbo.format_date",
                                       "format_amount", "dbo.format_amount",
                                       "to_char","dbo.to_char",
                                       "to_date", "dbo.to_date",
                                       "unique","distinct",
                                       "\0","\0"};
    char          *l_qry_lwr;  
    l_qry_lwr = (char *)calloc(sizeof(char) * (MAX_CMD_BUFF), 1);
    l_ret_val = SQLExecDirect( p_ptr_dbproc->hStmt,
    (SQLCHAR *)p_ptr_dbproc->CmdBuff,
    SQL_NTS );
    switch( l_ret_val )
    case SQL_SUCCESS :
    case SQL_NO_DATA :
    ClearCmdBuff( p_ptr_dbproc );
    p_ptr_dbproc->LastStmtRetcode = l_ret_val;
    if (l_qry_lwr != NULL)
         free(l_qry_lwr);
    return( SUCCEED );
    case SQL_NEED_DATA :
    case SQL_ERROR :
    case SQL_SUCCESS_WITH_INFO :
    case SQL_STILL_EXECUTING :
    case SQL_INVALID_HANDLE :
    I do not see much issue in the code... The process flow is quite valid...
    But now i am not getting whether,
    1) storing the string in CmdBuff is creating issue
    2) SQLExecDirect si creating an issue(and some other function can be used here)...
    3) Odbc Driver creating an issue and want some Client Setting to be done(though i have tried doing some permutation combination)...
    Any kind of help would be appreciated,
    Thanks & Regards,
    Pratik
    Edited by: prats on Feb 27, 2009 12:57 PM

    Hey Sergiusz,
    You were bang on target...
    Though it took some time for me to resolve the issue...
    to use SQLExecDirectW I need my query in SQLWCHAR *, which is stored in char * in my case...
    So i converted the incoming query using MultibyteToWideChar Conversion with CodePage as CP_UTF8 and
    then passed it on to SQLExecDirectW...
    It solved my problem
    Thanks,
    Pratik...
    Edited by: prats on Mar 3, 2009 2:41 PM

  • Parallel execution of multiple scripts

    Hi All,
    I understand that by using parallel hint we can achieve parallel execution of the queries(insert/update/delete).
    For my today's question I would like know if Parallelism can be achieved for the following scenario.
    I have a script with an insert-select statement and multiple merge statements and few update statements all on the same table.
    I have to run this script 12 times on the same table, once for each month of the year.
    Currently we run for Jan (where record_date = '201001') commit it, and then run for Feb, and so on.
    Can all the 12 month be run in parallel. One way I can think of is create 12 different scripts and kick them of by opening 12 different SQL Plus sessions (all on the same table).
    Is there a better way of doing this ?
    Note: each month data will not effect the other other month data.
    Regards,
    Aj

    Creating 12 different scripts would be a sub-optimal solution, and a maintenance nightmare. Creating 1 parametrized script and call that 12 times with different parameters would be slightly better.
    Creating 1 stored procedure with parameters, and run that procedure in the scheduler 12 times would still be better, as everything runs at the server side only.
    Your description is deliberately vague, so the possibility of deadlock can not be excluded.
    Sybrand Bakker
    Senior Oracle DBA

  • Retrieve data partially without re-execution of query

    I am using Visual Basic.NET for programming.
    Database is Oracle 9i Enterprise Edition Release 9.0.1.1.1
    Platform is Windows XP Professional.
    I am going to execute an Oracle Query (or Stored Procedure) from my VB.NET environment.
    This query returns 1,000,000 records and takes lots of time to be executed.
    I found a way in .NET to fill DataSet with specific number of records. For Example I can show 100 records from position 10 to position 110 by this code:
    MyDataAdapter.Fill (MyDataset, 10, 100,"TEST")
    But my problem happens when I want to show 100 records from position 900,000 to position 900,100 by this code:
    MyDataAdapter.Fill (MyDataset, 900000, 100,"TEST")
    This line takes lots of times to be executed.
    I think each time I run the above line in VB.NET, the query executes once again. And this is not what I expect.
    Besides I used Microsoft.NET Oracle Client too, but still have problem.
    Would you please kindly help me to find a way to retrieve data partially without re-execution of query?
    Thanks for co-operation in advance.

    I am using Visual Basic.NET for programming.
    Database is Oracle 9i Enterprise Edition Release 9.0.1.1.1
    Platform is Windows XP Professional.
    I am going to execute an Oracle Query (or Stored Procedure) from my VB.NET environment.
    This query returns 1,000,000 records and takes lots of time to be executed.
    I found a way in .NET to fill DataSet with specific number of records. For Example I can show 100 records from position 10 to position 110 by this code:
    MyDataAdapter.Fill (MyDataset, 10, 100,"TEST")
    But my problem happens when I want to show 100 records from position 900,000 to position 900,100 by this code:
    MyDataAdapter.Fill (MyDataset, 900000, 100,"TEST")
    This line takes lots of times to be executed.
    I think each time I run the above line in VB.NET, the query executes once again. And this is not what I expect.
    Besides I used Microsoft.NET Oracle Client too, but still have problem.
    Would you please kindly help me to find a way to retrieve data partially without re-execution of query?
    Thanks for co-operation in advance.

  • Parallel execution in a web template

    We have a web template with several queries. It is possible execute our queries with parallel execution?
    Thanks !!

    Hi Dani,
    currently all DP's are executed sequentially, because in general it would be possible that the dataproviders have influence on each other.
    i heard that sap is building a prototyp to allow parallelization in BEX web 7.0. But currently there is no release date known, May this will come with some enhancement package.
    You should consider the Functional enhancement schedule on http://service.sap.com/bi. If this feature will be released sometime, it will be listed there.
    best regards,
    Kai

  • Parallel execution of multiple test cases.

    Does flex unit 4.x version supports for parallel execution of multiple test cases?
    Any help will be greatly appreciated.

    No.
    Flash Player and AIR are single-threaded virtual machines. The only parallel execution one could do is during asynchronous tests, but we do not support that presently for a variety of reasons.
    Mike

Maybe you are looking for

  • How do I change the line color in a line graph?

    I used Illustrator to create a line graph. (Not my desired option as I normally import them from R and then edit, but the textbook wanted to show that you can create graphs and edit them in Illustrator) Anyway, I did all of the editing except that I

  • Cash Book, Bank Book & Purchase Register

    Hi ABAP Gurus I want to print Cash Book, Bank Book & Purchase Register from my SAP ERP System. I do not have any ABAP Programmer for which reason I cannot develop any ABAP Program for the same. Can any one of you send me the ABAP Programs to print Ca

  • Lost iTunes music thru pc crash

    is there a way to get already purchased iTunes music back (free of charge of course) after a crash which forced me to completely restore my pc, losing all my files?

  • Javascript bookmark dialogs stopped working

    I have some bookmarks on my Bookmarks Toolbar whose address is a Javascript snippet:<br /> <br /> <pre><nowiki>javascript:Qr=document.getSelection();if(!Qr){void(Qr=prompt('Enter subject to lookup in Wikipedia:',''))}if(Qr)location.href='http://en.wi

  • NetStream.Publish.BadName

    For some reason my Internet connection between FME and FMS is not stable. When connection with my live stream is dropped I can't reconnect to FMS and I'm getting " NetStream.Publish.BadName" error. It is because previous session (project) exists for