Optimizer ignoring the advice? or instant messages, something wrong...

I have an update that updates records of 500-600 k. This is part of the very sensitive process in order to lock the execution plan im using tips. Advice was my last resort. Anyway, when I explained the plan he uses HASH JOIN. It uses in the production as well. but in the load test, explain plan shows the JOIN by HASH, but when running, I think that it displays the variable bing and don't LOOP IMBRIQUEE? don't know why? If I remove hint USE_HASH explain shows nested loop... I created outline to see what oracle will do, and using its similar (same not) advice,... I use tips in the wrong way or optimizer something wrong? If the plan uses HASHJOIN its been in 10 minutes if this plan uses the NESTEDLOOP we had to kill the process after 30-40 minutes. What is happening in our environment loadtest, works in prod (wants to say that there is not a problem, it's not today)


UPDATE
(SELECT / * +)
QB_NAME (MAIN_EDR)
USE_HASH (@SUBQ_MMT mmt0)
ATTACK (rec0 mmt0)
INDEX_RS (@SUBQ_MMT mmt0 PSP_MONEY_MOVEMENT_TRANSAC_FK3)
INDEX_RS (rec0 PSP_ENTRY_DETAIL_RECORD_I2)
UNNEST (@SUBQ_MMT)
MERGE (@MAIN_EDR)
*/
REC0. ENTRY_DETAIL_RECORD_SEQ,
REC0.trace_number,
REC0. N_A_C_H_A_FILE_FK,
REC0. RECORD_DATA,
REC0. Version
REC0. MODIFIER_ID,
REC0. MODIFIED_DATE
OF PSP_ENTRY_DETAIL_RECORD rec0
WHERE
REC0. N_A_C_H_A_FILE_FK is null
AND rec0.initiation_date =: p_offload_date
- AND REC0. RECORD_DATA IS NOT NULL
AND rec0. N_A_C_H_A_FILE_TYPE =: p_nacha_file_type
AND EXISTS (SELECT / * + qb_name (SUBQ_MMT) * /)
' T '
OF PSP_MONEY_MOVEMENT_TRANSACTION mmt0
WHERE REC0. MONEY_MOVEMENT_TRANSACTION_FK = MMT0. MONEY_MOVEMENT_TRANSACTION_SEQ
AND mmt0.offload_batch_fk =: p_offload_batch_id)
ORDER BY rec0. LEGAL_NAME, rec0.COMPANY_fk, REC0. N_A_C_H_A_BATCH_TYPE, REC0. RECORD_DATA, REC0. AMOUNT, REC0. ENTRY_DETAIL_RECORD_SEQ
) CBC
SET
TRACE_NUMBER = decode (nvl(record_data,'0'),'0 ', null, seq_trace_number.nextval);
N_A_C_H_A_FILE_FK =: v_nacha_file_id,
VERSION = VERSION + 1,
MODIFIER_ID =: p_user_id,
MODIFIED_DATE =: v_utc_date


SQL > SELECT * FROM table (DBMS_XPLAN. DISPLAY);
Hash value of plan: 2695729968



----------------------------------------------------------------------------------------------------
| ID | Operation | Name | Lines | Bytes | TempSpc | Cost (% CPU). Time | Pstart. Pstop |
----------------------------------------------------------------------------------------------------
| 2 ¾ UPDATE STATEMENT. 13004. 4330K | 31595 (1) | 00:06:20 |
| 1. UPDATE | PSP_ENTRY_DETAIL_RECORD |
| 2. SEQUENCE | SEQ_TRACE_NUMBER |
| 3. SORT ORDER BY | 13004. 4330K | 9064K | 31595 (1) | 00:06:20 |
|* 4 | SEMI HASH JOIN | 13004. 4330K | 3560K | 30644 (1) | 00:06:08 |
| 5. RANGE OF SINGLE PARTITION | 13004. 3403K | 20532 (1) | 00:04:07 | KEY |
|* 6 | TABLE ACCESS BY LOCAL INDEX ROWID | PSP_ENTRY_DETAIL_RECORD | 13004. 3403K | 20532
|* 7 | INDEX RANGE SCAN | PSP_ENTRY_DETAIL_RECORD_I2 | 429K | | 1772 (1) | 00:0
| 8. TABLE ACCESS BY INDEX ROWID | PSP_MONEY_MOVEMENT_TRANSACTION | 194K | 13 M |
|* 9 | INDEX RANGE SCAN | PSP_MONEY_MOVEMENT_TRANSAC_FK3 | 194K | | 2168 (1) | 0
----------------------------------------------------------------------------------------------------

Information of predicates (identified by the operation identity card):
---------------------------------------------------

