What's wrong with the following result_cache hint?

Dear all,
I try to use result_cache hint in the following sql aggregate function statement, but the explain plan doesn't show any difference between non-result_cached and with result_cached:
SQL> set autot on explain stat
SQL> select account_mgr_id,count(*) from customers group by account_mgr_id;
ACCOUNT_MGR_ID      COUNT(*)
        147            76
        149            74
        148            58
        145           111
Execution Plan
Plan hash value: 1577413243
| Id  | Operation        | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
|   0 | SELECT STATEMENT   |            |     4 |    16 |     6     (17)| 00:00:01 |
|   1 |  HASH GROUP BY        |            |     4 |    16 |     6     (17)| 00:00:01 |
|   2 |   TABLE ACCESS FULL| CUSTOMERS |   319 |  1276 |     5      (0)| 00:00:01 |
Statistics
       0  recursive calls
       0  db block gets
      16  consistent gets
       0  physical reads
       0  redo size
     689  bytes sent via SQL*Net to client
     524  bytes received via SQL*Net from client
       2  SQL*Net roundtrips to/from client
       0  sorts (memory)
       0  sorts (disk)
       4  rows processed
SQL> select /*+ result_cache */ account_mgr_id,count(*) from customers group by account_mgr_id;
ACCOUNT_MGR_ID      COUNT(*)
        147            76
        149            74
        148            58
        145           111
Execution Plan
Plan hash value: 1577413243
| Id  | Operation         | Name                | Rows  | Bytes | Cost (%CPU)| Time      |
|   0 | SELECT STATEMENT    |                     |     4 |    16 |     6  (17)| 00:00:01 |
|   1 |  RESULT CACHE         | 3s3bugtq0p5bm71mhmqvvw0x7y |      |      |           |       |
|   2 |   HASH GROUP BY     |                     |     4 |    16 |     6  (17)| 00:00:01 |
|   3 |    TABLE ACCESS FULL| CUSTOMERS            |   319 |  1276 |     5   (0)| 00:00:01 |
Result Cache Information (identified by operation id):
   1 - column-count=2; dependencies=(OE.CUSTOMERS); name="select /*+ result_cache */ account_mgr_id,
count(*) from customers group by account_mgr_id"
Statistics
       1  recursive calls
       0  db block gets
      16  consistent gets
       0  physical reads
       0  redo size
     689  bytes sent via SQL*Net to client
     524  bytes received via SQL*Net from client
       2  SQL*Net roundtrips to/from client
       0  sorts (memory)
       0  sorts (disk)
       4  rows processedAnything wrong with the hint?
Best regards,
Val

Two executions required to benefit from result cache (two executions of the statement with the result cache hint).
First to populate, Second to benefit.
Can offer good benefits particularly with poor code - e.g. functions in SQL, row-by-row function calls, etc.
Optimal solution may be to refactor to more efficient approach.
But result cache can deliver significant short term tactical gain.
Not a no-brainer though.
There were scalability issues with a single latch protecting the result cache - I believe this has changed in 11gR2.
There are also issues with concurrent executions were the result needs to be recalculated and takes x time to regenerate that result.
See http://uhesse.wordpress.com/2009/11/27/result-cache-another-brilliant-11g-new-feature/#comment-216
SQL> drop table t1;
Table dropped.
SQL>
SQL> create table t1
  2  as
  3  select rownum col1
  4  from   dual
  5  connect by rownum <= 100000;
Table created.
SQL> set autotrace traceonly explain statistics
SQL> select col1
  2  from   t1
  3  where  col1 >= 99997;
Execution Plan
Plan hash value: 3617692013
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
|   0 | SELECT STATEMENT  |      |    10 |   130 |    58   (9)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T1   |    10 |   130 |    58   (9)| 00:00:01 |
Predicate Information (identified by operation id):
   1 - filter("COL1">=99997)
Note
   - dynamic sampling used for this statement (level=4)
Statistics
         10  recursive calls
          0  db block gets
        220  consistent gets
        153  physical reads
          0  redo size
        379  bytes sent via SQL*Net to client
        334  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          4  rows processed
