How to handle Bind peeking Issue.

Hi I am using 10.2.0.4.0 version of oracle.
I got one of the sqls coming at the top most 'Elapsed time section' of the report consuming approx ~10 sec per execution and ~30000 executions with in 6 hrs. And they use bind variables too. So when i execute the sqls in my prod DB, with actual values, i found the results set with in seconds.
So i then go to the v$sql_plan view to get the actual path of execution, and found a different set of indexes(let I2) being used for accessing
the table which must be causing the delay.
My sql is some what similar as below:
SELECT COUNT (1)
FROM a , b
WHERE a.c1 = b.c2
AND b.c3 = :1
AND b.c4 = :2
AND a.createdate BETWEEN :3 AND :4
AND a.c2 = :5;
I then found that the usage of index by optimizer is changed depending up on the range of values being fetched by table 'A' using clause ('a.createdate BETWEEN :3 AND :4 '), which is a bind variable. Now i want to use index I1((primary key index on c2 of table 'A') in both the scenario,(what ever may be the bind valaue of bind variable) , as i have tested and got better elapsed time using Index I1 for both the scenario.
Note that index I2 is on (createdate,c2).
So my question is what is the best option to go for? below are the option i can think of.
1. using index I1 hint.
2. purging the sql from the shared pool and let the sql hardparsed again and use index I1 for the most popular cases.
Please suggest.

Well, binds and histograms don’t mix well, particularly in 10g. This link contains wealth of information about this behavior:
http://hoopercharles.wordpress.com/2011/01/29/histograms-and-bind-variables-but-why/
Out of the two options, I would choose option 1. Option 2 might be cumbersome to implement in production.
If you can change the code, you might consider using “pseudo-hints” to have a different execution plan for a wide-range between clause and a narrow-range between clause.
Iordan Iotzov
http://iiotzov.wordpress.com/

Similar Messages

  • How to Handle BARCODE related issues in WebDynpro ABAP

    Hi All,
    How to handle barcode related issues in WDA?
    is it possible in WDA or not?
    please provide information or any links related..
    Thanks,
    raj.

    Hi ,
    You just need to install the software comes with the barcode scanner in the local PC and while reading you have to put the cursor on the field like inputfield . a barcode when interpreted by scanner is nothing but alphanumeric words.
    Regards
    Yash

  • How to check bind peeking is happening for a sql

    Hi Team,
    11.2.0.3.5, RHEL-6 on 64 bit, 2 node RAC.
    We have been continuously facing performance issues after upgraded to 11g. sqls were fine when we are in 10g and they started following un-optimized plans. I heard that 'automatic cursor sharing' is enabled by  default in 11gr2. But how do we verify, whether a sql id peeking at its binds ? Can somebody share the query if you have ?
    And also, any useful links regarding this pls suggest me.
    Thanks,
    Hari

    Hi,
    you can check this  may it help you :ORACLE-BASE - Adaptive Cursor Sharing in Oracle Database 11g Release 1

  • Question about how HP handles customer service issues

    I am the owner of three HP laptops.  Two of which are dead now due to the defective Nvidia chips they contained.  When I called HP to report this issue, I was told by numerous HP customer service reps that they were not aware of any issues with the Nvidia GPU or that there had not been a high number of recorded problems concerning this.  It has been proven in numerous documents made public recently that this defect was known about and there had been a high frequency of this issue.   I would like to know why I was told these falsehoods and treated the way I was?
    I subsequently decided to dismantle one of the computer to investigate the GPU.  Sure enough the epoxy that reinforces the BGA solder-joint was cracked in the chip was no longer making good electrical contact with the PCB.  What I found really perplexing was the 1/4" gap between the GPU and the copper heat-sink that was intended to provide cooling.  I would assume HP was responsible for the cooling and chassis design?  I would also assume it as HP who filled this GAP will thermal foam.  Please correct me if I am wrong.  

    The recall was for certain models, did you confirm that your model was one of them?
    ________________________________________________________________________________________________________ I Love Kudos! If you feel my post has helped you please click the White Kudos! Star just below my name
    If you feel my answer has fixed your problem please click 'Mark As Solution' and make it easier for others to find help quickly

  • How to handle html:multibox in jsp with ADF Data Binding

    Hi,
    I like to use html:multibox feature in my jsp with ADF Data Binding. I am able to retrieve checked values in the DataForwardAction form. However, when the page is refreshed, the checkboxes are not persistent and yet an error showing
    "JBO-25009: unable to create object type ....oracle.jbo.domain.Array" appears.
    Here is my jsp code:
    <c:forEach var="type" items="${bindings.SystemTypeView1.rangeSet}">
    <c:if test="${Row['SystemGroup'] == type['SystemGroup']}">
    <br>
    <html:multibox property="selectedSystemType">
    <c:out value="${type.SystemType}"/>
    </html:multibox>
    <c:out value="${type.TypeDesc}"/>
    </c:if>
    </c:forEach>
    Can anyone tell me how to handle html:multibox with ADF Data Binding and make the checkboxes persistent.

    Generally this can be done.
    I see a problem with your use case, which has nothing to do with jdev or java:
    How do you identify the user when he comes back to finish the form?
    For this you can't use information like session cookie or IP address because they change.
    So you have to save some information about the user which lets you identify him when he comes back. All other requirements can be implemented by ADF.
    Timo

  • How to handle "Validation failed for the field - Tax code" issue?

    We had mass uplaod the order that create on Mar with tax code effective date on Apr. Now we would like return on this order  and getting error of "Validation failed for the field - Tax code". How to handle this issue?

    Hi
    You will have to check if the Tax_Code of RMA being received is the same as the one in the related sales order.
    If not you will need to use the same tax_code.
    Refer below document : Doc ID 1584338.1

  • How to handle returned products originally issued out using Transport Order

    Dear Experts
    I transfer a batch containing 10 cartons from production plant NDE1 to sales plant NDE2 within same company code using a stock transport order.
    Each carton is valued at 1dollar each, that is total value of transfered stock is $10
    After two weeks, 3 cartons went bad and needs to be returned to production plant NDE1.
    How do I capture this return process in SAP?
    If it were an outright sales to a customer, a Return Order with reference to the invoive will be created, return delivery done,PGI done which brings the returned stock into inventory, and a credit memo posted against the original billing.
    How do I handle my 3 cartons of returned stock since it was given out using a transport order?
    What will the accounting entries be in the system? i mean which accounts will be credited and debited by the $3 value of th ereturned three cartons?

    It depends how you handle the stock .Your accounting document generated in NDE2  in plant only.
    The first step you transfered the material through sto from NDE1 to NDE2 ,here there is no impact on accounting entries as you are transffering the stock with in company code.
    After you get return stock from customer NDE2 you can directly scrap or after inspecction of the stock if the stock is good then you can keep in Unresticted use for further sales.
    I dont think so you need again one more sto to get return stock from NDE2 to NDE1 as it is damaged stock and un necessary paying transport costs.
    If you scrap the material then the 3 qty of stock 3 doller price hit to scrap account.

  • Histogram - Bind Peeking - Statistical Information

    Hello guys,
    i have got a question about bind peeking and histograms.
    If i disable bind peeking by setting the hidden paraemter "_optim_peek_user_binds"=FALSE - how does oracle handle with histograms?
    It is not possible to say how much a value is placed in the column (because oracle can not read the value behind the bind variable)... if i disable bind peeking are histograms ignored?
    Or how does oracle calculate the costs with histograms if it has no information about the searched value.
    Maybe someone of you have investigated that "topic".
    Thanks and Regards
    Stefan

    With optimpeek_user_binds = false, histograms are only ignored with bind variables, but they still have a purpose when issuing queries with hard coded values.Hello Rob,
    thanks for your answer. This is what i want to know, because of our software supplier told us to create histograms on some tables to improve performance. But the software is using bind variables and we have set optimpeek_user_binds to false.
    So it makes no sense, because of oracle can not use the histogram statistics... i suppose it... but i wasn't sure.
    Thanks and Regards
    Stefan

  • How to handle the dynamic rows in pdf table

    Dear All,
    earlier i posted one thread reagarding getting pdf table data
    [facing problem while getting interactive form table data;
    this is working fine, i sued bind_table in wddoinit, but here i am fixing the rows count and bind_table.
    for example i have initially taken row count as 3 then i want to increase the rows in pdf table.
    i know we can use the formcalc to increase the rows by taking a button in pdf layout.
    this also working, but the data is not picking for newly added rows, i hope the problem is because the table node in the context is not binded for this new rows.
    even i tried using with webdynpro native button controlls still not working.
    any one help me what exactly this bind_table is doing and how to handle this code in form calc.
    since my table is pdf table.
    Thanks,
    Mahesh.Gattu

    Hi Thomas,
    Thanks for your confirmation,
    i have checked the paramets of submit button we have only wdevent parameters they are
    CL_WD_CUSTOM_EVENT
              PARAMETERS - Hashed table having 2 columns
              ID     ->IF_TDS (Interactive Form element Name)
             CONTEXT_ELEMENT     ->->
    these are same in case of submit button1 and submit button 2.
              NAME - Name of the Button Event i.e ON_SUBMIT (  this is also same in both the buttons).
    so i think it is not possible to work with multiple buttons by assinging to multiple tables on form.
    The other option is to place the buttons outside of the forum in the surrounding WDA area.
    This way you have no problem handling the events.
    in wddoinit if i use bind_table with 5 rows form table is populating with 5 rows, but when i take a button
    out side the form and use bind_table by incremeting the rows the pdf table rows are not adding, if i enter
    some thing on pdf table then click on add row button then the table rows are getting add. if i don't do any
    action on pdf table and click on add row button pdf is not getting update.
    is there any issue.. if i don't keep cursor on table and type some thing.. the add button is not updating
    the rows.
    if i take a  button on wd view i.e outside the form and use bind table i shall add the rows.. but in case of remove rows how to do.
    in case of normal table we can use Remove_Element( ) but how can i know the selected row from the pdf table, please help me in this concern also.
    Regards,
    Mahesh.Gattu
    Edited by: Maheshkumar gattu on Jan 7, 2009 3:57 PM
    Edited by: Maheshkumar gattu on Jan 7, 2009 4:03 PM
    Edited by: Maheshkumar gattu on Jan 7, 2009 5:21 PM

  • How to handle type safety when using com.sap.typeservices.IProposalList

    Hi,
    I have been testing out the new features in Web Dynpro Java CE EHP1 using a scenario with BPM and SAP MDM. One of the new features I tested is the Ajax feature of using suggestion values. I have an InputField UI element which have bound to a context attribute (CountriesView/Country) which is of type string. The UI element has the "suggestValues" value set to true. I then use the IProposalList to produce a valueset. This will make the InputField UI appear as a combo box and allow the users to type in a few characters and utilize the Ajax framework to automatically search in the list of values.
    The following code works perfectly ok but I don't understand how I should handle the compiler warning "IProposalList is a raw type. References to generic type IProposalList<T> should be parameterized"?
    IProposalList proposalsCountry = wdContext.nodeCountriesView().getNodeInfo().getAttribute(IPrivateComp1.ICountriesViewElement.COUNTRY).getModifiableSimpleType().getSVServices().getProposals();
    for(int i=0;i<bua.length;i++){
        IPrivateComp1.ICountriesViewElement buaelement=wdContext.createCountriesViewElement();
        buaelement.setCountry(bua<i>[0]);
        buaelement.setCode(bua<i>[1]);
        bualist.add(buaelement);
        proposalsCountry.add(bua<i>[0]);
    wdContext.nodeCountriesView().bind(bualist);
    I don't have any issues handling this for other types such as ArrayList. Using the syntax "IProposalList<String> proposalsCountry ...." will handle the "proposalsCountry.add .." part but I still have a warning "Type safety: The expression of type IProposalList needs unchecked conversion to conform to IProposalList<String>"
    Any ideas on how to handle this?
    Thanks,
    Johan

    Hi,
    Eventhough there are no replies to this thread I thought I should update with what I belive is an answer to my question. Excerpt from http://stackoverflow.com/questions/382/what-is-the-meaning-of-the-type-safety-warning-in-certain-java-generics-casts:
    "This warning is there because Java is not actually storing type information at runtime in an object that uses generics. Thus, if 'object' is actually a List<String>, there will be no ClassCastException at runtime except until an item is accessed from the list that doesn't match the generic type defined in the variable. This can cause further complications if items are added to the list with this incorrect generic type information. Any code still holding a reference to the list but with the correct generic type information will now have an inconsistent list. To remove the warning, try:
    List<?> list = (List<?>) object;However, note that you will not be able to use certain methods such as add because the compiler doesn't know if you are trying to add an object of incorrect type. The above will work in a lot of situations, but if you have to use add or some similarly restricted method, you will just have to suffer the yellow underline in Eclipse (or a SuppressWarning annotation)."
    The last line explain the reason for my issue and the lack of a solution when using add method.
    /Johan

  • Thoughts on how LabVIEW handles checkout of file from SCC when file already open

    When you already have a file/project open in LabVIEW and it is set to read only because you haven't checked it out, you can go into SCC and do a checkout then save the file immediately. The issue with this is, if your local copy doesn't match the copy in SCC, you will probably be overwriting changes. Sometimes this is convenient because if you have ever edited a MS Word file and then gone to save and it won't let you because it was opened as read-only...then that sucks because you either lose your work, or have to do a copy of the entire word file->close the program->re-open as writable, then paste. This can be avoided with the "LabVIEW way", but the "MS Word" way seems much safer because it forces you to conscioiusly make the file writable (by either checking it out or manually write clicking and changing to writable) BEFORE opening it. I just wanted people's opinions on how LabVIEW handles this, and if there would be a better way.
    CLA, LabVIEW Versions 2010-2013

    VSS 
    CLA, LabVIEW Versions 2010-2013

  • How to handle this kind of scenario in SBO

    Hello, I am new to SAP Business One. I would like to know how to handle Transporation Company scenario below in SBO.
    QUESTION 1: A transportation company has 30 truck. The company receives orders from the customer and use the trucks to deliver the goods from Point A to Point B everyday. The cost for delivery is $0.50 per-KG.
    The way I handle above:
    1. In ITEM MASTER DATA:
    Create a new item > Item Type: Labor > Description: Delivery from Point A to Point B > and determine the delivery price is $0.50.
    2. Use the item created in no 1 above when creating Sales order/Invoice.
    If the weight is 5000kg then simply put QTY 5000 in Sales Order with the price of $0.50/KG, which has been set in Item Master Data.
    Is the above method correct or there is better way to handle?
    QUESTION 2: TRACKING EACH TRUCK EXPENSES BY ITS LICENSE PLATE:
    Each truck has Spare Parts expense (e.g. bulbs, oil, battery, tires etc) that the company would like to track.
    The company purchased the spare parts from suppliers and keep it in the warehouse. When a truck needs to replace its spare parts, the company will issue the parts and record it under that truck's license number as that truck's expense.
    The goal is SBO must be able to provide detail monthly expense report for each truck when inquired by its license plate. I prefer NOT to manually input "directly" in Journal Entry to prevent error.
    Thanks.

    Hi,
    welcome to sbo forum!
    For your question 1, it will depend if you will only have 1 route for all of your deliveries.If your point of origin is always point a then destination is point B w/ price of $0.50,then you are right with your process... but if you will have to expand and move into different places, i think it will best for you to create a UDT for your pricing.
    in summary:
    1.create UDT pricing(with origin,destination and price)
    2.Create UDF in row level of Sales order(U_origin,_U_destination)
    3.) create FMs for your Sales order Origin and destination based on UDT Pricing table.
    4.) create automatic fms for your price( based on origin and destination selection).
    for question 2, all your repairs and maintenance will pass through AP invoice( either by item or service). in our country we normally use Ap service,since a truck has normally several types of spare parts. This figures will will surely add up to the number of item master data record in your system ,since you will need create a unique item for each and every item available.
    -To monitor all your expenses, you will need to create a UDF in the header of PO, GRPO or AP invoice, place your plate number here. so that when you extract your reports, you will easily identify your expenses per truck.
    in summary:
    1.create UDF for header of PO,GRPO or AP( Udf_Plate number) you can set valid values for you udf or by FMS with default values.
    2.Create Udf for lines of PO,GRPO or ap(UDF_spare part type) --note: if you will use the Item type document for repairs and  maintenance then i guess you dont need to add UDF_spare parts.
    Hope i was able to help you.
    Regards,
    Darius Gragasin

  • Duplicate check via BAS (ADDRESS_SEARCH)-- how to handle non-crm customer?

    Dear all,
    I'm implementing a duplicate check and using the BADI Address_search. Within this BADI I use the method "Address_Search" for calling a third party software tool with customer information. This tool checks whether the entered customer is already available in CRM AND in other system in our company holding.
    The method provides me a list of all found duplicates (incl. non-crm customers)
    My problem is that I need to fill a export table "ex_t_search_result" (type adkey_indx_tab) of this method which expects ADRC number. For the CRM customer it is not a problem. I can figure them out by table BUT020 and the customer number. But for the non-crm customer I do not have a ADRC number.
    I know there are some methods for creating addresses in BAS (function group SZA0), but actually Im not sure how to handle them.
    Does anybody of you had faced a similar issue?
    Thanks for your help
    Firat C.

    hello,
    BP is BDT (Business Data toolset) enabled (you can check it by adding break point in FM BUS_PBO and executing BP transaction). You can add your check directly to standard view (the check will be executed each time when user pushes enter) or you could add you check to appropriate action (during saving etc.) there are number of actions which you could use it depends on your requirements. You can find a lot of info about BDT (if you are not familiar) in Wiki.
    br,
    dez_

  • How to handle multiple sessions in Script recorder

    Hi,
    I have a requirement to update certain records from a program. For that I have to put a breakpoint the program (which I did manually).
    Now when I use the scripting tool to record the events, only events related to the original session gets recorded. Any events on the newly opened debugger mode is not recorded !
    However, I can record the events in the debugger separately.
    So I have 2 scripts which are session dependent. In Session 1 my program runs and in session 2 (which opens the debugger in runtime) my edits need to be done.
    How to create a VB script which can handle this session issue?
    Went through this blog by Scriptman and since i am new couldnt get it working !!
    Please help me with a framework to handle this issue.
    Activate a session via Gui scripting
    Thanks,
    Jaywant

    Hi Thomas,
    Yes I have to handle both the session simultaneously.  Let me illustrate further.
    I have to update some (10k- 15k) products from a z table in CRM. We have a custom program for this.
    So, i use se38 and insert a breakpoint in the program (to make the updates to a field) and then execute it. Now I start my script recorder. Provide inputs to the program and hit execute.
    At this point my script recorder is running on the se38 window and not on the debugger window !
    I change the values and press F8. These manual updates do not get captured by script recorder.
    But, if I start my recorder once the debugger window was opened already, I can capture all these changes.
    So we have things like this...
    Script1.vbs --> Events captured in se38
    Script2.vbs --> Events captured in the debugger
    If I merge them and run, the recorder is not handling the new debugger session and the execution halts to get the "excel is waiting for another ole action"
    Thanks,
    Jaywant

  • How to handle parked message in BPM?

    Hi,
    I have a scenario that buyer as R3 send PO(same PO number) change idoc multiple times into bpm without receiving PO change confirmation(from seller, non R3) yet, I have a loop in bpm to handle this case, the loop checks the condition whether confirmation matches change request, if not, potential loop repeats.  However, if I have multiple change request(same PO number) sent from R3 to BPM, my BPM waiting for my order confirmation, then if the first order confirmation comes into BPM matches with the first change request, then I exit the loop, but I still have several change requests parked at processXXXXX yet to be processed, does anybody came into similar situations? Any good suggestions or examples?
    Thanks,
    Maggie

    Hi there,
    I need to correlate ChangeConfirmation to ChangeRequest with PO number, this is for the purpose of ChangeRequest waiting for Confirmation for the same PO number.  However, I don't know how to handle multiple changes come into BPM without confirmation yet, my current design is that I immediately enter a loop in BPM, with condition confirmation Info doese not match change info, thus the change request is bundled with bpm process, once the porcess is finished(response match change request), the queue of my other change requests(the parked ones) now got deleted, does anybody have any good suggestions in handling multiple change request(for same PO number) in bpm? Is there a way I can force bpm to handle one request one response, throw some error message if multiple changes comes together without response yet? Anybody had encountered similar issues?
    Thanks,
    Magge

Maybe you are looking for