Optimizer choosing hash joins even when slower

We have several queries where joins are being evaluated by full scans / hash joins even when forcing index use results in an execution time about a quarter the duration of the hash join plan. It still happens if I run DMS_STATS.GATHER_TABLE_STATS with FOR ALL COLUMNS.
Is there a stats gathering option which is more likely to result in an indexd join without having to get developers to put optimizer hints in their queries?
11g on SuSE 10.
Many thanks.

user10400178 wrote:
That would require me to post a large amount of schema information as well to be of any added value.
Surely there are some general recommendations one could make as to how to allow the optimizer to realise that joining through an index is going to be quicker than doing a full scan and hash join to a table.If you don't want to post the plans, then as a first step you basically need to verify yourself if the cardinality estimates returned by the execution plan correspond roughly to the actual cardinalities.
E.g. in your execution plan there are steps like "FULL TABLE SCAN" and these operations likely have a corresponding "FILTER" predicate in the "Predicate Information" section below the plan.
As first step you should run simple count queries ("select count(*) from ... where <FILTER/ACCESS predicates>") on the tables involved using the "FILTER" and "ACCESS" predicates mentioned to compare if the returned number of rows is in the same ballpark than the estimates mentioned in the plan.
If these estimates are already way off then you know that for some reason the optimizer makes wrong assumptions and that's probably the reason why the suboptimal access pattern is preferred.
One potential reason could be correlated column values, but since you're already on 11g you could make use of extended column statistics. See here for more details:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/stats.htm#BEIEEIJA
Another reason might simply that you're choosing a too low "estimate" sample size for the statistics collection. In 11g you should always use the DBMS_STATS.AUTO_SAMPLE_SIZE for the "estimate_percent" parameter of the DBMS_STATS.GATHER__STATS procedures. It should generate accurate statistics without the need to analyze all of the data. See here in Greg Rahn's blog for an example:
http://structureddata.org/2007/09/17/oracle-11g-enhancements-to-dbms_stats/
Regarding the histograms: Oracle 11g by default generates histograms if it deems them to be beneficial. It is controlled by the parameter "METHOD_OPT" which has the default value of "FOR ALL COLUMNS SIZE AUTO". The "SIZE" keyword determines the generation of histograms. You could use "SIZE 1" to prevent histogram generation, "SIZE <n>" to control the number of buckets to use for the histogram or "SIZE AUTO" to let Oracle decide itself when and how to generate histograms.
Regarding the stored outlines: You could have so called "stored outlines" that force the optimizer to stick to a certain plan. That features was introduced a long time ago and is sometimes also referred to as "plan stability", its main purpose was an attempt to smooth the transition from the rule based optimizer (RBO) to the cost based optimizer (CBO) introduced in Oracle 7 (although you can use it for other purposes, too, of course). Oracle 11g offers now the new "SQL plan management" feature that is supposed to supersede the "plan stability" feature. For more information, look here:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/outlines.htm#PFGRF707
Regards,
Randolf
Oracle related stuff blog:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/
Edited by: Randolf Geist on Oct 16, 2008 4:20 PM
Sample size note added
Edited by: Randolf Geist on Oct 16, 2008 6:54 PM
Outline info added

