Situations when child cursors are created.....

Hi ,
I 'd like to ask when child cursor(s) is created..., when a similar or exact text string for sql statement is found on the SQL AREA (Library cache of shared pool) but for a/many reason(s) - described in the v$sql_shared_memory- the same sql area cannot be used..., or for any other reason....???
Does the value of CURSOR SHARING parameter affect this matter...??????
Many thanks,
Simon
Message was edited by:
sgalaxy
Message was edited by:
sgalaxy

Hi Simon,
The purpose of child cursors is to allow Oracle to save some memory. If you have a SQL that that is an exact literal match, but can't be shared for some other reason (i.e. bind variable mismatch, optimizer environment mismatch, etc), a new child is created. This allows one literal SQL statement to have two separate execution plans, without wasting space in the library cache by duplicating SQL that is identical. When that happens, V$SQL_SHARED_CURSOR should tell you the reason for the extra child. (I say "should" cause there have been numerous bugs filed on various versions where there are cases that child cursors are created and no reason is populated in V$SQL_SHARED_CURSOR.)
Now, how does CURSOR_SHARING fit into the picture? Well, if you have a well-designed application that uses bind variables to allow for sharable SQL, then CURSOR_SHARING is not required and should be set to exact. In cases where bind variables are not used, and the shared pool is getting slammed w/ lots of unique literal SQL, then setting CURSOR_SHARING to force or similar will replace literals with system generated bind variables, and allow for sharing of the resultant SQL.
Hope that helps,
-Mark