SQL> select col1
  2  from   t1
  3  where  col1 >= 99997;
Execution Plan
Plan hash value: 3617692013
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
|   0 | SELECT STATEMENT  |      |    10 |   130 |    58   (9)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T1   |    10 |   130 |    58   (9)| 00:00:01 |
Predicate Information (identified by operation id):
   1 - filter("COL1">=99997)
Note
   - dynamic sampling used for this statement (level=4)
Statistics
          0  recursive calls
          0  db block gets
        158  consistent gets
          0  physical reads
          0  redo size
        379  bytes sent via SQL*Net to client
        334  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          4  rows processed
SQL>
SQL>
SQL> select /*+ result_cache */ col1
  2  from   t1
  3  where  col1 >= 99997;
Execution Plan
Plan hash value: 3617692013
| Id  | Operation          | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |
|   0 | SELECT STATEMENT   |                            |    10 |   130 |    58   (9)| 00:00:01 |
|   1 |  RESULT CACHE      | 4p777jcbdgjm25xy3502ypdb5r |       |       |            |          |
|*  2 |   TABLE ACCESS FULL| T1                         |    10 |   130 |    58   (9)| 00:00:01 |
Predicate Information (identified by operation id):
   2 - filter("COL1">=99997)
Result Cache Information (identified by operation id):
   1 - column-count=1; dependencies=(RIMS.T1); name="select /*+ result_cache */ col1
from   t1
where  col1 >= 99997"
Note
   - dynamic sampling used for this statement (level=4)
Statistics
          4  recursive calls
          0  db block gets
        216  consistent gets
          0  physical reads
          0  redo size
        379  bytes sent via SQL*Net to client
        334  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          4  rows processed
SQL>
SQL>
SQL> select /*+ result_cache */ col1
  2  from   t1
  3  where  col1 >= 99997;
Execution Plan
Plan hash value: 3617692013
| Id  | Operation          | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |
|   0 | SELECT STATEMENT   |                            |    10 |   130 |    58   (9)| 00:00:01 |
|   1 |  RESULT CACHE      | 4p777jcbdgjm25xy3502ypdb5r |       |       |            |          |
|*  2 |   TABLE ACCESS FULL| T1                         |    10 |   130 |    58   (9)| 00:00:01 |
Predicate Information (identified by operation id):
   2 - filter("COL1">=99997)
Result Cache Information (identified by operation id):
   1 - column-count=1; dependencies=(RIMS.T1); name="select /*+ result_cache */ col1
from   t1
where  col1 >= 99997"
Note
   - dynamic sampling used for this statement (level=4)
Statistics
          0  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
        379  bytes sent via SQL*Net to client
        334  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          4  rows processed
SQL>