Similar Messages

  • 10g doing VIEW type join even when no view in SQL - and performing poorly

    Using 10.2.0.2.0
    Every once in a while I see CBO deciding to use VIEW type join even when there is no view in the SQL and whenever it does that the performance just sucks.
    Example –
    SQL-
    SELECT a.emplid, a.empl_rcd, TO_CHAR (((a.dur) + (:"SYS_B_00")), :"SYS_B_01"),
    a.seqnum
    FROM ps_wrk_adhoc_tao5 a, ps_tl_prof_wrk5 b, ps_tl_empl_data c
    WHERE a.dur =
    (SELECT MAX (a1.dur)
    FROM ps_wrk_adhoc_tao5 a1
    WHERE a1.process_instance = :"SYS_B_02"
    AND a1.emplid = a.emplid
    AND a1.empl_rcd = a.empl_rcd)
    AND a.dur < TO_DATE (:"SYS_B_03", :"SYS_B_04")
    AND NOT EXISTS (
    SELECT :"SYS_B_05"
    FROM ps_tl_ta_exceptn5 q
    WHERE q.process_instance = :"SYS_B_06"
    AND q.exception_id = :"SYS_B_07"
    AND q.emplid = a.emplid
    AND q.empl_rcd = a.empl_rcd
    AND q.dur = a.dur)
    AND :"SYS_B_08" = :"SYS_B_09"
    AND c.emplid = a.emplid
    AND b.emplid = a.emplid
    AND c.empl_rcd = a.empl_rcd
    AND b.empl_rcd = a.empl_rcd
    AND c.effdt =
    (SELECT MAX (c1.effdt)
    FROM ps_tl_empl_data c1
    WHERE c1.emplid = c.emplid
    AND c1.empl_rcd = c.empl_rcd
    AND c1.effdt <= ((a.dur) + (:"SYS_B_10")))
    AND b.effdt =
    (SELECT MAX (b1.effdt)
    FROM ps_tl_prof_wrk5 b1
    WHERE b1.process_instance = :"SYS_B_11"
    AND b1.emplid = b.emplid
    AND b1.empl_rcd = b.empl_rcd
    AND b1.effdt <= ((a.dur) + (:"SYS_B_12")))
    AND c.time_rptg_status = :"SYS_B_13"
    AND b.empl_status IN (:"SYS_B_14", :"SYS_B_15", :"SYS_B_16", :"SYS_B_17")
    AND a.process_instance = :"SYS_B_18"
    AND b.process_instance = :"SYS_B_19"
    Plan –
    Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
    SELECT STATEMENT Optimizer Mode=CHOOSE 1 18
    NESTED LOOPS ANTI 1 153 13
    NESTED LOOPS 1 125 12
    NESTED LOOPS 1 103 10
    HASH JOIN 1 76 9
    INDEX RANGE SCAN SYSADM.PS0WRK_ADHOC_TAO5 7 245 2
    SORT AGGREGATE 1 21
    TABLE ACCESS BY INDEX ROWID SYSADM.PS_WRK_ADHOC_TAO5 6 126 3
    INDEX RANGE SCAN SYSADM.PS_WRK_ADHOC_TAO5 6 2
    VIEW SYS.VW_SQ_1 524 20 K 6
    HASH GROUP BY 524 40 K 6
    FILTER
    MERGE JOIN 1 K 124 K 5
    SORT JOIN 151 5 K 2
    INDEX RANGE SCAN SYSADM.PS_TL_PROF_WRK5 151 5 K 1
    SORT JOIN 214 8 K 3
    INDEX RANGE SCAN SYSADM.PS0WRK_ADHOC_TAO5 214 8 K 2
    TABLE ACCESS BY INDEX ROWID SYSADM.PS_TL_PROF_WRK5 1 27 1
    INDEX UNIQUE SCAN SYSADM.PS_TL_PROF_WRK5 1 0
    TABLE ACCESS BY INDEX ROWID SYSADM.PS_TL_EMPL_DATA 1 22 2
    INDEX RANGE SCAN SYSADM.PS_TL_EMPL_DATA 1 1
    SORT AGGREGATE 1 20
    FIRST ROW 1 20 2
    INDEX RANGE SCAN (MIN/MAX) SYSADM.PS_TL_EMPL_DATA 1 20 2
    INDEX RANGE SCAN SYSADM.PS_TL_TA_EXCEPTN5 1 28 1
    If I use a rule hint here I get this plan. I get the plan given below on another database even without the rule hint –
    Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
    SELECT STATEMENT Optimizer Mode=HINT: RULE
    FILTER
    FILTER
    TABLE ACCESS BY INDEX ROWID SYSADM.PS_TL_EMPL_DATA
    NESTED LOOPS
    NESTED LOOPS
    TABLE ACCESS BY INDEX ROWID SYSADM.PS_TL_PROF_WRK5
    INDEX RANGE SCAN SYSADM.PS_TL_PROF_WRK5
    TABLE ACCESS BY INDEX ROWID SYSADM.PS_WRK_ADHOC_TAO5
    INDEX RANGE SCAN SYSADM.PS_WRK_ADHOC_TAO5
    INDEX RANGE SCAN SYSADM.PS_TL_EMPL_DATA
    SORT AGGREGATE
    TABLE ACCESS BY INDEX ROWID SYSADM.PS_WRK_ADHOC_TAO5
    INDEX RANGE SCAN SYSADM.PS_WRK_ADHOC_TAO5
    INDEX RANGE SCAN SYSADM.PS_TL_TA_EXCEPTN5
    SORT AGGREGATE
    INDEX RANGE SCAN SYSADM.PS_TL_EMPL_DATA
    SORT AGGREGATE
    INDEX RANGE SCAN SYSADM.PS_TL_PROF_WRK5
    The whole schema was analyzed using dbms.stats only yesterday. My question is why is Oracle doing VIEW, and how can I stop it from doing that. Hint is not an option.

    I understand that SQL Developer takes it's NLS settings from Preferences - Database - NLS Parameters. What I was not aware of is that when SQL Developer is run for the first time the NLS Parameters seem to be populated from the settings on the OS of the PC it is running on. To test that this was the case I did the following
    I work on a Windows XP system with Regional Options - Standards and Formats and Regional Options - Location set with English (United Kingdom) and United Kingdom respectively.
    I unzipped two clean SQL Developer instances (both Version 1.2.1). The first instance I first ran under my current PC set up without importing settings from a previous installation. The Preferences - Database - NLS Parameters - Language and Preferences - Database - NLS Parameters - Territory had been populated with English and United Kingdom.
    I then changed the Regional Options on the OS to English (United States) and United States and ran the second instance of SQL Developer for the first time, again without importing settings. In this instance of SQL Developer the NLS Parameters were populated with American and America.
    When the first instance of SQL Developer was the checked under these OS settings the NLS Parameters were still English and United Kingdom.
    I was not aware this was the case and, if my test is correct, it seems to contradict the SQL Developer user guide http://download.oracle.com/docs/cd/E10405_01/doc/appdev.120/e10406/intro.htm#CHDBHCAG
    James
    Message was edited by: Jampat to include SQL Developer version number.

  • Generally when does optimizer use nested loop and Hash joins  ?

    Version: 11.2.0.3, 10.2
    Lets say I have a table called ORDER and ORDER_DETAIL.
    ORDER_DETAIL is the child table of ORDERS .
    This is what I understand about Nested Loop:
    When we join ORDER AND ORDER_DETAIL tables oracle will form a 'nested loop' in which for each order_ID in ORDER table (outer loop), oracle will look for corresponding multiple ORDER_IDs in the ORDER_DETAIL table.
    Is nested loop used when the driving table (ORDER in this case) is smaller than the child table (ORDER_DETAIL) ?
    Is nested loop more likely to use Indexes in general ?
    How will these two tables be joined using Hash joins ?
    When is it ideal to use hash joins  ?

    Your description of a nested loop is correct.
    The overall rule is that Oracle will use the plan that it calculates to be, in general, fastest. That mostly means fewest I/O's, but there are various factors that adjust its calculation - e.g. it expects index blocks to be cached, multiple reads entries in an index may reference the same block, full scans get multiple blocks per I/O. It also has CPU cost calculations, but they generally only become significant with function / package calls or domain indexes (spatial, text, ...).
    Nested loop with an index will require one indexed read of the child table per outer table row, so its I/O cost is roughly twice the number of rows expected to match the where clause conditions on the outer table.
    A hash join reads the of the smaller table into a hash table then matches the rows from the larger table against the hash table, so its I/O cost is the cost of a full scan of each table (unless the smaller table is too big to fit in a single in-memory hash table). Hash joins generally don't use indexes - it doesn't use the index to look up each result. It can use an index as a data source, as a narrow version of the table or a way to identify the rows satisfying the other where clause conditions.
    If you are processing the whole of both tables, Oracle is likely to use a hash join, and be very fast and efficient about it.
    If your where clause restricts it to a just few rows from the parent table and a few corresponding rows from the child table, and you have an index Oracle is likely to use a nested loops solution.
    If the tables are very small, either plan is efficient - you may be surprised by its choice.
    Don't be worry about plans with full scans and hash joins - they are usually very fast and efficient. Often bad performance comes from having to do nested loop lookups for lots of rows.

  • HASH JOIN Probe Residual

     Hello!
    I'm having a query, that joins two large tables. Optimizer chooses HASH MATCH operator (that's ok)
    But when I inspect the operator in the query plan, there's Probe Residual part that copmpares THE SAME COLUMS I join for.
    Is it a right situation, that I always have this Probe Residual on compairing the same columns as join?
    Hash Match operator takes 63% of the query and I want to optimize it.
    The join fields are of the SAME type, I know that's importatnt.
    Thank You!

    Since I don't know too much of this stuff by heart, I googled on Probe Residual, and this blog post from SQL Server MVP Rob Farley could be a start:
    http://sqlblog.com/blogs/rob_farley/archive/2011/03/22/probe-residual-when-you-have-a-hash-match-a-hidden-cost-in-execution-plans.aspx
    One thing I do know: the percentages you see in the plan are estimates, even if you look at the actual plan. The certainly needs to be take with a grain of salt, as your really bottleneck may be elsewhere.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • Sometimes I can't get out of Day view in iCal.  There is no where on the screen to select month view, even when I close it out and go back into iCal.

    Sometimes I am locked in "day" view in iCal.  There is no where on the screen to choose "month" view, even when I close it out and open again.  Tapping anywhere on the screen or scrolling doesn't help.

    Give this a try:
    1 - delete the iPhoto preference file, com.apple.iPhoto.plist, that resides in your
         User/Home/Library/ Preferences folder.
    2 - delete the contents the following folder: User/Library/Containers/com.apple.iPhoto
    3 - reboot, launch iPhoto and try full screen again.
    NOTE: For Mavericks and Yosemite,  go to your Home folder and use the View ➙ Show View Options menu to bring the this window:
    where you can check the Show Library Folder checkbox.

  • Optimizer choosing different plans when ROWNUM filter. [UPDATED: 11.2.0.1]

    I'm having a couple of issues with a query, and I can't figure out the best way to reach a solution.
    Platform Information
    Windows Server 2003 R2
    Oracle 10.2.0.4
    Optimizer Settings
    SQL > show parameter optimizer
    NAME                                 TYPE        VALUE
    optimizer_dynamic_sampling           integer     2
    optimizer_features_enable            string      10.2.0.4
    optimizer_index_caching              integer     90
    optimizer_index_cost_adj             integer     30
    optimizer_mode                       string      ALL_ROWS
    optimizer_secure_view_merging        boolean     TRUEThe query below, is a simple "Top N" query, where the top result is returned. Here it is, with bind variables in the same location as the application code:
    SELECT     PRODUCT_DESC
    FROM
         SELECT     PRODUCT_DESC
         ,     COUNT(*)     AS CNT
         FROM     USER_VISITS     
         JOIN     PRODUCT     ON PRODUCT.PRODUCT_OID = USER_VISITS.PRODUCT_OID
         WHERE     PRODUCT.PRODUCT_DESC != 'Home'     
         AND     VISIT_DATE
              BETWEEN
                   ADD_MONTHS                    
                        TRUNC                    
                             TO_DATE               
                                  :vCurrentYear
                             ,     'YYYY'
                        ,     'YEAR'
                   ,     3*(:vCurrentQuarter-1)
              AND
                   ADD_MONTHS                    
                        TRUNC                    
                             TO_DATE               
                                  :vCurrentYear
                             ,     'YYYY'
                        ,     'YEAR'
                   ,     3*:vCurrentQuarter
                   ) - INTERVAL '1' DAY               
         GROUP BY PRODUCT_DESC
         ORDER BY CNT DESC
    WHERE     ROWNUM <= 1;
    Explain Plan
    The explain plan I receive when running the query above.
    | Id  | Operation                         | Name                          | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
    |*  1 |  COUNT STOPKEY                    |                               |      1 |        |      1 |00:00:34.92 |   66343 |       |       |          |
    |   2 |   VIEW                            |                               |      1 |      1 |      1 |00:00:34.92 |   66343 |       |       |          |
    |*  3 |    FILTER                         |                               |      1 |        |      1 |00:00:34.92 |   66343 |       |       |          |
    |   4 |     SORT ORDER BY                 |                               |      1 |      1 |      1 |00:00:34.92 |   66343 |  2048 |  2048 | 2048  (0)|
    |   5 |      SORT GROUP BY NOSORT         |                               |      1 |      1 |     27 |00:00:34.92 |   66343 |       |       |          |
    |   6 |       NESTED LOOPS                |                               |      1 |      2 |  12711 |00:00:34.90 |   66343 |       |       |          |
    |   7 |        TABLE ACCESS BY INDEX ROWID| PRODUCT                       |      1 |     74 |     77 |00:00:00.01 |      44 |       |       |          |
    |*  8 |         INDEX FULL SCAN           | PRODUCT_PRODDESCHAND_UNQ      |      1 |      1 |     77 |00:00:00.01 |       1 |       |       |          |
    |*  9 |        INDEX FULL SCAN            | USER_VISITS#PK                |     77 |      2 |  12711 |00:00:34.88 |   66299 |       |       |          |
    Predicate Information (identified by operation id):
       1 - filter(ROWNUM<=1)
       3 - filter(ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(:VCURRENTYEAR),'YYYY'),'fmyear'),3*(:VCURRENTQUARTER-1))<=ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(:VCURR
                  ENTYEAR),'YYYY'),'fmyear'),3*:VCURRENTQUARTER)-INTERVAL'+01 00:00:00' DAY(2) TO SECOND(0))
       8 - filter("PRODUCT"."PRODUCT_DESC"<>'Home')
       9 - access("USER_VISITS"."VISIT_DATE">=ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(:VCURRENTYEAR),'YYYY'),'fmyear'),3*(:VCURRENTQUARTER-1)) AND
                  "USER_VISITS"."PRODUCT_OID"="PRODUCT"."PRODUCT_OID" AND "USER_VISITS"."VISIT_DATE"<=ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(:VCURRENTYEAR),'YYYY')
                  ,'fmyear'),3*:VCURRENTQUARTER)-INTERVAL'+01 00:00:00' DAY(2) TO SECOND(0))
           filter(("USER_VISITS"."VISIT_DATE">=ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(:VCURRENTYEAR),'YYYY'),'fmyear'),3*(:VCURRENTQUARTER-1)) AND
                  "USER_VISITS"."VISIT_DATE"<=ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(:VCURRENTYEAR),'YYYY'),'fmyear'),3*:VCURRENTQUARTER)-INTERVAL'+01 00:00:00' DAY(2)
                  TO SECOND(0) AND "USER_VISITS"."PRODUCT_OID"="PRODUCT"."PRODUCT_OID"))
    Row Source Generation
    TKPROF Row Source Generation
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        1      0.00       0.00          0          0          0           0
    Execute      1      0.00       0.01          0          0          0           0
    Fetch        2     35.10      35.13          0      66343          0           1
    total        4     35.10      35.14          0      66343          0           1
    Misses in library cache during parse: 1
    Misses in library cache during execute: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 62 
    Rows     Row Source Operation
          1  COUNT STOPKEY (cr=66343 pr=0 pw=0 time=35132008 us)
          1   VIEW  (cr=66343 pr=0 pw=0 time=35131996 us)
          1    FILTER  (cr=66343 pr=0 pw=0 time=35131991 us)
          1     SORT ORDER BY (cr=66343 pr=0 pw=0 time=35131936 us)
         27      SORT GROUP BY NOSORT (cr=66343 pr=0 pw=0 time=14476309 us)
      12711       NESTED LOOPS  (cr=66343 pr=0 pw=0 time=22921810 us)
         77        TABLE ACCESS BY INDEX ROWID PRODUCT (cr=44 pr=0 pw=0 time=3674 us)
         77         INDEX FULL SCAN PRODUCT_PRODDESCHAND_UNQ (cr=1 pr=0 pw=0 time=827 us)(object id 52355)
      12711        INDEX FULL SCAN USER_VISITS#PK (cr=66299 pr=0 pw=0 time=44083746 us)(object id 52949)However when I run the query with an ALL_ROWS hint I receive this explain plan (reasoning for this can be found here Jonathan's Lewis' response: http://www.freelists.org/post/oracle-l/ORDER-BY-and-first-rows-10-madness,4):
    | Id  | Operation                  | Name           | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT           |                |     1 |    39 |   223  (25)| 00:00:03 |
    |*  1 |  COUNT STOPKEY             |                |       |       |            |          |
    |   2 |   VIEW                     |                |     1 |    39 |   223  (25)| 00:00:03 |
    |*  3 |    FILTER                  |                |       |       |            |          |
    |   4 |     SORT ORDER BY          |                |     1 |    49 |   223  (25)| 00:00:03 |
    |   5 |      HASH GROUP BY         |                |     1 |    49 |   223  (25)| 00:00:03 |
    |*  6 |       HASH JOIN            |                |   490 | 24010 |   222  (24)| 00:00:03 |
    |*  7 |        TABLE ACCESS FULL   | PRODUCT   |    77 |  2849 |     2   (0)| 00:00:01 |
    |*  8 |        INDEX FAST FULL SCAN| USER_VISITS#PK |   490 |  5880 |   219  (24)| 00:00:03 |
    Predicate Information (identified by operation id):
       1 - filter(ROWNUM<=1)
       3 - filter(ADD_MONTHS(TRUNC(TO_DATE(:VCURRENTYEAR,'YYYY'),'fmyear'),3*(TO_NUMBER(:
                  VCURRENTQUARTER)-1))<=ADD_MONTHS(TRUNC(TO_DATE(:VCURRENTYEAR,'YYYY'),'fmyear'),3*TO_N
                  UMBER(:VCURRENTQUARTER))-INTERVAL'+01 00:00:00' DAY(2) TO SECOND(0))
       6 - access("USER_VISITS"."PRODUCT_OID"="PRODUCT"."PRODUCT_OID")
       7 - filter("PRODUCT"."PRODUCT_DESC"<>'Home')
       8 - filter("USER_VISITS"."VISIT_DATE">=ADD_MONTHS(TRUNC(TO_DATE(:VCURRENTYEAR,'YYY
                  Y'),'fmyear'),3*(TO_NUMBER(:VCURRENTQUARTER)-1)) AND
                  "USER_VISITS"."VISIT_DATE"<=ADD_MONTHS(TRUNC(TO_DATE(:VCURRENTYEAR,'YYYY'),'fmyear'),
                  3*TO_NUMBER(:VCURRENTQUARTER))-INTERVAL'+01 00:00:00' DAY(2) TO SECOND(0))And the TKPROF Row Source Generation:
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        1      0.00       0.00          0          0          0           0
    Execute      1      0.00       0.00          0          0          0           0
    Fetch        3      0.51       0.51          0        907          0          27
    total        5      0.51       0.51          0        907          0          27
    Misses in library cache during parse: 1
    Misses in library cache during execute: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 62 
    Rows     Row Source Operation
         27  FILTER  (cr=907 pr=0 pw=0 time=513472 us)
         27   SORT ORDER BY (cr=907 pr=0 pw=0 time=513414 us)
         27    HASH GROUP BY (cr=907 pr=0 pw=0 time=512919 us)
      12711     HASH JOIN  (cr=907 pr=0 pw=0 time=641130 us)
         77      TABLE ACCESS FULL PRODUCT (cr=5 pr=0 pw=0 time=249 us)
      22844      INDEX FAST FULL SCAN USER_VISITS#PK (cr=902 pr=0 pw=0 time=300356 us)(object id 52949)The query with the ALL_ROWS hint returns data instantly, while the other one takes about 70 times as long.
    Interestingly enough BOTH queries generate plans with estimates that are WAY off. The first plan is estimating 2 rows, while the second plan is estimating 490 rows. However the real number of rows is correctly reported in the Row Source Generation as 12711 (after the join operation).
    TABLE_NAME                       NUM_ROWS     BLOCKS
    USER_VISITS                        196044       1049
    INDEX_NAME                         BLEVEL LEAF_BLOCKS DISTINCT_KEYS CLUSTERING_FACTOR LAST_ANALYZED
    USER_VISITS#PK                          2         860        196002          57761 07/24/2009 13:17:59
    COLUMN_NAME                    NUM_DISTINCT LOW_VALUE            HIGH_VALUE                                 DENSITY     NUM_NULLS HISTOGRAM
    VISIT_DATE                           195900 786809010E0910       786D0609111328                      .0000051046452272          0 NONEI don't know how the first one is estimating 2 rows, but I can compute the second's cardinality estimates by assuming a 5% selectivity for the TO_DATE() functions:
    SQL > SELECT ROUND(0.05*0.05*196044) FROM DUAL;
    ROUND(0.05*0.05*196044)
                        490However, removing the bind variables (and clearing the shared pool), does not change the cardinality estimates at all.
    I would like to avoid hinting this plan if possible and that is why I'm looking for advice. I also have a followup question.
    Edited by: Centinul on Sep 20, 2009 4:10 PM
    See my last post for 11.2.0.1 update.

    Centinul wrote:
    You could potentially perform testing with either a CARDINALITY or OPT_ESTIMATE hint to see if the execution plan changes dramatically to improve performance. The question then becomes > whether this be sufficient to over-rule the first rows optimizer so that it does not use an index access which will avoid a sort.I tried doing that this morning by increasing the cardinality from the USER_VISITS table to a value such that the estimate was about that of the real amount of data. However the plan did not change.
    Could you use the ROW_NUMBER analytic function instead of ROWNUMInterestingly enough, when I tried this it generated the same plan as was used with the ALL_ROWS hint, so I may implement this query for now.
    I do have two more followup questions:
    1. Even though a better plan is picked the optimizer estimates are still off by a large margin because of bind variables and 5%* 5% * NUM_ROWS. How do I get the estimates in-line with the actual values? Should I really fudge statistics?
    2. Should I raise a bug report with Oracle over the behavior of the original query?That is great that the ROW_NUMBER analyitic function worked. You may want to perform some testing with this before implementing it in production to see whether Oracle performs significantly more logical or physical I/Os with the ROW_NUMBER analytic function compared to the ROWNUM solution with the ALL_ROWS hint.
    As Timur suggests, seeing a 10053 trace during a hard parse of both queries (with and without the ALL_ROWS hint) would help determine what is happening. It could be that a histogram exists which is feeding bad information to the optimizer, causing distorted cardinality in the plan. If bind peeking is used, the 5% * 5% rule might not apply, especially if a histogram is involved. Also, the WHERE clause includes "PRODUCT.PRODUCT_DESC != 'Home'" which might affect the cardinality in the plan.
    Your question may have prompted the starting of a thread in the SQL forum yesterday on the topic of ROWNUM, but it appears that thread was removed from the forum within the last couple hours.
    Charles Hooper
    IT Manager/Oracle DBA
    K&M Machine-Fabricating, Inc.

  • HT1379 My macbook pro 2013 is running to slow even when I am using the keyboard, it running with a delay. I upgraded the memories to 8gb but still slow what can i do to fix it.

    Good morning I am confronting serious problems with my Macbook pro 2013, that is runing to slow,  even when I am writing this email is running with some kind of delay. I upgraded the memories to 8gb but still running slow . Please let me know what I can do to solve the problem. Thanks in advance. Fernando

    1. This procedure is a diagnostic test. It changes nothing, for better or worse, and therefore will not, in itself, solve your problem.
    2. If you don't already have a current backup, back up all data before doing anything else. The backup is necessary on general principle, not because of anything in the test procedure. There are ways to back up a computer that isn't fully functional. Ask if you need guidance.
    3. Below are instructions to run a UNIX shell script, a type of program. All it does is to gather information about the state of your computer. That information goes nowhere unless you choose to share it on this page. However, you should be cautious about running any kind of program (not just a shell script) at the request of a stranger on a public message board. If you have doubts, search this site for other discussions in which this procedure has been followed without any report of ill effects. If you can't satisfy yourself that the instructions are safe, don't follow them.
    Here's a summary of what you need to do, if you choose to proceed: Copy a line of text from this web page into the window of another application. Wait for the script to run. It usually takes a couple of minutes. Then paste the results, which will have been copied automatically, back into a reply on this page. The sequence is: copy, paste, wait, paste again. Details follow.
    4. You may have started the computer in "safe" mode. Preferably, these steps should be taken in “normal” mode. If the system is now in safe mode and works well enough in normal mode to run the test, restart as usual. If you can only test in safe mode, do that.
    5. If you have more than one user, and the one affected by the problem is not an administrator, then please run the test twice: once while logged in as the affected user, and once as an administrator. The results may be different. The user that is created automatically on a new computer when you start it for the first time is an administrator. If you can't log in as an administrator, test as the affected user. Most personal Macs have only one user, and in that case this section doesn’t apply.
    6. The script is a single long line, all of which must be selected. You can accomplish this easily by triple-clicking  anywhere in the line. The whole line will highlight, though you may not see all of it in your browser, and you can then copy it. If you try to select the line by dragging across the part you can see, you won't get all of it.
    Triple-click anywhere in the line of text below on this page to select it:
    PATH=/usr/bin:/bin:/usr/sbin:/sbin; clear; Fb='%s\n\t(%s)\n'; Fm='\n%s\n\n%s\n'; Fr='\nRAM details\n%s\n'; Fs='\n%s: %s\n'; Fu='user %s%%, system %s%%'; PB="/usr/libexec/PlistBuddy -c Print"; A () { [[ a -eq 0 ]]; }; M () { find -L "$d" -type f | while read f; do file -b "$f" | egrep -lq XML\|exec && echo $f; done; }; Pc () { o=`grep -v '^ *#' "$2"`; Pm "$1"; }; Pm () { [[ "$o" ]] && o=`sed '/^ *$/d; s/^ */   /' <<< "$o"` && printf "$Fm" "$1" "$o"; }; Pp () { o=`$PB "$2" | awk -F'= ' \/$3'/{print $2}'`; Pm "$1"; }; Ps () { o=`echo $o`; [[ ! "$o" =~ ^0?$ ]] && printf "$Fs" "$1" "$o"; }; R () { o=; [[ r -eq 0 ]]; }; SP () { system_profiler SP${1}DataType; }; id | grep -qw '80(admin)'; a=$?; A && sudo true; r=$?; t=`date +%s`; clear; { A || echo $'No admin access\n'; A && ! R && echo $'No root access\n'; SP Software | sed '8!d;s/^ *//'; o=`SP Hardware | awk '/Mem/{print $2}'`; o=$((o<4?o:0)); Ps "Total RAM (GB)"; o=`SP Memory | sed '1,5d; /[my].*:/d'`; [[ "$o" =~ s:\ [^O]|x([^08]||0[^2]8[^0]) ]] && printf "$Fr" "$o"; o=`SP Diagnostics | sed '5,6!d'`; [[ "$o" =~ Pass ]] || Pm "POST"; for b in Thunderbolt USB; do o=`SP $b | sed -En '1d; /:$/{s/ *:$//;x;s/\n//p;}; /^ *V.* [0N].* /{s/ 0x.... //;s/[()]//g;s/\(.*: \)\(.*\)/ \(\2\)/;H;}; /Apple|SCSM/{s/.//g;h;}'`; Pm $b; done; o=`pmset -g therm | sed 's/^.*C/C/'`; [[ "$o" =~ No\ th|pms ]] && o=; Pm "Thermal conditions"; o=`pmset -g sysload | grep -v :`; [[ "$o" =~ =\ [^GO] ]] || o=; Pm "System load advisory"; o=`nvram boot-args | awk '{$1=""; print}'`; Ps "boot-args"; d=(/ ""); D=(System User); E=; for i in 0 1; do o=`cd ${d[$i]}L*/L*/Dia* || continue; ls | while read f; do [[ "$f" =~ h$ ]] && grep -lq "^Thread c" "$f" && e=" *" || e=; awk -F_ '!/ag$/{$NF=a[split($NF,a,".")]; print $0 "'"$e"'"}' <<< "$f"; done | tail`; Pm "${D[$i]} diagnostics"; done; [[ "$o" =~ \*$ ]] && printf $'\n* Code injection\n'; o=`syslog -F bsd -k Sender kernel -k Message CReq 'GPU |hfs: Ru|I/O e|last value [1-9]|n Cause: -|NVDA\(|pagin|SATA W|ssert|timed? ?o' | tail -n25 | awk '/:/{$4=""; $5=""};1'`; Pm "Kernel messages"; o=`df -m / | awk 'NR==2 {print $4}'`; o=$((o<5120?o:0)); Ps "Free space (MiB)"; o=$(($(vm_stat | awk '/eo/{sub("\\.",""); print $2}')/256)); o=$((o>=1024?o:0)); Ps "Pageouts (MiB)"; s=( `sar -u 1 10 | sed '$!d'` ); [[ s[4] -lt 85 ]] && o=`printf "$Fu" ${s[1]} ${s[3]}` || o=; Ps "Total CPU usage" && { s=(`ps acrx -o comm,ruid,%cpu | sed '2!d'`); o=${s[2]}%; Ps "CPU usage by process \"$s\" with UID ${s[1]}"; }; s=(`top -R -l1 -n1 -o prt -stats command,uid,prt | sed '$!d'`); s[2]=${s[2]%[+-]}; o=$((s[2]>=25000?s[2]:0)); Ps "Mach ports used by process \"$s\" with UID ${s[1]}"; o=`kextstat -kl | grep -v com\\.apple | cut -c53- | cut -d\< -f1`; Pm "Loaded extrinsic kernel extensions"; R && o=`sudo launchctl list | sed 1d | awk '!/0x|com\.(apple|openssh|vix\.cron)|org\.(amav|apac|calendarse|cups|dove|isc|ntp|post[fg]|x)/{print $3}'`; Pm "Extrinsic system jobs"; o=`launchctl list | sed 1d | awk '!/0x|com\.apple|org\.(x|openbsd)|\.[0-9]+$/{print $3}'`; Pm "Extrinsic agents"; o=`for d in {/,}L*/Lau*; do M; done | grep -v com\.apple\.CSConfig | while read f; do ID=$($PB\ :Label "$f") || ID="No job label"; printf "$Fb" "$f" "$ID"; done`; Pm "launchd items"; o=`for d in /{S*/,}L*/Star*; do M; done`; Pm "Startup items"; o=`find -L /S*/L*/E* {/,}L*/{A*d,Compon,Ex,In,Keyb,Mail/B,P*P,Qu*T,Scripti,Servi,Spo}* -type d -name Contents -prune | while read d; do ID=$($PB\ :CFBundleIdentifier "$d/Info.plist") || ID="No bundle ID"; [[ "$ID" =~ ^com\.apple\.[^x]|Accusys|ArcMSR|ATTO|HDPro|HighPoint|driver\.stex|hp-fax|\.hpio|JMicron|microsoft\.MDI|print|SoftRAID ]] || printf "$Fb" "${d%/Contents}" "$ID"; done`; Pm "Extrinsic loadable bundles"; o=`find -L /u*/{,*/}lib -type f | while read f; do file -b "$f" | grep -qw shared && ! codesign -v "$f" && echo $f; done`; Pm "Unsigned shared libraries"; o=`for e in DYLD_INSERT_LIBRARIES DYLD_LIBRARY_PATH; do launchctl getenv $e; done`; Pm "Environment"; o=`find -L {,/u*/lo*}/e*/periodic -type f -mtime -10d`; Pm "Modified periodic scripts"; o=`scutil --proxy | grep Prox`; Pm "Proxies"; o=`scutil --dns | awk '/r\[0\] /{if ($NF !~ /^1(0|72\.(1[6-9]|2[0-9]|3[0-1])|92\.168)\./) print $NF; exit}'`; Ps "DNS"; R && o=`sudo profiles -P | grep : | wc -l`; Ps "Profiles"; f=auto_master; [[ `md5 -q /etc/$f` =~ ^b166 ]] || Pc $f /etc/$f; for f in fstab sysctl.conf crontab launchd.conf; do Pc $f /etc/$f; done; Pc "hosts" <(grep -v 'host *$' /etc/hosts); Pc "User launchd" ~/.launchd*; R && Pc "Root crontab" <(sudo crontab -l); Pc "User crontab" <(crontab -l); R && o=`sudo defaults read com.apple.loginwindow LoginHook`; Pm "Login hook"; Pp "Global login items" /L*/P*/loginw* Path; Pp "User login items" L*/P*/*loginit* Name; Pp "Safari extensions" L*/Saf*/*/E*.plist Bundle | sed -E 's/(\..*$|-[1-9])//g'; o=`find ~ $TMPDIR.. \( -flags +sappnd,schg,uappnd,uchg -o ! -user $UID -o ! -perm -600 \) | wc -l`; Ps "Restricted user files"; cd; o=`SP Fonts | egrep "Valid: N|Duplicate: Y" | wc -l`; Ps "Font problems"; o=`find L*/{Con,Pref}* -type f ! -size 0 -name *.plist | while read f; do plutil -s "$f" >&- || echo $f; done`; Pm "Bad plists"; d=(Desktop L*/Keyc*); n=(20 7); for i in 0 1; do o=`find "${d[$i]}" -type f -maxdepth 1 | wc -l`; o=$((o<=n[$i]?0:o)); Ps "${d[$i]##*/} file count"; done; o=$((`date +%s`-t)); Ps "Elapsed time (s)"; } 2>/dev/null | pbcopy; exit 2>&-
    Copy the selected text to the Clipboard by pressing the key combination command-C.
    7. Launch the built-in Terminal application in any of the following ways:
    ☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)
    ☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.
    ☞ Open LaunchPad. Click Utilities, then Terminal in the icon grid.
    When you launch Terminal, a text window will open with a line already in it, ending either in a dollar sign ($) or a percent sign (%). If you get the percent sign, enter
    exec bash
    in the window and press return. You should then get a new line ending in a dollar sign.
    Click anywhere in the Terminal window and paste (command-V). The text you pasted should vanish immediately. If it doesn't, press the return key.
    If you're logged in as an administrator, you'll be prompted for your login password. Nothing will be displayed when you type it. You will not see the usual dots in place of typed characters. Make sure caps lock is off. Type carefully and then press return. You may get a one-time warning to be careful. If you make three failed attempts to enter the password, the test will run anyway, but it will produce less information. In most cases, the difference is not important. If you don't know your password, or if you prefer not to enter it, just press return three times at the password prompt.
    If you're not logged in as an administrator, you won't be prompted for a password. The test will still run. It just won't do anything that requires administrator privileges.
    The test may take a few minutes to run, depending on how many files you have and the speed of the computer. A computer that's abnormally slow may take longer to run the test. While it's running, there will be nothing in the Terminal window and no indication of progress. Wait for the line "[Process completed]" to appear. If you don't see it within half an hour or so, the test probably won't complete in a reasonable time. In that case, close the Terminal window and report your results. No harm will be done.
    8. When the test is complete, quit Terminal. The results will have been copied to the Clipboard automatically. They are not shown in the Terminal window. Please don't copy anything from there. All you have to do is start a reply to this comment and then paste by pressing command-V again.
    If any private information, such as your name or email address, appears in the results, anonymize it before posting. Usually that won't be necessary.
    When you post the results, you might see the message, "You have included content in your post that is not permitted." It means that the forum software has misidentified something in the post as a violation of the rules. If it happens, please post the test results on Pastebin, then post a link here to the page you created.
    Note: This is a public forum, and others may give you advice based on the results of the test. They speak only for themselves, and I don't necessarily agree with them.
    Copyright © 2014 Linc Davis. As the sole author of this work, I reserve all rights to it except as provided in the Terms of Use of Apple Support Communities ("ASC"). Readers of ASC may copy it for their own personal use. Neither the whole nor any part may be redistributed.

  • Why optimizer prefers nested loop over hash join?

    What do I look for if I want to find out why the server prefers a nested loop over hash join?
    The server is 10.2.0.4.0.
    The query is:
    SELECT p.*
        FROM t1 p, t2 d
        WHERE d.emplid = p.id_psoft
          AND p.flag_processed = 'N'
          AND p.desc_pool = :b1
          AND NOT d.name LIKE '%DUPLICATE%'
          AND ROWNUM < 2tkprof output is:
    Production
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        1      0.01       0.00          0          0          4           0
    Execute      1      0.00       0.01          0          4          0           0
    Fetch        1    228.83     223.48          0    4264533          0           1
    total        3    228.84     223.50          0    4264537          4           1
    Misses in library cache during parse: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 108  (SANJEEV)
    Rows     Row Source Operation
          1  COUNT STOPKEY (cr=4264533 pr=0 pw=0 time=223484076 us)
          1   NESTED LOOPS  (cr=4264533 pr=0 pw=0 time=223484031 us)
      10401    TABLE ACCESS FULL T1 (cr=192 pr=0 pw=0 time=228969 us)
          1    TABLE ACCESS FULL T2 (cr=4264341 pr=0 pw=0 time=223182508 us)Development
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        1      0.01       0.00          0          0          0           0
    Execute      1      0.00       0.01          0          4          0           0
    Fetch        1      0.05       0.03          0        512          0           1
    total        3      0.06       0.06          0        516          0           1
    Misses in library cache during parse: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 113  (SANJEEV)
    Rows     Row Source Operation
          1  COUNT STOPKEY (cr=512 pr=0 pw=0 time=38876 us)
          1   HASH JOIN  (cr=512 pr=0 pw=0 time=38846 us)
         51    TABLE ACCESS FULL T2 (cr=492 pr=0 pw=0 time=30230 us)
        861    TABLE ACCESS FULL T1 (cr=20 pr=0 pw=0 time=2746 us)

    sanjeevchauhan wrote:
    What do I look for if I want to find out why the server prefers a nested loop over hash join?
    The server is 10.2.0.4.0.
    The query is:
    SELECT p.*
    FROM t1 p, t2 d
    WHERE d.emplid = p.id_psoft
    AND p.flag_processed = 'N'
    AND p.desc_pool = :b1
    AND NOT d.name LIKE '%DUPLICATE%'
    AND ROWNUM < 2
    You've got already some suggestions, but the most straightforward way is to run the unhinted statement in both environments and then force the join and access methods you would like to see using hints, in your case probably "USE_HASH(P D)" in your production environment and "FULL(P) FULL(D) USE_NL(P D)" in your development environment should be sufficient to see the costs and estimates returned by the optimizer when using the alternate access and join patterns.
    This give you a first indication why the optimizer thinks that the chosen access path seems to be cheaper than the obviously less efficient plan selected in production.
    As already mentioned by Hemant using bind variables complicates things a bit since EXPLAIN PLAN is not reliable due to bind variable peeking performed when executing the statement, but not when explaining.
    Since you're already on 10g you can get the actual execution plan used for all four variants using DBMS_XPLAN.DISPLAY_CURSOR which tells you more than the TKPROF output in the "Row Source Operation" section regarding the estimates and costs assigned.
    Of course the result of your whole exercise might be highly dependent on the actual bind variable value used.
    By the way, your statement is questionable in principle since you're querying for the first row of an indeterministic result set. It's not deterministic since you've defined no particular order so depending on the way Oracle executes the statement and the physical storage of your data this query might return different results on different runs.
    This is either an indication of a bad design (If the query is supposed to return exactly one row then you don't need the ROWNUM restriction) or an incorrect attempt of a Top 1 query which requires you to specify somehow an order, either by adding a ORDER BY to the statement and wrapping it into an inline view, or e.g. using some analytic functions that allow you specify a RANK by a defined ORDER.
    This is an example of how a deterministic Top N query could look like:
    SELECT
    FROM
    SELECT p.*
        FROM t1 p, t2 d
        WHERE d.emplid = p.id_psoft
          AND p.flag_processed = 'N'
          AND p.desc_pool = :b1
          AND NOT d.name LIKE '%DUPLICATE%'
    ORDER BY <order_criteria>
    WHERE ROWNUM <= 1;Regards,
    Randolf
    Oracle related stuff blog:
    http://oracle-randolf.blogspot.com/
    SQLTools++ for Oracle (Open source Oracle GUI for Windows):
    http://www.sqltools-plusplus.org:7676/
    http://sourceforge.net/projects/sqlt-pp/

  • Optimizer chooses slow parallel plan in Oracle 9.2

    We have an application that we are migrating from Oracle8 (8.1.7) to Oracle9 (9.2.0). We've changed from DMTs to LMTs too. We've come across a performance issue when running a application benchmark that we've isolated down to a simple 1 row look up query in a rather small table, initially 8 rows growing to several thousand. The table is 2 columns, an int ID value and a VARCHAR2(254) column. There is a unique index on the name column. The prepared query is of the form:
    select id from table_name where name = <bind_variable>;
    In Oracle8 the CBO chooses a serial plan of unique index lookup followed by table access by rowid to get the result from the table row. Oracle9 chooses a parallel table scan of degree default (effective degree 4) for the same query even when the table only has 8 rows.
    Over thousands of executions the Oracle8 query average 2-3 msec each. However, the exactly the same data and same sequence of queries the Oracle9 query averages 150 msec each. Clearly the cost of setup and tear down of executing a parallel query here is too expensive.
    My question is why is the Oracle9 optimizer making such a different, and in my opinion poorer, choice of query plan than the Oracle8 optimizer?
    I should note the optimizer stats are the same and result from exactly the same DBMS_STATS.GATHER_TABLE_STATS calls and Oracle9 is behaving exactly the same with the OPTIMIZER_FEATURES_ENABLE set to 9.2.0 and 8.1.7.

    Gabriele,
    As indicated in the original post - the following work-around might work for you for bug 9743250. What this does is essentially force the optimizer to ALWAYS use the spatial index. That is usually good - unless the query is actually more efficient not using the index, such as when it is much cheaper to just to a FTS. Anyhow this is what you can do from 11.2.0.1 to 11.2.0.3 - fixed in 11.2.0.4 and 12.1.0.1:
    connect /as sysdba
    alter session set current_schema=MDSYS;
    DISASSOCIATE STATISTICS FROM INDEXTYPES spatial_index FORCE
    DISASSOCIATE STATISTICS FROM PACKAGES sdo_3gl FORCE;
    DISASSOCIATE STATISTICS FROM PACKAGES prvt_idx FORCE;
    Bryan

  • Problem description: (MacBook Pro 15" late 2008, OSX Yosemite 10.10.2 installed, no pending updates) computer is running very slow - takes 2-3 minutes to open apps such as Pages, even when no other apps are open.  Randomly freezes and becomes unrespo

    Problem description:
    (MacBook Pro 15” late 2008, OSX Yosemite 10.10.2 installed, no pending updates) computer is running very slow - takes 2-3 minutes to open apps such as Pages, even when no other apps are open.  Randomly freezes and becomes unresponsive, requiring forced power down.  Randomly logs off.  Removed Kodak AIO software via Clean My Mac2, but BonjourAgent still there and requesting access.  Cleaned weekly with Clean My Mac2 and running Sophos AntiVirus. 2GB memory installed.  Currently 169.99 GB available of 249.2 GB capacity.
    Help?
    EtreCheck version: 2.1.8 (121)
    Report generated March 21, 2015 at 11:35:35 AM EDT
    Download EtreCheck from http://etresoft.com/etrecheck
    Click the [Click for support] links for help with non-Apple products.
    Click the [Click for details] links for more information about that line.
    Hardware Information: ℹ️
        MacBook Pro (15-inch, Late 2008) (Technical Specifications)
        MacBook Pro - model: MacBookPro5,1
        1 2.4 GHz Intel Core 2 Duo CPU: 2-core
        2 GB RAM Upgradeable
            BANK 0/DIMM0
                1 GB DDR3 1067 MHz ok
            BANK 0/DIMM1
                1 GB DDR3 1067 MHz ok
        Bluetooth: Old - Handoff/Airdrop2 not supported
        Wireless:  en1: 802.11 a/b/g/n
        Battery Health: Normal - Cycle count 59
    Video Information: ℹ️
        NVIDIA GeForce 9400M - VRAM: 256 MB
            Color LCD 1440 x 900
        NVIDIA GeForce 9600M GT - VRAM: 256 MB
    System Software: ℹ️
        OS X 10.10.2 (14C1514) - Time since boot: 0:13:37
    Disk Information: ℹ️
        Hitachi HTS543225L9SA02 disk0 : (250.06 GB)
            EFI (disk0s1) <not mounted> : 210 MB
            Macintosh HD (disk0s2) / : 249.20 GB (168.91 GB free)
            Recovery HD (disk0s3) <not mounted>  [Recovery]: 650 MB
        HL-DT-ST DVDRW  GS21N 
    USB Information: ℹ️
        Apple Inc. Built-in iSight
        Apple Inc. BRCM2046 Hub
            Apple Inc. Bluetooth USB Host Controller
        Apple, Inc. Apple Internal Keyboard / Trackpad
        Apple Computer, Inc. IR Receiver
    Gatekeeper: ℹ️
        Mac App Store and identified developers
    Kernel Extensions: ℹ️
            /Library/Extensions
        [not loaded]    com.leapfrog.driver.LfConnectDriver (1.11.1 - SDK 10.10) [Click for support]
        [loaded]    com.sophos.kext.sav (9.2.50 - SDK 10.8) [Click for support]
        [loaded]    com.sophos.nke.swi (9.2.50 - SDK 10.8) [Click for support]
            /System/Library/Extensions
        [not loaded]    com.leapfrog.codeless.kext (2) [Click for support]
    Launch Agents: ℹ️
        [not loaded]    com.adobe.AAM.Updater-1.0.plist [Click for support]
        [running]    com.kodak.BonjourAgent.plist [Click for support]
        [loaded]    com.oracle.java.Java-Updater.plist [Click for support]
        [running]    com.sophos.uiserver.plist [Click for support]
    Launch Daemons: ℹ️
        [loaded]    com.adobe.fpsaud.plist [Click for support]
        [loaded]    com.adobe.SwitchBoard.plist [Click for support]
        [loaded]    com.leapfrog.connect.authdaemon.plist [Click for support]
        [loaded]    com.macpaw.CleanMyMac2.Agent.plist [Click for support]
        [loaded]    com.oracle.java.Helper-Tool.plist [Click for support]
        [loaded]    com.oracle.java.JavaUpdateHelper.plist [Click for support]
        [running]    com.sophos.common.servicemanager.plist [Click for support]
    User Launch Agents: ℹ️
        [not loaded]    com.adobe.AAM.Updater-1.0.plist [Click for support]
        [loaded]    com.macpaw.CleanMyMac2Helper.diskSpaceWatcher.plist [Click for support]
        [loaded]    com.macpaw.CleanMyMac2Helper.scheduledScan.plist [Click for support]
        [loaded]    com.macpaw.CleanMyMac2Helper.trashWatcher.plist [Click for support]
    User Login Items: ℹ️
        Dropbox    Application  (/Applications/Dropbox.app)
    Internet Plug-ins: ℹ️
        AdobeExManDetect: Version: AdobeExManDetect 1.1.0.0 - SDK 10.7 [Click for support]
        FlashPlayer-10.6: Version: 16.0.0.305 - SDK 10.6 [Click for support]
        Default Browser: Version: 600 - SDK 10.10
        Flash Player: Version: 16.0.0.305 - SDK 10.6 Outdated! Update
        AdobeAAMDetect: Version: AdobeAAMDetect 2.0.0.0 - SDK 10.7 [Click for support]
        AmazonMP3DownloaderPlugin1017265: Version: AmazonMP3DownloaderPlugin 1.0.17 [Click for support]
        JavaAppletPlugin: Version: Java 8 Update 31 Check version
        AmazonMP3DownloaderPlugin: Version: AmazonMP3DownloaderPlugin 1.0.17 [Click for support]
        QuickTime Plugin: Version: 7.7.3
        iPhotoPhotocast: Version: 7.0 - SDK 10.8
    User internet Plug-ins: ℹ️
        CitrixOnlineWebDeploymentPlugin: Version: 1.0.94 [Click for support]
        Google Earth Web Plug-in: Version: 6.0 [Click for support]
    Safari Extensions: ℹ️
        AdBlock
        Disconnect
        Add To Amazon Wish List
    3rd Party Preference Panes: ℹ️
        Flash Player  [Click for support]
        Java  [Click for support]
        Tuxera NTFS  [Click for support]
    Time Machine: ℹ️
        Skip System Files: NO
        Mobile backups: OFF
        Auto backup: YES
        Volumes being backed up:
            Macintosh HD: Disk size: 249.20 GB Disk used: 80.29 GB
        Destinations:
            Backup [Local]
            Total size: 63.67 GB
            Total number of backups: 1
            Oldest backup: 2015-02-23 16:16:08 +0000
            Last backup: 2015-02-23 16:16:08 +0000
            Size of backup disk: Too small
                Backup size 63.67 GB < (Disk used 80.29 GB X 3)
    Top Processes by CPU: ℹ️
             5%    WindowServer
             1%    loginwindow
             0%    AppleSpell
             0%    SophosUIServer
             0%    SophosAntiVirus
    Top Processes by Memory: ℹ️
        118 MB    InterCheck
        101 MB    SophosScanD
        60 MB    Dropbox
        54 MB    mds_stores
        41 MB    SophosAntiVirus
    Virtual Memory Information: ℹ️
        49 MB    Free RAM
        682 MB    Active RAM
        652 MB    Inactive RAM
        315 MB    Wired RAM
        1.49 GB    Page-ins
        2 MB    Page-outs
    Diagnostics Information: ℹ️
        Mar 21, 2015, 11:18:52 AM    Self test - passed
        Mar 21, 2015, 10:53:03 AM    /Library/Logs/DiagnosticReports/SophosUIServer_2015-03-21-105303_[redacted].cra sh
        Mar 19, 2015, 07:59:03 PM    /Library/Logs/DiagnosticReports/CalNCService_2015-03-19-195903_[redacted].crash

    Linc Davis wrote:
    Slow performance after installing Yosemite on an older Mac is often caused by inadequate memory. Although you can install the upgrade on a Mac with 2 GB of memory, experience has shown that at least 4 GB is needed for full performance.
    Select About This Mac from the Apple menu. If you have less than 4 GB of memory, and your model has upgradable memory, install as much as it can take, or at least that much. Any reputable RAM vendor will have a web form in which you can select the Mac model and be directed to compatible parts.
    Memory in the MacBook Air is not upgradable. If that's what you have, you should restore the previous system from a backup, or replace the machine. Ask if you need guidance.
    The Etrecheck report clearly shows that SylvieRose has a Macbook Pro, not a Macbook Air and that there are only 2 GB  RAM installed.  The Etrecheck report can be very informative if one takes the time to examine it. 
    Ciao.

  • While using a drop-down menu i.e. File, edit, image, or even when saving as and choosing the file type; the list appears and I am able to highlight what i want but cannot click on anything.

    While using a drop-down menu i.e. File, edit, image, or even when saving as and choosing the file type; the list appears and I am able to highlight what i want but cannot click on anything. This is becoming incredibly frustrating. It happens at random time and a restart of the computer is all that helps, then with out any notice it starts to do this again.  Mac Book Pro i7 2.2 16 GB 1333 Ram, (2) 450GB SSD both internal to machine. At this point I am losing file because I am unable to save in the file type I need. Does anyone out there know how to solve this issue?
    Thanks
    phil

    I haven't been unify photoshop much in the past month, but I did try your suggestion and it seemed to work for a while. Today when i went to save a document the same thing happened: click on file>save at this point I can not click on save even though it is highlighted. Tryed to use command s that brings up the save dialogue box, but when I try to change file type I again cannot select it from the drop down menu.

  • WRT54GX2 slow connection all the time, even when right next to it.

    My connections are always dropping since I bought the router. Even when I am close to the router the connection is still slow. I keep my PC optimized always so I have ruled out the laptop. Are there any setting changes that I might try? I use my wireless connection only for my laptop.
    Here are the stats:
    WRT54GX2 - Firmware 1.01.18 
    Not sure what version I have (ver2 or ver1)
    Connection Type - PPPoE
    NAT - Yes
    Unique SSID
    G-only
    Channel - 11
    Broadcast - NO
    Security Mode - WPA/WPA2
    MAC filtering - YES
    Basic Rate - set#2
    Trans Rate - AUTO
    Beacon Interval - 100
    DTIM - 1
    Frag Thres - 2346
    RTS Thres - 2347
    Laptop - IBM Thinkpad Z60M w/Atheros card
    Thanks in Advance!

    I used to recommend that "SSID Broadcast" be disabled for security reasons.  But newer cracking methods have made this old trick practically worthless.  So set "SSID Broadcast" to "enabled". This will help your computer find and lock on to your router's signal.  You security comes from using WPA/WPA2 and a strong password.
    Windows XP requires a patch to properly run WPA2. Go to Microsoft Knowledge base, article ID=893357 and it will direct you to the patch.
    Sadly, the patch is not part of the automatic Windows XP updates, so lots of people are missing the patch.
    Poor wireless connections are often caused by radio interference from other 2.4 GHz devices. This includes wireless phones, wireless baby monitors, microwave ovens, wireless mice and keyboards, wireless speakers, and your neighbor's wireless network. In rare cases, Bluetooth devices can interfere. Even some 5+ GHz phones also use the 2.4 Ghz band. Unplug these devices, and see if that corrects your problem.
    In your router, try a different channel. There are 11 channels in the 2.4 GHz band. Usually channel 1, 6, or 11 works best. Check out your neighbors, and see what channel they are using. Because the channels overlap one another, try to stay at least +5 or -5 channels from your strongest neighbors. For example, if you have a strong neighbor on channel 9, try any channel 1 through 4.
    Also, try to locate the router about 4 to 6 feet above the floor, in an open area. Do not locate it behind your monitor or near other computer equipment or speakers. The antenna should be vertical.
    If the above does not correct your problem, download and install the latest driver for your wireless card.
    If you are still having trouble, download and install (or re-install) the latest firmware for your router.
    Hope this helps.
    Message Edited by toomanydonuts on 08-04-2007 02:55 AM

  • How do I join/link 2 tracks together so one plays after the other (even when shuffled)

    Is it possible to link 2 songs together within an album or playlist, so they still play in the correct order even when playing in a shuffled playlist?  Some tracks are just meant to be played in the right order (example is INXS "Need You Tonight", followed immediately by "Mediate".  Sounds crazy I know, but these 2 tracks are just meant to go together!)  Any help or hints greatly appreciated.  Thanks in advance to all of you cleverer people than me!

    If you are ripping from CD, select the CD, select the songs, then menu Advanced > Join CD tracks. Then RIP and it will be as a single track named with both song names.
    If you do not have the CD, you can use this -> Join Together

  • Why is it YouTube loads really slow sometimes even when I'm connected to wifi ?

    Why is it YouTube loads really slow sometimes even when I'm connected to wifi ?

    Hard to say. The speed of your Internet connection. Congestion on YouTube's servers, problems at any point in between you and them... When you are connected to WiFi, you will get a substantially higher resolution version of some videos than you do on 3G.
    Are you using the youtube app or are you just accessing it via a web browser.

  • MUSIC PLAYS AT A SLOWER BEAT EVEN WHEN  IPOD IS FULLY CHARGED.

    THE MUSIC IN MY IPOD NANO 4TH GENERATION IS PLAYING AT A SLOWER SPEED EVEN WHEN THE IPOD IS FULLY CHARGED. THE MUSIC SOUNDS LIKE IT'S DYING. IS MY IPOD DYING? NEED HELP!

    Try:                                               
    - iOS: Not responding or does not turn on
    - Also try DFU mode after try recovery mode
    How to put iPod touch / iPhone into DFU mode « Karthik's scribblings
    - If not successful and you can't fully turn the iOS device fully off, let the battery fully drain. After charging for an least an hour try the above again.
    - Try another cable       
    - Try on another computer                            
    - If still not successful that usually indicates a hardware problem and an appointment at the Genius Bar of an Apple store is in order.
      Apple Retail Store - Genius Bar                              

Maybe you are looking for

  • How can find  database field and table name

    how can find the underline database field name,table name from java page. Example. in oracle apps when we go purchaseing super user then supplier base then supplier and find supplier detail .

  • I do not have a tools option at the top of my browser. where can I find it please?

    A website has asked me to enable javascript but my browser has no tools option at the top. how can I enable javascript? == today

  • The awesome bar is suggesting history

    I changed my settings so that the awesome bar only suggests my bookmarks. However, it still is suggesting history (and items that are not in my bookmarks). I've deleted my history multiple times, but websites that I have only visited once are being a

  • IDoc types conversion

    Hi all, I'm investigating the possibility of using ALE for transfering R/3 data to ECC system. But I have following questions: 1. Is it possible to convert one IDoc to several IDocs? I mean source system send 1 IDOC and on reciever it converts into s

  • Satellite L650-10H - need Win 7 controller communications driver

    hi! i have SATELLITE L650-10H NOTEBOOK and i want to install windows 7 ultimate 64bit so i downloaded the drivers from the site without any software that i don't need and i still have one driver that i don't know what is it his name:CONTROLLER I SIMP