4 - access("REC0".") MONEY_MOVEMENT_TRANSACTION_FK "= 'MMT0'." MONEY_MOVEMENT_TRANSACTION_SEQ')
6 - filter("REC0".") N_A_C_H_A_FILE_FK' IS NULL AND 'REC0 '. ' N_A_C_H_A_FILE_TYPE ' =: P_NACHA_FILE_TYPE.
7 - access("REC0".") INITIATION_DATE '= TO_TIMESTAMP (:P_OFFLOAD_DATE)).
9 - access("MMT0".") OFFLOAD_BATCH_FK "(=:P_OFFLOAD_BATCH_ID)"

24 selected lines.





But during the actual performance, it changes the nested loop join...




-----------------------------------------------------------------------------------------------------------------------
| ID | Operation | Name | E - lines. OMem | 1Mem | Used Mem.
-----------------------------------------------------------------------------------------------------------------------
| 1. UPDATE | PSP_ENTRY_DETAIL_RECORD |
| 2. SEQUENCE | SEQ_TRACE_NUMBER |
| 3. SORT ORDER BY | 1. 73728 | 73728 |
|* 4 | TABLE ACCESS BY LOCAL INDEX ROWID | PSP_ENTRY_DETAIL_RECORD | 1 | | | |
| 5. NESTED LOOPS | 1 | | | |
| 6. UNIQUE FATE | 1. 73728 | 73728 |
| 7. TABLE ACCESS BY INDEX ROWID | PSP_MONEY_MOVEMENT_TRANSACTION | 1 | | | |
|* 8 | INDEX RANGE SCAN | PSP_MONEY_MOVEMENT_TRANSAC_FK3 | 1 | | | |
| 9. RANGE OF SINGLE PARTITION | 226K | |
| * 10 | INDEX RANGE SCAN | PSP_ENTRY_DETAIL_RECORD_I2 | 226K | |
-----------------------------------------------------------------------------------------------------------------------

AFTER THE CREATION OF SKETCH



SQL > SELECT * from user_outline_hints;

NAME NŒUD STADIUM JOIN_POS HINT
------------------------------ ---------- ---------- ---------- ------------------------------------
BDU 1 1 0 USE_HASH (@"SALT$ 798CEC2A" "MMT0"@"SUBQ_MMT")
BDU 1 1 0 LEADING (@"SALT$ 798CEC2A" "REC0"@"MAIN_EDR" "MMT0"@"SUBQ_MMT")
1 1 2 INDEX_RS_ASC BDUS (@"SALT$ 798CEC2A" "MMT0"@"SUBQ_MMT" ("PSP_MONEY_MOVEMENT_TRANSACTI)
1 1 1 INDEX_RS_ASC BDUS (@"SALT$ 798CEC2A" "REC0"@"MAIN_EDR" ("PSP_ENTRY_DETAIL_RECORD".) "EN
BDU 1 1 0 OUTLINE(@"MAIN_EDR")
BDU 1 1 0 OUTLINE(@"UPD$1")
BDU 1 1 0 OUTLINE(@"SUBQ_MMT")
BDU 1 1 0 MERGE(@"MAIN_EDR")
BDU 1 1 0 OUTLINE(@"SEL$0E53DE07")
BDU 1 1 0 UNNEST(@"SUBQ_MMT")
BDU 1 1 0 OUTLINE_LEAF(@"SEL$798CEC2A")

NAME NŒUD STADIUM JOIN_POS HINT
------------------------------ ---------- ---------- ---------- ------------------------------------
1 1 ALL_ROWS BDUS 0
BDU 1 1 0 OPTIMIZER_FEATURES_ENABLE ('10.2.0.3')
BDU 1 1 0 IGNORE_OPTIM_EMBEDDED_HINTS

14 selected lines.

Published by: user8846248 on December 17, 2009 12:18

Published by: user8846248 on December 17, 2009 12:20

I guess you have a point there. I always had the feeling that boards are very little documented. If they had the proper documentation, people won't make some common mistakes. I understand better advice after reading your blog/book is better than the documentation. Thanks for the good work and please continue.

Tags: Database

Similar Questions

  • Is it possible to play different sounds for the emails and instant messages?

    Hello

    I was wondering if it was possible to play different sounds for the emails and instant messages. I use Thunderbird quite often with emails and instant messages imported from Gtalk.

    I think it would be very convenient to be able to distinguish the two sounds, because they do not involve the same things.

    Thank you very much.

    Olivier Hubert.

    There are only six modules of cat, three of them are on notifications. Choose the one you think will do the job for you. https://addons.Mozilla.org/en-us/Thunderbird/Extensions/chat/?sort=popular

  • The case of the history of instant messaging and chat that disappears

    I use Skype desktop client on my Windows 7 pc with no problems for a long time. Since a few weeks back, I met a problem when connected: a message flashes on my screen and active become Skype icon in the taskbar, but when I go to the client computer, it does not display the message or any chat history. The text "see the messages of" is visible, but it's empty. The only way to receive messages is to have the sender of the specific group or contact highlighted in the application.

    Messages and history indicate with precision on my iPad version of Skype.

    I use the latest version of Skype (6.10) and I did not any changes to the settings of my story (forever).

    I ran the SkypeLogView.exe as suggested in previous conversations and it has not registered any historical cats since November 4.

    Please help me to restore the correct settings for the receipt of messages and to maintain history in the desktop client for now and in the future. I don't like lost history.

    Have you recently received a file named "invoice - pdf.exe" or similar?

    http://community.Skype.com/T5/security-privacy-trust-and/invoice-xxxxxx-PDF-virus/m-p/2057677#M23667

  • view is ignoring the advice

    I use Oracle 10 g R2.

    I want advice to a view, but they are not honored.

    CREATE VIEW V AS
         SELECT DT.UNIQUE_ID,
                DT.INFO_ID AS BATCH_REFERENCE,
                DT.INSTRUCTION_ID AS TR_REFERENCE,
                DT.TOTAL_TRANSACTION_NO AS NO_OF_TRANSACTIONS,
           FROM    MY_PAYMENT DT JOIN MY_STATUS ST
                 ON DT.BATCH_STATUS = ST.STATUS;
    

    Now when I run the query below, then tips are ignored. However if I switch the indicator INDEX directly in the SELECT above in the view definition, tips are honored.

    SELECT /*+ INDEX(V.DT) */ * FROM V
    

    Can you help me?

    Elya wrote:

    So, what is the purpose underlying using a HINT to force an index scan?

    In fact, the work of collecting statistics takes more than 16 hours to complete. The reason why most of the time, the generated plan are not optimized to the lack of up-to-date statistics.

    In this case try to sidestep the real problem for help is not a good idea for me. Any ways, you will need to use the GLOBAL INDICATION when you use the VIEW.

    Oracle it documented in detail. You can read it here

    http://docs.Oracle.com/CD/B19306_01/server.102/b14211/hintsref.htm#i22065

    Below is a simple example using the table EMP and DEPT.

    Here's the view

    SQL > create view v
    2 as
    3 select d.dname, e.ename
    e emp 4 join dept d
    5 we e.deptno = d.deptno;

    Created view.

    Now plan for the query with and without suspicion

    SQL > explain the plan for
    2. Select e.ename, d.dname from emp e join dept d e.deptno = d.deptno;

    He explained.

    SQL > select * from table (dbms_xplan.display);

    PLAN_TABLE_OUTPUT
    ----------------------------------------------------------------------------------------
    Hash value of plan: 14164142

    ----------------------------------------------------------------------------------------
    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |
    ----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT |         |    11.   242.     4 (25) | 00:00:01 |
    |   1.  THE MERGE JOIN.         |    11.   242.     4 (25) | 00:00:01 |
    |   2.   TABLE ACCESS BY INDEX ROWID | DEPT |     4.    52.     1 (0) | 00:00:01 |
    |   3.    INDEX SCAN FULL | DEPT_PK |     4.       |     1 (0) | 00:00:01 |
    |*  4 |   JOIN TYPE.         |    11.    99.     3 (34) | 00:00:01 |
    |   5.    TABLE ACCESS FULL | EMP |    11.    99.     2 (0) | 00:00:01 |
    ----------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):
    ---------------------------------------------------

    4 - access("E".") DEPTNO "=" D ". ("' DEPTNO ')
    filter ("E". "DEPTNO"="D" "." " DEPTNO')

    18 selected lines.

    SQL > explain the plan for
    2 Select / * + INDEX (emp_pk e) * / e.ename, d.dname e emp join dept d on e.deptno = d.deptno;

    He explained.

    SQL > select * from table (dbms_xplan.display);

    PLAN_TABLE_OUTPUT
    -----------------------------------------------------------------------------------------
    Hash value of plan: 2399836226

    -----------------------------------------------------------------------------------------
    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |
    -----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT |         |    11.   242.     3 (34) | 00:00:01 |
    |   1.  THE MERGE JOIN.         |    11.   242.     3 (34) | 00:00:01 |
    |   2.   TABLE ACCESS BY INDEX ROWID | DEPT |     4.    52.     1 (0) | 00:00:01 |


    |   3.    INDEX SCAN FULL | DEPT_PK |     4.       |     1 (0) | 00:00:01 |
    |*  4 |   JOIN TYPE.         |    11.    99.     2 (50) | 00:00:01 |
    |   5.    TABLE ACCESS BY INDEX ROWID | EMP |    11.    99.     1 (0) | 00:00:01 |
    |   6.     INDEX SCAN FULL | EMP_PK |    11.       |     1 (0) | 00:00:01 |
    -----------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):
    ---------------------------------------------------

    4 - access("E".") DEPTNO "=" D ". ("' DEPTNO ')
    filter ("E". "DEPTNO"="D" "." " DEPTNO')

    19 selected lines.

    Now plan for the query on the view with and without suspicion

    SQL > explain the plan for
    2 Select * from v;

    He explained.

    SQL > select * from table (dbms_xplan.display);

    PLAN_TABLE_OUTPUT
    ----------------------------------------------------------------------------------------
    Hash value of plan: 14164142

    ----------------------------------------------------------------------------------------
    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |
    ----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT |         |    11.   242.     4 (25) | 00:00:01 |
    |   1.  THE MERGE JOIN.         |    11.   242.     4 (25) | 00:00:01 |
    |   2.   TABLE ACCESS BY INDEX ROWID | DEPT |     4.    52.     1 (0) | 00:00:01 |
    |   3.    INDEX SCAN FULL | DEPT_PK |     4.       |     1 (0) | 00:00:01 |
    |*  4 |   JOIN TYPE.         |    11.    99.     3 (34) | 00:00:01 |
    |   5.    TABLE ACCESS FULL | EMP |    11.    99.     2 (0) | 00:00:01 |
    ----------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):
    ---------------------------------------------------

    4 - access("E".") DEPTNO "=" D ". ("' DEPTNO ')
    filter ("E". "DEPTNO"="D" "." " DEPTNO')

    18 selected lines.

    We now use GLOBAL TABLE HINT

    SQL > explain the plan for
    2 select / * + INDEX (@SEL$ 2 emp_pk e) * / * v;

    He explained.

    SQL > select * from table (dbms_xplan.display);

    PLAN_TABLE_OUTPUT
    -----------------------------------------------------------------------------------------
    Hash value of plan: 2399836226

    -----------------------------------------------------------------------------------------
    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |
    -----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT |         |    11.   242.     3 (34) | 00:00:01 |
    |   1.  THE MERGE JOIN.         |    11.   242.     3 (34) | 00:00:01 |
    |   2.   TABLE ACCESS BY INDEX ROWID | DEPT |     4.    52.     1 (0) | 00:00:01 |
    |   3.    INDEX SCAN FULL | DEPT_PK |     4.       |     1 (0) | 00:00:01 |
    |*  4 |   JOIN TYPE.         |    11.    99.     2 (50) | 00:00:01 |
    |   5.    TABLE ACCESS BY INDEX ROWID | EMP |    11.    99.     1 (0) | 00:00:01 |
    |   6.     INDEX SCAN FULL | EMP_PK |    11.       |     1 (0) | 00:00:01 |
    -----------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):
    ---------------------------------------------------

    4 - access("E".") DEPTNO "=" D ". ("' DEPTNO ')
    filter ("E". "DEPTNO"="D" "." " DEPTNO')

    19 selected lines.

    SQL >

  • "Read" notice on the application of instant messaging, a question?

    IM Apple allows you to send a notice as a snapshot message was 'delivered '. I understand what it means. Recently, the opinion has changed to 'read '. I do not understand how the IM application knows whether or not the message has been read. I usually leave my IM window open when I use this app. It is therefore impossible to know whether or not I've read a message. I guess that more than others to do this. So that the 'read' notice means?

    Messages has an option in the preferences/Messages/accounts, which allows the recipient to send read receipts.

  • I want the cc2015 of ch, but something wrong! QAQ

    Exit Code: 34 Please see specific errors below for troubleshooting. For example,  ERROR:   -------------------------------------- Summary --------------------------------------  - 1 fatal error(s), 0 error(s)    FATAL: Payload 'Camera Profiles Installer 9.0.0.23 {3F023875-4A52-4605-9DB6-A88D4A813E8D}' information not found in Media_db.  ------------------------------------------------------------------------------------- 

    Maybe this link helps: Exit Code: 34

  • ignore the global settings of advice

    Hi all

    I know that I can put "ignore the advice" for the current session.

    Is it possible to put it globally for all sessions?

    ALTER session set '_optimizer_ignore_hints' = TRUE;

    works for me, at the level of the session or the instance:

    orclz > alter system set '_optimizer_ignore_hints' = false;

    Modified system.

    orclz > select / * + full (emp) * / * from emp where empno = 1000;

    no selected line

    Execution plan

    ----------------------------------------------------------

    Hash value of plan: 3956160932

    --------------------------------------------------------------------------

    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |

    --------------------------------------------------------------------------

    |   0 | SELECT STATEMENT |      |     1.    38.     3 (0) | 00:00:01 |

    |*  1 |  TABLE ACCESS FULL | EMP |     1.    38.     3 (0) | 00:00:01 |

    --------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):

    ---------------------------------------------------

    1 - filter ("EMPNO" = 1000)

    orclz > alter system set '_optimizer_ignore_hints' = TRUE;

    Modified system.

    orclz > select * from emp where empno = 1000;

    no selected line

    Execution plan

    ----------------------------------------------------------

    Hash value of plan: 2949544139

    --------------------------------------------------------------------------------------

    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |

    --------------------------------------------------------------------------------------

    |   0 | SELECT STATEMENT |        |     1.    38.     1 (0) | 00:00:01 |

    |   1.  TABLE ACCESS BY INDEX ROWID | EMP |     1.    38.     1 (0) | 00:00:01 |

    |*  2 |   INDEX UNIQUE SCAN | PK_EMP |     1.       |     0 (0) | 00:00:01 |

    --------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):

    ---------------------------------------------------

    2 - access ("EMPNO" = 1000)

    orclz > select / * + full (emp) * / * from emp where empno = 1000;

    no selected line

    Execution plan

    ----------------------------------------------------------

    Hash value of plan: 2949544139

    --------------------------------------------------------------------------------------

    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |

    --------------------------------------------------------------------------------------

    |   0 | SELECT STATEMENT |        |     1.    38.     1 (0) | 00:00:01 |

    |   1.  TABLE ACCESS BY INDEX ROWID | EMP |     1.    38.     1 (0) | 00:00:01 |

    |*  2 |   INDEX UNIQUE SCAN | PK_EMP |     1.       |     0 (0) | 00:00:01 |

    --------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):

    ---------------------------------------------------

    2 - access ("EMPNO" = 1000)

    orclz >

    orclz >

    Post edited by: JohnWatson

    Update: corrected the police.

  • Blocking of Instant Messaging Services

    From the outset, I would like to say thank you to all who take the time to read this message.

    We seek to improve our current content filters for some of our partner sites. Fortunately, at each location we run the routers that support the latest version 12.4 mainline and up to 15T 7 of 12.4 T of output.

    At the moment we use NBAR to filter P2P traffic and a variety of URL broadband bandwidth hogs. Support IM seem somewhat NBAR capabilities corresponding to this day, but I see that the Application Firewall service is now support IM application to a higher degree.

    http://www.Cisco.com/en/us/docs/iOS/12_4t/12_4t4/ht_fw_im.html

    By reading the documentation, I noticed that the server IP addresses or FQDNs must be identified for the process to function properly. I have difficulties to locate all possible host names or IP addresses for servers AIM, MSN and YAHOO and was curious to know what other definition of a similar security policy used. I use a very basic to match regular crackdown on * yahoo *, for instance, but my understanding of the process is that it will block all communications to the server defined, which would mean that efforts to communicate with servers Web of Yahoo would be blocked.

    Thanks again for your time and any help is greatly appreciated.

    UPDATE *.

    I have implemented this in a few places and it works exactly as expected. Using a regular expression base for the corresponding server setting allows the router to classify the IM traffic to these servers without interfering with Web traffic to servers that share the same domain name.

    Take a look at these links regarding the blocking of instant messaging traffic:

    http://doc.pfSense.org/index.php/FAQ_how_do_I_block_instant_messengers

    http://forums.OpenDNS.com/comments.php?DiscussionID=570

    http://www.Cisco.com/en/us/prod/collateral/iosswrel/ps8802/ps6947/ps5207/ps6242/prod_white_paper0900aecd802efa46_ps1018_Products_White_Paper.html

    Please rate if useful.

    Concerning

    Farrukh

  • Disable Instant Messaging on Jabber

    Is there a way to disable only the feature of instant messaging on Jabber? I want to see the State and make calls, but simply not Messaging. Is this possible?

    Yes, you can turn on/off IM on CUPS/IM & P, bear in mind, this is a global setting.

  • Why the optimizer ignores Index Fast full Scan when much lower cost?

    Summary (tracking details below) - to improve the performance of a query on more than one table, I created an index on a table that included all the columns referenced in the query. With the new index in place the optimizer is still choosing a full Table Scan on an Index fast full scan. However, by removing the one query tables I reach the point where the optimizer suddenly use the Index Fast Full Scan on this table. And 'Yes', it's a lot cheaper than the full Table Scan it used before. By getting a test case, I was able to get the motion down to 4 tables with the optimizer still ignoring the index and table of 3, it will use the index.

    So why the optimizer not chooses the Index Fast Full Scan, if it is obvious that it is so much cheaper than a full Table Scan? And why the deletion of a table changes how the optimizer - I don't think that there is a problem with the number of join permutations (see below). The application is so simple that I can do, while remaining true to the original SQL application, and it still shows this reversal in the choice of access path. I can run the queries one after another, and he always uses a full Table Scan for the original query and Index fast full scan for the query that is modified with a table less.

    Watching trace 10053 output for the two motions, I can see that for the original query 4 table costs alone way of ACCESS of TABLE UNIQUE section a full Table Scan. But for the modified query with a table less, the table now has a cost for an Index fast full scan also. And the end of the join cost 10053 does not end with a message about exceeding the maximum number of permutations. So why the optimizer does not cost the IFFS for the first query, when it does for the second, nearly identical query?

    This is potentially a problem to do with OUTER joins, but why? The joins between the tables do not change when the single extra table is deleted.

    It's on 10.2.0.5 on Linux (Oracle Enterprise Linux). I did not define special settings I know. I see the same behavior on 10.2.0.4 32-bit on Windows (XP).

    Thank you
    John
    Blog of database Performance

    DETAILS
    I've reproduced the entire scenario via SQL scripts to create and populate the tables against which I can then run the queries. I've deliberately padded table so that the length of the average line of data generated is similar to that of the actual data. In this way the statistics should be similar on the number of blocks and so forth.

    System - uname - a
    Linux mysystem.localdomain 2.6.32-300.25.1.el5uek #1 SMP Tue May 15 19:55:52 EDT 2012 i686 i686 i386 GNU/Linux
    Database - v$ version
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Prod
    PL/SQL Release 10.2.0.5.0 - Production
    CORE    10.2.0.5.0      Production
    TNS for Linux: Version 10.2.0.5.0 - Production
    NLSRTL Version 10.2.0.5.0 - Production
    Original query (complete table below details):
    SELECT 
        episode.episode_id , episode.cross_ref_id , episode.date_required , 
        product.number_required , 
        request.site_id 
    FROM episode 
    LEFT JOIN REQUEST on episode.cross_ref_id = request.cross_ref_id 
         JOIN product ON episode.episode_id = product.episode_id 
    LEFT JOIN product_sub_type ON product.prod_sub_type_id = product_sub_type.prod_sub_type_id 
    WHERE (
            episode.department_id = 2
        and product.status = 'I'
          ) 
    ORDER BY episode.date_required
    ;
    Execution of display_cursor after the execution plan:
    SQL_ID  5ckbvabcmqzw7, child number 0
    -------------------------------------
    SELECT     episode.episode_id , episode.cross_ref_id , episode.date_required ,
    product.number_required ,     request.site_id FROM episode LEFT JOIN REQUEST on
    episode.cross_ref_id = request.cross_ref_id      JOIN product ON episode.episode_id =
    product.episode_id LEFT JOIN product_sub_type ON product.prod_sub_type_id =
    product_sub_type.prod_sub_type_id WHERE (         episode.department_id = 2 and
    product.status = 'I'       ) ORDER BY episode.date_required
    
    Plan hash value: 3976293091
    
    -----------------------------------------------------------------------------------------------------
    | Id  | Operation             | Name                | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
    -----------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT      |                     |       |       |       | 35357 (100)|          |
    |   1 |  SORT ORDER BY        |                     | 33333 |  1920K|  2232K| 35357   (1)| 00:07:05 |
    |   2 |   NESTED LOOPS OUTER  |                     | 33333 |  1920K|       | 34879   (1)| 00:06:59 |
    |*  3 |    HASH JOIN OUTER    |                     | 33333 |  1822K|  1728K| 34878   (1)| 00:06:59 |
    |*  4 |     HASH JOIN         |                     | 33333 |  1334K|       |   894   (1)| 00:00:11 |
    |*  5 |      TABLE ACCESS FULL| PRODUCT             | 33333 |   423K|       |   103   (1)| 00:00:02 |
    |*  6 |      TABLE ACCESS FULL| EPISODE             |   299K|  8198K|       |   788   (1)| 00:00:10 |
    |   7 |     TABLE ACCESS FULL | REQUEST             |  3989K|    57M|       | 28772   (1)| 00:05:46 |
    |*  8 |    INDEX UNIQUE SCAN  | PK_PRODUCT_SUB_TYPE |     1 |     3 |       |  0   (0)|          |
    -----------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       3 - access("EPISODE"."CROSS_REF_ID"="REQUEST"."CROSS_REF_ID")
       4 - access("EPISODE"."EPISODE_ID"="PRODUCT"."EPISODE_ID")
       5 - filter("PRODUCT"."STATUS"='I')
       6 - filter("EPISODE"."DEPARTMENT_ID"=2)
       8 - access("PRODUCT"."PROD_SUB_TYPE_ID"="PRODUCT_SUB_TYPE"."PROD_SUB_TYPE_ID")
    Updated the Query:
    SELECT 
        episode.episode_id , episode.cross_ref_id , episode.date_required , 
        product.number_required , 
        request.site_id 
    FROM episode 
    LEFT JOIN REQUEST on episode.cross_ref_id = request.cross_ref_id 
         JOIN product ON episode.episode_id = product.episode_id 
    WHERE (
            episode.department_id = 2
        and product.status = 'I'
          ) 
    ORDER BY episode.date_required
    ;
    Execution of display_cursor after the execution plan:
    SQL_ID  gbs74rgupupxz, child number 0
    -------------------------------------
    SELECT     episode.episode_id , episode.cross_ref_id , episode.date_required ,
    product.number_required ,     request.site_id FROM episode LEFT JOIN REQUEST on
    episode.cross_ref_id = request.cross_ref_id      JOIN product ON episode.episode_id =
    product.episode_id WHERE (         episode.department_id = 2     and product.status =
    'I'       ) ORDER BY episode.date_required
    
    Plan hash value: 4250628916
    
    ----------------------------------------------------------------------------------------------
    | Id  | Operation              | Name        | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT       |             |       |       |       | 10515 (100)|          |
    |   1 |  SORT ORDER BY         |             | 33333 |  1725K|  2112K| 10515   (1)| 00:02:07 |
    |*  2 |   HASH JOIN OUTER      |             | 33333 |  1725K|  1632K| 10077   (1)| 00:02:01 |
    |*  3 |    HASH JOIN           |             | 33333 |  1236K|       |   894   (1)| 00:00:11 |
    |*  4 |     TABLE ACCESS FULL  | PRODUCT     | 33333 |   325K|       |   103   (1)| 00:00:02 |
    |*  5 |     TABLE ACCESS FULL  | EPISODE     |   299K|  8198K|       |   788   (1)| 00:00:10 |
    |   6 |    INDEX FAST FULL SCAN| IX4_REQUEST |  3989K|    57M|       |  3976   (1)| 00:00:48 |
    ----------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       2 - access("EPISODE"."CROSS_REF_ID"="REQUEST"."CROSS_REF_ID")
       3 - access("EPISODE"."EPISODE_ID"="PRODUCT"."EPISODE_ID")
       4 - filter("PRODUCT"."STATUS"='I')
       5 - filter("EPISODE"."DEPARTMENT_ID"=2)
    Creating the table and Population:
    1 create tables
    2. load data
    3 create indexes
    4. collection of statistics
    --
    -- Main table
    --
    create table episode (
    episode_id number (*,0),
    department_id number (*,0),
    date_required date,
    cross_ref_id varchar2 (11),
    padding varchar2 (80),
    constraint pk_episode primary key (episode_id)
    ) ;
    --
    -- Product tables
    --
    create table product_type (
    prod_type_id number (*,0),
    code varchar2 (10),
    binary_field number (*,0),
    padding varchar2 (80),
    constraint pk_product_type primary key (prod_type_id)
    ) ;
    --
    create table product_sub_type (
    prod_sub_type_id number (*,0),
    sub_type_name varchar2 (20),
    units varchar2 (20),
    padding varchar2 (80),
    constraint pk_product_sub_type primary key (prod_sub_type_id)
    ) ;
    --
    create table product (
    product_id number (*,0),
    prod_type_id number (*,0),
    prod_sub_type_id number (*,0),
    episode_id number (*,0),
    status varchar2 (1),
    number_required number (*,0),
    padding varchar2 (80),
    constraint pk_product primary key (product_id),
    constraint nn_product_episode check (episode_id is not null) 
    ) ;
    alter table product add constraint fk_product 
    foreign key (episode_id) references episode (episode_id) ;
    alter table product add constraint fk_product_type 
    foreign key (prod_type_id) references product_type (prod_type_id) ;
    alter table product add constraint fk_prod_sub_type
    foreign key (prod_sub_type_id) references product_sub_type (prod_sub_type_id) ;
    --
    -- Requests
    --
    create table request (
    request_id number (*,0),
    department_id number (*,0),
    site_id number (*,0),
    cross_ref_id varchar2 (11),
    padding varchar2 (80),
    padding2 varchar2 (80),
    constraint pk_request primary key (request_id),
    constraint nn_request_department check (department_id is not null),
    constraint nn_request_site_id check (site_id is not null)
    ) ;
    --
    -- Activity & Users
    --
    create table activity (
    activity_id number (*,0),
    user_id number (*,0),
    episode_id number (*,0),
    request_id number (*,0), -- always NULL!
    padding varchar2 (80),
    constraint pk_activity primary key (activity_id)
    ) ;
    alter table activity add constraint fk_activity_episode
    foreign key (episode_id) references episode (episode_id) ;
    alter table activity add constraint fk_activity_request
    foreign key (request_id) references request (request_id) ;
    --
    create table app_users (
    user_id number (*,0),
    user_name varchar2 (20),
    start_date date,
    padding varchar2 (80),
    constraint pk_users primary key (user_id)
    ) ;
    
    prompt Loading episode ...
    --
    insert into episode
    with generator as 
    (select rownum r
              from (select rownum r from dual connect by rownum <= 1000) a,
                   (select rownum r from dual connect by rownum <= 1000) b,
                   (select rownum r from dual connect by rownum <= 1000) c
             where rownum <= 1000000
           ) 
    select r, 2,
        sysdate + mod (r, 14),
        to_char (r, '0000000000'),
        'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || to_char (r, '000000')
      from generator g
    where g.r <= 300000
    /
    commit ;
    --
    prompt Loading product_type ...
    --
    insert into product_type
    with generator as 
    (select rownum r
              from (select rownum r from dual connect by rownum <= 1000) a,
                   (select rownum r from dual connect by rownum <= 1000) b,
                   (select rownum r from dual connect by rownum <= 1000) c
             where rownum <= 1000000
           ) 
    select r, 
           to_char (r, '000000000'),
           mod (r, 2),
           'ABCDEFGHIJKLMNOPQRST' || to_char (r, '000000')
      from generator g
    where g.r <= 12
    /
    commit ;
    --
    prompt Loading product_sub_type ...
    --
    insert into product_sub_type
    with generator as 
    (select rownum r
              from (select rownum r from dual connect by rownum <= 1000) a,
                   (select rownum r from dual connect by rownum <= 1000) b,
                   (select rownum r from dual connect by rownum <= 1000) c
             where rownum <= 1000000
           ) 
    select r, 
           to_char (r, '000000'),
           to_char (mod (r, 3), '000000'),
           'ABCDE' || to_char (r, '000000')
      from generator g
    where g.r <= 15
    /
    commit ;
    --
    prompt Loading product ...
    --
    -- product_id prod_type_id prod_sub_type_id episode_id padding 
    insert into product
    with generator as 
    (select rownum r
              from (select rownum r from dual connect by rownum <= 1000) a,
                   (select rownum r from dual connect by rownum <= 1000) b,
                   (select rownum r from dual connect by rownum <= 1000) c
             where rownum <= 1000000
           ) 
    select r, mod (r, 12) + 1, mod (r, 15) + 1, mod (r, 300000) + 1,
           decode (mod (r, 3), 0, 'I', 1, 'C', 2, 'X', 'U'),
           dbms_random.value (1, 100), NULL
      from generator g
    where g.r <= 100000
    /
    commit ;
    --
    prompt Loading request ...
    --
    -- request_id department_id site_id cross_ref_id varchar2 (11) padding 
    insert into request
    with generator as 
    (select rownum r
              from (select rownum r from dual connect by rownum <= 1000) a,
                   (select rownum r from dual connect by rownum <= 1000) b,
                   (select rownum r from dual connect by rownum <= 1000) c
             where rownum <= 10000000
           ) 
    select r, mod (r, 4) + 1, 1, to_char (r, '0000000000'),
    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890123456789' || to_char (r, '000000'),
    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789012345678' || to_char (r, '000000')
      from generator g
    where g.r <= 4000000
    /
    commit ;
    --
    prompt Loading activity ...
    --
    -- activity activity_id user_id episode_id request_id (NULL) padding 
    insert into activity
    with generator as 
    (select rownum r
              from (select rownum r from dual connect by rownum <= 1000) a,
                   (select rownum r from dual connect by rownum <= 1000) b,
                   (select rownum r from dual connect by rownum <= 1000) c
             where rownum <= 10000000
           ) 
    select r, mod (r, 50) + 1, mod (r, 300000) + 1, NULL, NULL
      from generator g
    where g.r <= 100000
    /
    commit ;
    --
    prompt Loading app_users ...
    --
    -- app_users user_id user_name start_date padding 
    insert into app_users
    with generator as 
    (select rownum r
              from (select rownum r from dual connect by rownum <= 1000) a,
                   (select rownum r from dual connect by rownum <= 1000) b,
                   (select rownum r from dual connect by rownum <= 1000) c
             where rownum <= 10000000
           ) 
    select r, 
           'User_' || to_char (r, '000000'),
           sysdate - mod (r, 30),
           'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || to_char (r, '000000')
      from generator g
    where g.r <= 1000
    /
    commit ;
    --
    
    prompt Episode (1)
    create index ix1_episode_cross_ref on episode (cross_ref_id) ;
    --
    prompt Product (2)
    create index ix1_product_episode on product (episode_id) ;
    create index ix2_product_type on product (prod_type_id) ;
    --
    prompt Request (4)
    create index ix1_request_site on request (site_id) ;
    create index ix2_request_dept on request (department_id) ;
    create index ix3_request_cross_ref on request (cross_ref_id) ;
    -- The extra index on the referenced columns!!
    create index ix4_request on request (cross_ref_id, site_id) ;
    --
    prompt Activity (2)
    create index ix1_activity_episode on activity (episode_id) ;
    create index ix2_activity_request on activity (request_id) ;
    --
    prompt Users (1)
    create unique index ix1_users_name on app_users (user_name) ;
    --
    prompt Gather statistics on schema ...
    --
    exec dbms_stats.gather_schema_stats ('JB')
    10053 sections - original query
    ***************************************
    SINGLE TABLE ACCESS PATH
      -----------------------------------------
      BEGIN Single Table Cardinality Estimation
      -----------------------------------------
      Table: REQUEST  Alias: REQUEST
        Card: Original: 3994236  Rounded: 3994236  Computed: 3994236.00  Non Adjusted: 3994236.00
      -----------------------------------------
      END   Single Table Cardinality Estimation
      -----------------------------------------
      Access Path: TableScan
        Cost:  28806.24  Resp: 28806.24  Degree: 0
          Cost_io: 28738.00  Cost_cpu: 1594402830
          Resp_io: 28738.00  Resp_cpu: 1594402830
    ******** Begin index join costing ********
      ****** trying bitmap/domain indexes ******
      Access Path: index (FullScan)
        Index: PK_REQUEST
        resc_io: 7865.00  resc_cpu: 855378926
        ix_sel: 1  ix_sel_with_filters: 1
        Cost: 7901.61  Resp: 7901.61  Degree: 0
      Access Path: index (FullScan)
        Index: PK_REQUEST
        resc_io: 7865.00  resc_cpu: 855378926
        ix_sel: 1  ix_sel_with_filters: 1
        Cost: 7901.61  Resp: 7901.61  Degree: 0
      ****** finished trying bitmap/domain indexes ******
    ******** End index join costing ********
      Best:: AccessPath: TableScan
             Cost: 28806.24  Degree: 1  Resp: 28806.24  Card: 3994236.00  Bytes: 0
    ***************************************
    10053 - updated the Query
    ***************************************
    SINGLE TABLE ACCESS PATH
      -----------------------------------------
      BEGIN Single Table Cardinality Estimation
      -----------------------------------------
      Table: REQUEST  Alias: REQUEST
        Card: Original: 3994236  Rounded: 3994236  Computed: 3994236.00  Non Adjusted: 3994236.00
      -----------------------------------------
      END   Single Table Cardinality Estimation
      -----------------------------------------
      Access Path: TableScan
        Cost:  28806.24  Resp: 28806.24  Degree: 0
          Cost_io: 28738.00  Cost_cpu: 1594402830
          Resp_io: 28738.00  Resp_cpu: 1594402830
      Access Path: index (index (FFS))
        Index: IX4_REQUEST
        resc_io: 3927.00  resc_cpu: 583211030
        ix_sel: 0.0000e+00  ix_sel_with_filters: 1
      Access Path: index (FFS)
        Cost:  3951.96  Resp: 3951.96  Degree: 1
          Cost_io: 3927.00  Cost_cpu: 583211030
          Resp_io: 3927.00  Resp_cpu: 583211030
      Access Path: index (FullScan)
        Index: IX4_REQUEST
        resc_io: 14495.00  resc_cpu: 903225273
        ix_sel: 1  ix_sel_with_filters: 1
        Cost: 14533.66  Resp: 14533.66  Degree: 1
    ******** Begin index join costing ********
      ****** trying bitmap/domain indexes ******
      Access Path: index (FullScan)
        Index: IX4_REQUEST
        resc_io: 14495.00  resc_cpu: 903225273
        ix_sel: 1  ix_sel_with_filters: 1
        Cost: 14533.66  Resp: 14533.66  Degree: 0
      Access Path: index (FullScan)
        Index: IX4_REQUEST
        resc_io: 14495.00  resc_cpu: 903225273
        ix_sel: 1  ix_sel_with_filters: 1
        Cost: 14533.66  Resp: 14533.66  Degree: 0
      ****** finished trying bitmap/domain indexes ******
    ******** End index join costing ********
      Best:: AccessPath: IndexFFS  Index: IX4_REQUEST
             Cost: 3951.96  Degree: 1  Resp: 3951.96  Card: 3994236.00  Bytes: 0
    ***************************************

    I mentioned that it is a bug related to the ANSI SQL standard and transformation probably.

    As suggested/asked in my first reply:
    1. If you use a no_query_transformation then you should find that you get the use of the index (although not in the plan you would expect)
    2. If you use the traditional Oracle syntax, then you should not have the same problem.

  • Instant Messaging within the apple network

    Is there any software for instant messaging for Apple systems? I have several computers in my network apple, is there a demand (outside iMessage) that supports instant messaging within a network? Thank you!

    Hello

    To be clear, the app is called Messages.

    It comes with two accounts - the iMessages one who needs your for add an Apple ID and the Hello we need everybody to be also using Hello.

    Hello accounts are also in iChat app in older versions of the operating system.

    @mac.com, @me.com related identifiers iCloud and @icloud.com are also valid aliases AIM

    You add these in their entirety in option AIM/AOL

    Messages can also connect to a Jabber server.

    Google Email ID will work with GoogleTalk Jabber server they are running.

    Yahoo ID can also be used (if everyone has one).

    The downside of this in the Messages is that it is the text of the only conversations and there no sending files or video and Audio Chats.

    PSI is a Jabber application, if you do not want to use messages.

    Yahoo for Mac does not work in versions of Mac OS in Yosemite (OS X 10.10) or higher.

    AdiumX can join a lot of services.

    If you have Office you have MSN

    Facebook used to run a Jabber server, but no longer do, but still have access to the e-mail page (in most cases it is a separate tab in a browser).

    There are also Trillian.

    This started as AdiumX (Mac only) as a multi-service on Windows client, but more recently there are Mac and Linux as well.

    However the page no longer seem that clear even though the Research suggest that.

    NOTES

    AdiumX is Hello.

    I have not tested this option to see if it will do the Group of cats (iChat and are not the versions Messages)

    For the adventurous https://github.com/yakyak/yakyak

    20:36 Friday. April 29, 2016

     iMac 2.5 Ghz i5 2011 (El Capitan)
     G4/1GhzDual MDD (Leopard 10.5.8)
     MacBookPro (Snow Leopard 10.6.8) 2 GB
     Mac OS X (10.6.8).
     iPhone and iPad (2)

  • Send instant messages via email from yahoo with the new version of firefox

    I can't send instant messages via email yahoo in the new version of firefox, how do I fix this problem

    Hi hwkangel,

    It looks like a known issue reported here:

    https://Bugzilla.Mozilla.org/show_bug.cgi?id=713014

    There was a workaround solution posted, but I have not tested it myself. Here are the steps.

    1. Go to the Yahoo Messenger Options - change the window in the tab menu and press OK.
    2. Then go back and switch to the small window and press OK.

    The bug has already been fixed. So, you can download the beta version of FF 10 If this is a really important feature for you.

    Hope this helps!

  • ring on the Windows Live messenger Instant Messaging

    Original title: emergency aid

    Yahoo messanger will beep when you receive an instant message. How to set the life of windows to make a sound when I get a message on health?

    Hi AnnemarieF,

    · What version of Windows Live messenger, you have installed?

    Follow the steps below:

    a. open the Windows live messenger

    b. click on tools

    c. click Options

    d. in the left pane select sounds or alerts and sound (depending on the version of Live messenger)

    e., and then select the sound you want to play when you receive an instant message.

    For more assistance, you will need to post your query in the live forum for better support. Link: http://windowslivehelp.com/forums.aspx?forumid=568c1adc-41d2-47e0-bb2c-cdfedd9642ef

    With regard to:

    Samhrutha G S - Microsoft technical support.

  • How to send an instant message, what is the format of an address of instant messaging

    How to send an instant message, what is the format of an address of instant messaging

    Hello

    Are you referring to the use of messenger?

    If so:

    they will help you with your questions/problems Messenger when repost you the link below in the Messenger forums

    http://windowslivehelp.com/product.aspx?ProductID=2

  • Detect and respond to messages from the BlackBerry Instant Messaging by program

    Hello

    Is it possible to programmatically change the State or even meet with instant messages on a third-party application BlackBerry Instant Messaging?

    I was looking around the classes net.rim.blackberry.api.blackberrymessenger. * and extract from the example code of TicTacToe.  My understanding is that it only allows to add an application service (game of tic tac toe) menu the blackberry messenger.  Please correct me if I'm wrong.

    Any information or suggestion would be useful.

    Thank you.

    BlackBerryMessenger is a protocol based on session. Communications are app-to-app, as shown in the example of TicTacToe.

    You can not intercept the communications of another application.

Maybe you are looking for