Similar Messages

  • To retieve tasks when user tasks are created using Jdeveloper BPELDesigner

    I am trying to get the list of tasks which are created using Jdeveloper BPel designer.
    I have used the following code :
    Locator loc = new Locator("default","bpel");
              IWorklistService taskService = (IWorklistService)loc.lookupService(IWorklistService.SERVICE_NAME);
    ITask[] tasks = taskService.listTasksByAssignee("rekha");
    if(tasks!=null){
    for (int j = 0; j < tasks.length; j++) {
    ITask thisTask = tasks[j];
    out.println("Task Title " + thisTask.getTitle() +"Assignee:"+thisTask.getAssignee()+"$$$$"+"\n");
    but its not returning any tests.
    But the same code works for the tasks which are created through sample bpel processes which are provided by oracle which uses TaskManager service.
    But the Jdeveloper bpel designer user task creates service which is TaskActionHandler..
    please help me how can I get the List of tasks for a particular user for this problem
    Please help me ............

    There is sample code that is supposed to do this here: http://www.codeguru.com/cpp/sample_chapter/article.php/c10789__12/
    I have tried using the login-style task retrieval with the oracle.tip.pc packages - this works logging in as, for example, fkafka.
    Working Code:
    IWorklistContext ctx = wlSvc.authenticateUser("fkafka", "welcome");
    Map filterMap = new HashMap();
    filterMap.put(IWorklistService.FILTER_TYPE_TASK_FILTER,
    IWorklistService.TASK_FILTER_MY);
    filterMap.put(IWorklistService.FILTER_TYPE_STATUS_FILTER, IWorklistService.STATUS_FILTER_ASSIGNED);
    String keywords = "";
    java.util.List tasks = wlSvc.getWorklistTasks(ctx, keywords, filterMap, IWorklistService.SORT_FIELD_TASK_TITLE, IWorklistService.SORT_ORDER_ASCENDING);
    Using the sample code and retrieving tasks with
    ITask[] tasks = worklist.listTasksByAssignee("fkafka");
    returns nothing, however.
    (&lt;h1>&lt;%= tasks.length %> tasks waiting for approval&lt;/h1>
    Prints: ' 0 tasks...' )
    I notice that the JDeveloper generated JSPs use the oracle.tip.pc packages - seeing as I'm deploying to the same BPEL server I guess I don't need to worry about the other methods of access (i.e. remote) so hopefully I can manage my workflow app with the oracle.tip.pc packages only.

  • How to display properties of a selected cursor when several cursors are available?

    I have a list of 8 cursors and would like to show the information of one cursor (which the user has slected) in the cursor legend of the graph. But I dont want to expand the whole cursor legend until all cursor properties are visible because it occupies too much space in the front panel.
    How do I get the index of the cursor the user has selected? I tried the "selected cursor" property but when I moved different cursors its value didnt change!

    I don't think it's possible to chagne the actual cursor legend. It is simple to create your own for just the active cursor. I've attached an example in LabVIEW 7.
    Attachments:
    Selected_Cursors.vi ‏43 KB

  • Redaction problem - when applied, boxes are created on all other pages

    We are redacting PDFs converted from PowerPoint. When we apply redactions, a block of color the same size and location of each redaction appears on every page. There is no background on the documents. I created redactions of different colors, and those different colors showed up on all pages when the redactions were applied.
    We can find no explanation or fix. A workaround is to make the redaction color white which blends into our document but we want to not have the blocks show up. There is a forum question from 2012 with this question but no answer.

    We are having the same problem as well. It does appear to be document specific and is reproducible. Could someone kindly look into this?

  • Tablespace when new users are created

    Hi,
    In Oracle XE 11GR2 when I create a user like below:
    create user dummy_user identified by dummy_user; Here I didn't specify a default tablespace and when I look in DBA_USERS, I see that it puts it in SYSTEM tablespace.
    Now I tried the same CREATE USER in Oracle Database 11GR2 EE, and if I do not specify the "Default Tablespace" there, it puts it in USERS tablespace. This also happens in Standard Edition.
    Why is it different in XE ?

    William Wallace wrote:
    Hi,
    In Oracle XE 11GR2 when I create a user like below:
    create user dummy_user identified by dummy_user; Here I didn't specify a default tablespace and when I look in DBA_USERS, I see that it puts it in SYSTEM tablespace.
    Now I tried the same CREATE USER in Oracle Database 11GR2 EE, and if I do not specify the "Default Tablespace" there, it puts it in USERS tablespace. This also happens in Standard Edition.
    Why is it different in XE ?I don't have an XE instance handy at the moment, but you can check the default permanent tablespace using the following:
    select     property_value
    from       database_properties
    where      property_name = 'DEFAULT_PERMANENT_TABLESPACE'You can also search for the "DEFAULT TABLESPACE Clause" as part of the "ALTER DATABASE" command in the SQL Language Reference for more information on setting this.

  • VS Workflow - Erroring out when multiple records are created by same user

    Hi,
    I am using SP 2013. I have a visual webpart and custom sequential workflow. The webpart saves the data to a custom list and the workflow is associated to the custom list on Item creation only. In the workflow, I am breaking the role inheritance and setting
    permission to specific set of users, and then the normal approval workflow happens. The whole workflow condition works fine, but if the user is raising multiple requests one after another, the workflow seems to break either in the Break inheritance or granting
    permission. If the user raises only one or two requests then everything works fine.
    Below are the errors which I am getting in the workflow:
    Error 1:
    Error: Save Conflict. Your changes conflict with those made concurrently
    by another user. If you want your changes to be applied, click Back in your Web
    browser, refresh the page, and resubmit your changes.
    I have already checked this :
    http://social.msdn.microsoft.com/Forums/sharepoint/en-US/60ab04fd-9650-427d-a48f-784bc22fae05/workflow-and-save-conflict-your-changes-conflict-with-those-made-concurrently-by-another-user?forum=sharepointdevelopmentprevious_
    http://adrianhenke.wordpress.com/2010/08/20/sharepoint-error-save-conflict-your-changes-conflict-with-those-made-concurrently-by-another-user/
    I have also implemented the "Reload" thing posted in the above URL. This error only happens when multiple new requests are getting raised by same user. This error does not happen if I terminate the workflow and re-start the workflow.
    How to fix this?
    Thanks

    Hi,
    Based on my understanding, you have a Visual Web Part for adding new item into a list. A workflow will be triggered when item creation in this list. Everything works
    fine except when an user adds multiple items in a short period.
    If this is the case, plus with the error message, a possible cause is that the SharePoint Server and the workflow engine are not functioning effectively enough to
    handle the multiple request in a short time, therefore a scenario is that when there is new item being added into the database, the workflow modifies the “RoleAssignments” property of this item at the same time, this may cause a “Save Conflict” error.
    As you said, “If the user raises only one or two requests then everything works fine”, a workaround is that you can disable the adding item function in Visual Web
    Part forcibly in a specific period after a new item is being added by current user, it can leave some time for handling the item creation and item modification.
    Or if there is a need to submit multiple items concurrently, we can organize the requests into one request, then handle this item with other custom logic in your workflow.
    Thanks
    Patrick Liang
    Forum Support
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support,
    contact [email protected]
    Patrick Liang
    TechNet Community Support

  • Child cursors not getting purged 11.2.0.2

    select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE    11.2.0.2.0      Production
    TNS for Linux: Version 11.2.0.2.0 - Production
    NLSRTL Version 11.2.0.2.0 - Production
    SQL_ID                         = 7bz1uuvdrkdbm
    ADDRESS                        = 000000031CEBB878
    CHILD_ADDRESS                  = 000000031CEBB418
    CHILD_NUMBER                   = 0
    ROLL_INVALID_MISMATCH          = Y
    All child cursors have same ROLL_INVALID_MISMATCH   = Y
    I have shared_pool_size=2 GB.
    select sql_id,child_number CN,plan_hash_value phv,executions,elapsed_time/executions/1000000 "sec" ,IS_BIND_SENSITIVE SEN,is_bind_aware AWR,IS_SHAREABLE SHA,LAST_LOAD_TIME LOAD_T,last_active_time ACTIVE_T,substr(sql_fulltext,1,40) from v$sql where sql_id='&sql_id' order by last_active_time;
    Enter value for sql_id: 7bz1uuvdrkdbm
    SQL_ID                 CN        PHV EXECUTIONS        sec S A S LOAD_T                    ACTIVE_T                  SUBSTR(SQL_FULLTEXT,1,40)
    7bz1uuvdrkdbm           7   57216169     204160 .043308046 Y N Y 2012-10-19/21:41:52       20.Oct.12/21:03:35        select instrops0_.detail_id as detail41_
    7bz1uuvdrkdbm           0   57216169     185981  .04124503 Y N Y 2012-10-20/21:03:44       21.Oct.12/18:02:37        select instrops0_.detail_id as detail41_
    7bz1uuvdrkdbm           1   57216169     252623 .043459744 Y N Y 2012-10-21/18:02:38       22.Oct.12/21:32:07        select instrops0_.detail_id as detail41_
    7bz1uuvdrkdbm           2   57216169     240260 .043797356 Y N Y 2012-10-22/21:32:35       23.Oct.12/21:16:31        select instrops0_.detail_id as detail41_
    7bz1uuvdrkdbm           3   57216169       9331 .047150057 Y N Y 2012-10-23/21:16:40       23.Oct.12/23:33:15        select instrops0_.detail_id as detail41_
    7bz1uuvdrkdbm           4   57216169      38965 .045418917 Y N Y 2012-10-23/23:33:25       24.Oct.12/04:18:29        select instrops0_.detail_id as detail41_
    select sql_id,loads,loaded_versions,invalidations,executions from v$sql where sql_id='7bz1uuvdrkdbm' order by child_number;
    SQL_ID              LOADS LOADED_VERSIONS INVALIDATIONS EXECUTIONS
    7bz1uuvdrkdbm          21               1            20     185981
    7bz1uuvdrkdbm          17               1            16     252623
    7bz1uuvdrkdbm          14               1            13     240260
    7bz1uuvdrkdbm          22               1            21       9331
    7bz1uuvdrkdbm          11               1            10      45902
    7bz1uuvdrkdbm           9               1             8     204160
    6 rows selected.I understand that child cursors are created due to object stats update by nightly dbms_stats.gather_schema_stats. (ROLL_INVALID_MISMATCH caused by DBMS_STATS.AUTO_INVALIDATE)
    My question is, why Oracle is not purging old child cursors if they are not being used. (For example....Child_number=7 is last used on 20.Oct.12/21:03:35)
    Is there any way i can have auto purge them after certain threshold ? Is that not misuse of shared pool memory? I believe rolling invalidation is to prevent hard parse (and latch contention issues) by cursor invalidation in high OLTP system. But if OLTP system is active 24 hr a day, we can still observe latch contention after 5 hr (_optimizer_invalidation_period) ...right ?

    Hi,
    shared pool housekeeping is not as simple as you imagine it to be. It's not like at any given moment of time there is only one "correct" child cursor, the rest being subject to purging, it's much more complex, and the exact housekeeping algorithms are not accessible to us users. Plus, you only have several child curors; I once had over a hundred and raised a SR to that effect -- the customer support represebtatuve said that cursor sharing mechanisms in Oracle aren't perfect and unless one has thousands of child cursors one shouldn't be worried.
    Best regards,
    Nikolay

  • Workflows not triggered when documents are created in Doc Set via Content Organizer

    The following is my scenario:
    A document set (containing several documents) is created in Library A on Site A
    Using Send To, the Document Set is sent to the Drop Off Library on Site B (a different Site Collection)
    A Content Organizer rule then moves the Document Set and its documents to destination Library B
    In Library B I have defined a workflow (using Visual Studio 2012) that is triggered when new item is create
    When the Document Set arrives in Library B from the Drop Off library (i.e. when the Content Organizer moves the Doc Set to Library B), the workflow is triggered (and executes) on the Document Set, but it is NOT triggered on the documents within the Document
    Set.   How can I get the workflow to trigger on the documents within the set when they are created via the Content Organizer rule?
    The interesting thing is that if I manually add another document to the Document Set in Library B, the workflow is triggered on that document.  It just does not trigger when the documents are created via the Content Organizer.

    Hi,
    In edit Content Organizer rule page, I see there is an option as Automatically create a folder for each unique value of a property:
    However, unlike the drop down used in the property based filters above, this drop down *only* contains properties that are required by your content type. 
    This is done to prevent adding folders that have no values for a property. 
    If you need to put similar documents to the same folder, you could consider making use of this feature.
    Regards,
    Rebecca Tu
    TechNet Community Support

  • SQL Version Count in AWR and Child Cursor

    Hi,
    In 11.1.0.7, what is SQL Version count in AWR report? What does it mean? and how oracle does this version count? How do we define child cursor?
    Thanks

    Hi,
    when you issue a SQL statement, the database searches the library cache to find a cursor with matching SQL text. Then it can happen that even though the text matches, there are some other differences that prevent you from using existing cursor (e.g. different optimizer settings, different NLS settings, different permissions etc.). In such cases, a new child cursor is created. So basically child cursors are different versions of the same SQL statement.
    If you have SQL statements with thousands of versions, this could mean a problem for your shared pool (child cursors taking up lots of space and causing fragmentation), as well as a potential for performance problems due to plan instability (if the same SQL text is parsed to a new plan every time, sooner or later it will be a bad plan). That's why AWR report has this list.
    According to Oracle support, up to a couple of hundreds versions doesn't indicate a problem (cursor sharing mechanism isn't perfect), but when you have thousands or tens of thousands of versions, you should check your cursor sharing settings (first of all, CURSOR_SHARING parameter).
    Best regards,
    Nikolay

  • Too many child cursors with reasons unknown

    Hi,
    I am looking at excessive child cursors for a particular SQL even after setting the CURSOR_SHARING parameter to SIMILAR. I am working on Oracle 10.2.0.4.0 hosted on a Windows 2003 Server. Since the application does not use bind variables I decided to test the efficiency of modifying the CURSOR_SHARING parameter to buy some time before the root cause is fixed.
    On querying V$SQL_SHARED_CURSOR I find that none of the flag columns which document the reason for the formation of a child cursor is Y. They are all flagged as N. So, I am perplexed as to why so many child cursors are being generated.
    Some statistical information below:
    Version Count for the SQL_ID = 23506
    Count of hash values for the SQL_ID = 1234048
    Total (sum) chunk size for the SQL_ID = 112,436,220
    Any clues/directions on how to get about this issue?
    Regards

    Indeed, histograms are being collected on the columns
    that form the predicates of the query. Doesn't this
    in fact offset the advantages of using bind variables
    to share SQL?Aniruddha,
    Correct. If you have a column that you think deserves a histogram then your front-end code has to co-operate with the database to make the histogram as useful as possible.
    If you are lucky, this means you can simply write your code to use a literal value for the predicate on that column and only end up with a few distinct versions of the SQL. At the opposite extreme, you could decide that the overhead of having hundreds of versions of the same query is less of a threat than having a really bad execution plan some of the time. In the more subtle cases, you may have to write code that is "histogram-aware" - i.e. it knows that it has to generate one of a few different statements depending on the supplied values.
    Histograms and bind variables don't go together comfortably - and that's a little nasty when you mix cursor_sharing=similar and the 10g automatic stats collection routines.
    Regards
    Jonathan Lewis
    http://jonathanlewis.wordpress.com
    http://www.jlcomp.demon.co.uk

  • Cursors are not closed when using Ref Cursor Query in a report  ORA-01000

    Dear Experts
    Oracel database 11g,
    developer suite 10.1.2.0.2,
    application server 10.1.2.0.2,
    Windows xp platform
    For a long time, I'm hitting ORA-01000
    I have a 2 group report (master and detail) using Ref Cusor query, when this report is run, I found that it opens several cursors (should be only one cursor) for the detail query although it should not, I found that the number of these cursors is equal to the number of master records.
    Moreover, after the report is finished, these cursors are not closed, and they are increasing cumulatively each time I run the report, and finally the maximum number of open cursors is exceeded, and thus I get ORA-01000.
    I increased the open cursors parameter for the database to an unbeleivable value 30000, but of course it will be exceeded during the session because the cursors are increasing cumulatively.
    I Found that this problem is solved when using only one master Ref Cursor Query and create a breake group, the problem is solved also if we use SQL Query instead of Ref Query for the master and detail queries, but for some considerations, I should not use neither breake group nor SQL Query, I have to use REF Cursor queries.
    Is this an oracle bug , and how can I overcome ?
    Thanks
    Edited by: Mostafa Abolaynain on May 6, 2012 9:58 AM

    Thank you Inol for your answer, However
    Ref Cursor give me felxibility to control the query, for example see the following query :
    function QR_1RefCurDS return DEF_CURSORS.JOURHEAD_REFCUR is
    temp_JOURHEAD DEF_CURSORS.JOURHEAD_refcur;
              v_from_date DATE;
              v_to_date DATE;
              V_SERIAL_TYPE number;
    begin
    SELECT SERIAL_TYPE INTO V_SERIAL_TYPE
    FROM ACC_VOUCHER_TYPES
    where voucher_type='J'
    and IDENT_NO=:IDENT
    AND COMP_NO=TO_NUMBER(:COMPANY_NO);
         IF :no_date=1 then
                   IF V_SERIAL_TYPE =1 THEN     
                   open temp_JOURHEAD for select VOCH_NO, VOCH_DATE
                   FROM JOURHEAD
                   WHERE COMP_NO=TO_NUMBER(:COMPANY_NO)
                   AND IDENT=:IDENT
              AND ((TO_NUMBER(VOCH_NO)=:FROM_NO and :FROM_NO IS NOT NULL AND :TO_NO IS NULL)
              OR (TO_NUMBER(VOCH_NO) BETWEEN :FROM_NO AND :TO_NO and :FROM_NO IS NOT NULL AND :TO_NO IS NOT NULL )
              OR (TO_NUMBER(VOCH_NO)<=:TO_NO and :FROM_NO IS NULL AND :TO_NO IS NOT NULL )
              OR (:FROM_NO IS NULL AND :TO_NO IS NULL ))
                   ORDER BY TO_NUMBER(VOCH_NO);
                   ELSE
                   open temp_JOURHEAD for select VOCH_NO, VOCH_DATE
                   FROM JOURHEAD
                   WHERE COMP_NO=TO_NUMBER(:COMPANY_NO)
                   AND IDENT=:IDENT               
              AND ((VOCH_NO=:FROM_NO and :FROM_NO IS NOT NULL AND :TO_NO IS NULL)
              OR (VOCH_NO BETWEEN :FROM_NO AND :TO_NO and :FROM_NO IS NOT NULL AND :TO_NO IS NOT NULL )
              OR (VOCH_NO<=:TO_NO and :FROM_NO IS NULL AND :TO_NO IS NOT NULL )
              OR (:FROM_NO IS NULL AND :TO_NO IS NULL ))     
                   ORDER BY VOCH_NO;          
                   END IF;
         ELSE
                   v_from_date:=to_DATE(:from_date);
                   v_to_date:=to_DATE(:to_date);                         
              IF V_SERIAL_TYPE =1 THEN
                   open temp_JOURHEAD for select VOCH_NO, VOCH_DATE
                   FROM JOURHEAD
                   WHERE COMP_NO=TO_NUMBER(:COMPANY_NO)
              AND IDENT=:IDENT                         
                   AND ((voch_date between v_from_date and v_to_date and :from_date is not null and :to_date is not null)
                   OR (voch_date <= v_to_date and :from_date is null and :to_date is not null)
                   OR (voch_date = v_from_date and :from_date is not null and :to_date is null)
                   OR (:from_date is null and :to_date is null ))     
                   ORDER BY VOCH_DATE,TO_NUMBER(VOCH_NO);     
              ELSE
                   open temp_JOURHEAD for select VOCH_NO, VOCH_DATE
                   FROM JOURHEAD
                   WHERE COMP_NO=TO_NUMBER(:COMPANY_NO)
                   AND IDENT=:IDENT                         
              AND ((voch_date between v_from_date and v_to_date and :from_date is not null and :to_date is not null)
                   OR (voch_date <= v_to_date and :from_date is null and :to_date is not null)
                   OR (voch_date = v_from_date and :from_date is not null and :to_date is null)
                   OR (:from_date is null and :to_date is null ))     
                   ORDER BY VOCH_DATE,VOCH_NO;          
              END IF;
         END IF;               
         return temp_JOURHEAD;
    end;

  • Pages 5.5.1: When opening a document created with Pages '09 (Version 4.0) with Pages 5.5.1 the page header and the page footer are deleted. How can this be prevented? Or is this a bug in Pages 5.5.1?

    Pages 5.5.1: When opening a document created with Pages '09 (Version 4.0) with Pages 5.5.1 the page header and the page footer are deleted. How can this be prevented? Or is this a bug in Pages 5.5.1?

    Same problem here (no graphics in header or footer) and the problem has been reported months ago. It is another bug/feature lost when Apple moves from 09 to the iCloud-compatible versions.  Complain to Apple, you may have better chance than me and they may finally listen to their users....

  • When I go to create a new project in imovie using the iPhone 5, I am not able to see any of my video clips or photos that are saved on the device.

    When I go to create a new project in imovie using the iPhone 5, I am not able to see any of my video clips or photos that are saved on the device.

    When you move or copy the compound clips with their events into an external drive all the events should be there. Not clear on why you want to move them into a single event. You can drag and drop from one event to another.
    Why are you using compound clips? You can simply copy the project from each machine with used media onto the external drive and that should do it.

  • PO wf should not be triggred when POs are created through RFC

    Hi
    My PO wf is working fine for POs created and changed. But it is getting triggered for POs which are created by Ariba system using RFCs.And since there is no Organization structure for the user id which is used in RFC, it is throwing an error.
    Please let me know what can be done in this regard.
    Thanks
    Bhaskar

    Hi Bhaskar,
    you are telling that the reson of the error is, that the user for the RFC is on in the OM.
    So, why not put this user there, or use a different user?
    If you don't want a wf to be created by ariba.
    you can use check function modules for it, or put the logc in the first step of the flow.
    I can imagine that when a user is responsible for the event, that the workflow probably should have additional dialog steps, like control steps by other users. If however you use an automated system, you can assume that controlling the data isn't necessary, but other background processes should be executed by the flow.
    In that case do it in the WF modelling, with conditions on the initiator.
    Kind regards, Rob Dielemans
    Message was edited by: Rob Dielemans

  • What indexes are created when we check dimension as line item.

    What indexes are created when we check dimension as line item.
    and also What indexes are created when we check dimension as high cardinality.
    Where can i see that information in the system.
    Answers are highly appreciated.
    Regards
    Kunal

    Hi,
    Line item means it does not have any dimension table.
    High Cardinality means that the dimension is to have a large number of instances (that is, a high cardinality). Also, it is very important to indentify the line item dimension properly. E.g. Sales Order number, this will have the exact number of entries as the fact table entries. Hence, this can be created as a line item dimension. If you are not sure of high cardinality never select that. Activate this function when the dimension has is at least 10%- 20% the size of the fact table (in terms of the number of records). <b>In this case, B tree indices are created instead of bitmap indices.</b>. By default it is BITMAP but with high cardinality it is B-Tree indexing.
    Hope this helps.
    PB

Maybe you are looking for