Similar Messages

  • What's wrong with the following code?

    What's wrong with the following code?
    Circle cir1;
    double rad = cir1.radius

    The circle Object was never instantiated.
    In other words, you have set a declaring of a Circle, but it has not been created in memory yet.
    You will create it using the " = new Circle( PARAMETERS_HERE ); "
    Or some other method that returns a circle.

  • What is wrong with the following Java servlet code that downloads files?

    Hi,
    I need urgent help.
    This is the issue. I have a JSP code that calls a Java servlet class. This class is used to download files from the JSP page. The following is the piece of code that does the file download.
    String pathOfFile = gsPath + "/" + gsFileName.substring(gsFileName.indexOf("~")+1);
    File F = new File(pathOfFile);
    res.setContentType("application/stream");
    res.setHeader("Content-Disposition", "attachment; filename=" +gsFileName.trim());
    This code works just fine with IE. However, when this is used with Netscape, the class name gets added to the original file name extension. For example, if the class name is 'FileRetriever' and the file being downloaded is originally named 'a.doc', the file gets a name of 'a.doc.FileRetriever' after download using Netscape or Mozilla.
    One way to solve this is by adding the appropriate file type in the MIME settings in browser preference. However, this not a permanent solution.
    Can somebody let me know the correct code to fix this issue?
    Thanks for your time.

    We loose control of the file name once we pass the original file name to the input stream. When our code instructs Netscape to write the file on the local disk using an output stream, that is when Netscape/Mozilla adds this additional extension to the original file. So, essentially, we do not know about this additional extension.
    Any ideas on how to resolve this?
    Thanks.

  • What's wrong with the activation server? i just bought my ipad wifi celllular... and have a 3g cellular network connection... when i press the bottom to activate my ipad it says the activation server cannot be reached. what to do then?

    what's wrong with the activation server? i just bought my ipad wifi celllular... and have a 3g cellular network connection... when i press the bottom to activate my ipad it says the activation server cannot be reached. what to do then?

    Hey aries35,
    I found the following that goes over troubleshooting the same issue for the iPhone. I know you have an iPad, but the steps should still apply:
    Perform the following steps:
    Restart the iPhone.
    Try another means of reaching the activation server and attempt to activate.
    Try connecting to a known-good Wi-Fi network if you're unable to activate using a cellular data connection.
    Try connecting to iTunes if you're unable to activate using Wi-Fi.
    Restore the iPhone.
    If you receive an alert message when you attempt to activate your iPhone, try to place the iPhone in recovery mode and perform a restore. If you're still unable to complete the setup assistant due to an activation error, contact Apple for assistance.
    via: iPhone: Troubleshooting activation issues
    http://support.apple.com/kb/TS3424
    Cheers,
    Delgadoh

  • What's wrong with the wsdl

    We are trying to create a proxy from the following wsdl file and getting an error message: illegal syntax: API:Parameter BINDING has initial value
    The webservice that we are trying to consume is from TIBCO .
    Can someone please help me to find out what's wrong with the wsdl.
    <?xml version = "1.0" encoding = "UTF-8"?>
    <!--Created by TIBCO WSDL-->
    <wsdl:definitions name = "Untitled" targetNamespace = "http://xmlns.example.com/1268018884234/OperationImpl" xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns = "http://xmlns.example.com/1268018884234/OperationImpl" xmlns:wsdl = "http://schemas.xmlsoap.org/wsdl/" xmlns:xs = "http://www.w3.org/2001/XMLSchema">
         <wsdl:types/>
         <wsdl:service name = "TIBCO__ABAP">
              <wsdl:port binding = "tns:SOAPEventSourceBinding" name = "SOAPEventSource">
                   <soap:address location = "http://192.168.9.58:10001/TIBCO_ABAP"/>
              </wsdl:port>
         </wsdl:service>
         <wsdl:portType name = "PortType">
              <wsdl:operation name = "Operation">
                   <wsdl:input message = "tns:Input"/>
                   <wsdl:output message = "tns:Output"/>
              </wsdl:operation>
         </wsdl:portType>
         <wsdl:binding name = "SOAPEventSourceBinding" type = "tns:PortType">
              <soap:binding style = "document" transport = "http://schemas.xmlsoap.org/soap/http"/>
              <wsdl:operation name = "Operation">
                   <soap:operation soapAction = "http://192.168.9.58:10001/TIBCO_ABAP" style = "document"/>
                   <wsdl:input>
            <soap:body use="literal" />
          </wsdl:input>
                   <wsdl:output>
            <soap:body use="literal" />
                   </wsdl:output>
              </wsdl:operation>
         </wsdl:binding>
         <wsdl:message name = "Input">
              <wsdl:part name = "Param1" type = "xs:int"/>
              <wsdl:part name = "Param2" type = "xs:int"/>
         </wsdl:message>
         <wsdl:message name = "Output">
              <wsdl:part name = "Result" type = "xs:int"/>
         </wsdl:message>
    </wsdl:definitions>

    Léon Hoeneveld's response works for me.  You will need to download a tool that allows you to edit the WSDL and reorder the values. 
    I've used a freeware tool like notepad++  collapsed all the levels and opened up the <wsdl:definitions xmlns:wsdl... segment and reordered the subgroups beneath it accordingly.
    1. types
    2. message
    3. portType
    4. binding
    5. service
    Thanks again Léon!

  • What is wrong with the idl code generated by packager.exe?

    Hello everybody,
    I am trying to figure out what is wrong with the idl code generated by packager.exe. In the evaluation for the bug posted at http://developer.java.sun.com/developer/bugParade/bugs/4964563.html it says that the IDispatch interface is not exposed correctly and thus early binding of java objects is not possible using the current activex bridge implementation.
    As I am no idl expert I have no idea what that means. However, I managed to dig out the idl code generated by packager.exe for the following example bean:
    package test;
    public class MyBean
         protected int value;
         public MyBean()
         public void setMyValue(int _value)
              value = _value;
         public int getMyValue()
              return value;
         public MyBean getSelfReference()
              return this;
    }The corresponding idl code generated by packager.exe is
    uuid(81B0BF63-2A55-11D8-A73E-000475EBF021),
    version(1.0)
    library MyBean
    importlib("Stdole2.tlb");
    dispinterface MyBeanSource;
    dispinterface MyBeanDispatch;
    uuid(81B0BF64-2A55-11D8-A73E-000475EBF021),
    version(1.0)
    dispinterface MyBeanSource {
    properties:
    methods:
    uuid(81B0BF65-2A55-11D8-A73E-000475EBF021),
    version(1.0)
    dispinterface MyBeanDispatch {
    properties:
    [id(4097)]
    int myValue;
    methods:
    [id(32768)]
    VARIANT_BOOL equals(IDispatch* arg0);
    [id(32769)]
    IDispatch* getClass();
    [id(32770)]
    int getMyValue();
    [id(32771)]
    IDispatch* getSelfReference();
    [id(32772)]
    int hashCode();
    [id(32773)]
    void notify();
    [id(32774)]
    void notifyAll();
    [id(32775)]
    void setMyValue(int arg0);
    [id(32776)]
    BSTR toString();
    [id(32779)]
    VARIANT wait([optional] VARIANT var0, [optional] VARIANT var1);
    uuid(81B0BF62-2A55-11D8-A73E-000475EBF021),
    version(1.0)
    coclass MyBean {
    [default, source] dispinterface MyBeanSource;
    [default] dispinterface MyBeanDispatch;
    };Does anyone know what is wrong with this code and maybe how to fix the idl code? Generating the dll should then be easy (I already tried several variations of the idl code but as my idl knowledge is limited it didn't really do what I wanted).

    Then the question is why it does work with visual controls (even if you set them to non-visible)?

  • What is wrong with the cloned HD?

    Hi, there,
    I have a G4 Sawtooth, 1.3 GHz, 1.6 GB RAM, with an ACARD ATA-100. An 80 GB HD is connected to the ATA bus of the motherboard, and an 160 GB HD to the ACARD. I cloned Mac OS 10.4.10 from the 80 GB HD to the 160 GB HD. I could boot the 160 GB cloned HD to the window when I was asked about the name and password. I used the name and password, which I have with my original HD. However, the window just shook my password off. I used the installation disc for resting password, and found there was no name or password for the cloned. Besides, the box for entering the name was obscured in gray that I could not enter a name there.
    What is wrong with the clone? What should I do to make the clone HD completely bootable?
    Thanks.
    Robert

    Inasmuch as you've provided little helpful information about how you prepped the drive and cloned it, all I can do is suggest the following:
    Extended Hard Drive Preparation
    1. Boot from your OS X Installer Disk. After the installer loads select your language and click on the Continue button. When the menu bar appears select Disk Utility from the Installer menu (Utilities menu for Tiger.)
    2. After DU loads select your hard drive (this is the entry with the mfgr.'s ID and size) from the left side list. Note the SMART status of the drive in DU's status area. If it does not say "Verified" then the drive is failing or has failed and will need replacing. Otherwise, click on the Partition tab in the DU main window.
    3. Set the number of partitions from the dropdown menu (use 1 partition unless you wish to make more.) Set the format type to Mac OS Extended (Journaled, if supported.) Click on the Partition button and wait until the volume(s) mount on the Desktop.
    4. Select the volume you just created (this is the sub-entry under the drive entry) from the left side list. Click on the Erase tab in the DU main window.
    5. Set the format type to Mac OS Extended (Journaled, if supported.) Click on the Options button, check the button for Zero Data and click on OK to return to the Erase window.
    6. Click on the Erase button. The format process will take 30 minutes to an hour or more depending upon the drive size.
    How to Clone Using Restore Option of Disk Utility
    1. Open Disk Utility from the Utilities folder.
    2. Select the backup or destination volume from the left side list.
    3. Click on the Erase tab in the DU main window. Set the format type to Mac OS Extended (journaled, if available) and click on the Erase button. This step can be skipped if the destination has already been freshly erased.
    4. Click on the Restore tab in the DU main window.
    5. Select the backup or destination volume from the left side list and drag it to the Destination entry field.
    6. Select the startup or source volume from the left side list and drag it to the Source entry field.
    7. Double-check you got it right, then click on the Restore button.
    8. Select the destination drive on the Desktop and press COMMAND-I to open the Get Info window. At the bottom in the Ownership and Permissions section be sure the box labeled "Ignore Permissions on this Volume" is unchecked. Verify the settings for Ownership and Permissions as follows: Owner=system with read/write; Group=admin with read/write; Other with read-only. If they are not correct then reset them.

  • What's wrong with the itunes store UAE? i couldnt buy my favorite songs and movies because there's no "music" and "movies" category. please do something... thanks!

    what's wrong with the itunes store UAE? i couldnt buy my favorite songs and movies because there's no "music" and "movies" category. please do something... thanks!

    You are not addressing Apple here...
    This is a User to User forum...
    iTunes Store: Which types of items can I buy in my country?

  • What's wrong with the fan of my 15 inch retina mbp?

    what's wrong with the fan of my 15 inch retina mbp,when i play a big game like Batman ,the fans are so quiet and keep around 2000rpm,but the temperature of  cpu is up to 80 degrees.(by the way, i have reseted the SMC for many times,but it doesn't work)

    80 degrees F or 80 degrees C?

  • What's wrong with the code?

    public void run()
    try
    {     for(;;)
         mgr = (RTPManager)RTPManager.newInstance();
         mgr.addSessionListener(this);
         mgr.addReceiveStreamListener(this);
         try{  /*****port1 = port2 = 29261, which port is only used in here
         localAddr = new SessionAddress(InetAddress.getLocalHost(), port1);
         destAddr = new SessionAddress(ipAddr, port2);
         }catch(Exception e)
              System.out.println(e + " 4");
         try{
         mgr.initialize(localAddr);
         }catch(Exception e)
         System.out.println(e + " 5");
         //set buffer
         bc = (BufferControl)mgr.getControl("javax.media.control.BufferControl");
         if (bc != null)
         bc.setBufferLength(20);
         try{
              mgr.addTarget(destAddr);
         }catch(Exception e)
         System.out.println(e + " 2");
    catch(Exception e)
         System.out.println(e+ " 3");
    the error when i run the code is like that:
    javax.media.rtp.InvalidSessionAddressException: Can't open local data port: 29261
    5
    java.io.IOException: Address already in use: Cannot bind 2
    which means there is error in :
    mgr.initialize(localAddr);
    mgr.addTarget(destAddr);
    But i don't know what's wrong with the code,
    can any one help me?

    I do not find any problem using the same ports for local and destination address with several unicasts. My problems are others.
    But note that the error is even at constructing the localAddress, I mean before trying the destinationAddress. Thus the reason cannot be the former is already in use. In fact I think the later belongs to a remote hosts. Likely, it is trying to access the destinationAddress through the localAddress, but this has not been constructed properly.

  • What's wrong with the server?

    execute me ~what's wrong with the server? I can‘t use the command nohup any longer.Can somebody help me?
    root@shhis1new # nohup
    Segmentation Fault (core dumped)
    root@shhis1new # nohup ls
    Segmentation Fault (core dumped)
    root@shhis1new # nohup /opt/SUNWexplo/bin/explorer -w all &
    [1] 6871
    root@shhis1new #
    [1]+ Segmentation Fault (core dumped) nohup /opt/SUNWexplo/bin/explorer -w all
    root@shhis1new # uname -a
    SunOS shhis1new 5.9 Generic_122300-19 sun4u sparc SUNW,Netra-T12
    System Configuration: Sun Microsystems sun4u Sun Fire E2900
    System clock frequency: 150 MHZ
    Memory size: 49152 Megabytes
    Best Regards
    <email address removed by moderator>
    Edited by: 884082 on 2011-11-22 下午10:00

    Moderator Action:
    You email address has been removed from your post.
    You wouldn't want bad people to send you spam messages for the rest of your life, eh?
    Moderator Advice:
    If this is the same E2900 that you have mentioned in every one of your other forum posts, then it would seem you need to contact Technical Support and open a proper support request. These forums are NOT techsupport and that system seems so poorly configured that it needs deep analysis. Such investigation cannot be done by using an online forum.
    The immediate solution is to log on to the SC of that box and power it down, then boot it back up. At least it will be running after that.

  • What's wrong with the IOS5 download, it downloads and then after its finished it says server timed out, how do i sort this out

    What's wrong with the IOS5 download, it downloads and then after its finished it says server timed out, how do i sort this out?

    The Firefox versions which come with many Linux distros have the default Mozilla Firefox updater disabled and use the distros built-in updater.
    See this - http://linuxforums.org.uk/netbooks/install-firefox-6-on-an-acer-aspire-one-running-linpus-lite-linux/

  • All of my apple sets (iphone, ipad and computer) cannot connect the app store since yesterday, what's wrong with the app store?

    All of my apple sets (iphone, ipad and computer) cannot connect the app store since yesterday, what's wrong with the app store? do you know? or do you have have the same experience?

    I still have access.  Must be your phone or your internet connection.

  • I can't print using airprint from my iPhone 4.  Everything with the phone and the printer and router are up to date.  I can print from my iPad 2 with no problems.  What's wrong with the iPhone 4?

    I can't print using airprint from my iPhone 4.  Everything with the phone and the printer and router are up to date.  I can print from my iPad 2 with no problems.  What's wrong with the iPhone 4?

    I just wanted to leave a note that it's working now. I'm not sure if it was the latest iTunes update that got it working or that i decided to start a new library instead of using the one i had backed up on Windows 8 (it didn't occur to me to check using the old library when i re-installed iTunes). But if anyone is having this problem, it might be worth trying again with a new installation of iTunes to see if the latest update works for you, and if not, try using a fresh library instead of a backup (by fresh library i mean discard your old library completely and start a new library, not just restore as new iPhone, a whole new library).

  • Is there a problem w/itunes store site? after input my cr.card info, i was told that it cannot verify my address, which is correct, what's wrong with the edit the billing info screen?

    What is wrong with the edit biling info screen. it cannot verify my address. i triple check my address info
    and it is correct.

    Use the email form >  Apple - Support - iTunes Store - Contact Us

Maybe you are looking for

  • Error in Posting Vendor down Payment request

    Hi I am getting an error in posting vendor downpayment request. I am using the T Code F-47 and special GL indicator F. Error: Special GL Indicator F is not defined for down payments Message No F5053 Diagnosis: The specified GL Indicator is not classi

  • Exporting my pdf to a cd

    I have a binder with 50 documents in it.  I would like to hand out to everyone a CD using adobe XI.  Can this be d one?

  • Unix Signal Handling in Oracle Apps

    I have a number of questions regarding Signal Handling on Unix platforms within Oracle client code. I would like to ensure that my signal handling requirements do not clash with those of Oracle within an application. 1. Does the Database client code

  • Asynchronous webservice callbacks?

    Hi there, Does anyone know if it's possible for web service's to perform asynchronous Flex callbacks. I'm trying to avoid polling an HttpService for updated state information and rather have the server push updates to the Flex client as needed. Any h

  • Why would a game developer opt for AIR over Packager?

    Have been developing games in Flash for a while and  considering  trying out some application markets. Most of my games are point and click games, so they would lend themselves to flash environments. Along with AIR, Adobe offers something called "Pac