Do stored outlines work in Oracle 10.2.0.3?

I am using 10.2.0.3 on HP UNIX 11i. I set cursor_sharing=force.
I created a stored outline using:
alter session set create_stored_outlines='CUSTOM';
my sql_statement;
When I run the sql statement and verify in v$sql whether outline was used by looking at outline_category and yes outline is used.
But then I run dbms_stat on an underlying table and run my sql again, my plan has changed which means outline was not used. This is really baffling, if outline was used,
Plan should be same as what was produced when creating outline. Something is
Definitely wrong.

After spending whole day, I narrowed down the proble. Stored outlines in 10.2.0.3
do not work anymore whith cursor_sharing=force. They, however, they work with
cusror_sharing=similar and cirsor_sahring=exact.

Similar Messages

  • Oracle not using the stored outline

    SQL> create table emp as select * from sys.emp;
    Table created.
    SQL> alter session set create_stored_outlines = TRUE;
    Session altered.
    SQL> create outline emp_dept for category scott_outlines on select empno from emp where ename = 'SCOTT';
    Outline created.
    SQL> set autot on exp
    SQL> select empno from emp where ename = 'SCOTT';
    EMPNO
    7788
    Execution Plan
    Plan hash value: 3956160932
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | 1 | 20 | 2 (0)| 00:00:01 |
    |* 1 | TABLE ACCESS FULL| EMP | 1 | 20 | 2 (0)| 00:00:01 |
    Predicate Information (identified by operation id):
    1 - filter("ENAME"='SCOTT')
    Note
    - dynamic sampling used for this statement (level=2)
    SQL> create unique index i on emp(ename);
    Index created.
    SQL> select empno from emp where ename = 'SCOTT';
    EMPNO
    7788
    Execution Plan
    Plan hash value: 3262377121
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
    |
    | 0 | SELECT STATEMENT | | 1 | 20 | 1 (0)| 00:00:
    01 |
    | 1 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 20 | 1 (0)| 00:00:
    01 |
    |* 2 | INDEX UNIQUE SCAN | I | 1 | | 0 (0)| 00:00:
    01 |
    Predicate Information (identified by operation id):
    2 - access("ENAME"='SCOTT')
    SQL> alter session set use_stored_outlines = SCOTT_OUTLIN
    2 ;
    Session altered.
    SQL> alter session set use_stored_outlines = SCOTT_OUTLINS
    2 ;
    Session altered.
    SQL> select empno from emp where ename = 'SCOTT';
    EMPNO
    7788
    Execution Plan
    Plan hash value: 3262377121
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
    |
    | 0 | SELECT STATEMENT | | 1 | 20 | 1 (0)| 00:00:
    01 |
    | 1 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 20 | 1 (0)| 00:00:
    01 |
    |* 2 | INDEX UNIQUE SCAN | I | 1 | | 0 (0)| 00:00:
    01 |
    Predicate Information (identified by operation id):
    2 - access("ENAME"='SCOTT')
    Note
    - outline "SYS_OUTLINE_11050409142489113" used for this statement
    SQL> SELECT name, category, used FROM user_outlines;
    NAME CATEGORY USED
    EMP_DEPT SCOTT_OUTLINES UNUSED
    SYS_OUTLINE_11050408594412502 DEFAULT USED
    SYS_OUTLINE_11050408591781301 DEFAULT UNUSED
    SYS_OUTLINE_11050408594415603 DEFAULT UNUSED
    SYS_OUTLINE_11050408595648404 DEFAULT UNUSED
    SYS_OUTLINE_11050409003554705 DEFAULT UNUSED
    SYS_OUTLINE_11050409030340606 DEFAULT UNUSED
    7 rows selected.
    Execution Plan
    Plan hash value: 1195863419
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Ti
    me |
    | 0 | SELECT STATEMENT | | 1 | 81 | 2 (0)| 00
    :00:01 |
    | 1 | NESTED LOOPS | | | | |
    |
    | 2 | NESTED LOOPS | | 1 | 81 | 2 (0)| 00
    :00:01 |
    | 3 | TABLE ACCESS FULL | OL$ | 1 | 64 | 2 (0)| 00
    :00:01 |
    |* 4 | INDEX UNIQUE SCAN | I_USER1 | 1 | | 0 (0)| 00
    :00:01 |
    |* 5 | TABLE ACCESS BY INDEX ROWID| USER$ | 1 | 17 | 0 (0)| 00
    :00:01 |
    Predicate Information (identified by operation id):
    4 - access("CREATOR"="U"."NAME")
    5 - filter("U"."USER#"=USERENV('SCHEMAID'))
    Note
    - outline "SYS_OUTLINE_11050409030340606" used for this statement
    SQL>
    Note : I have dropped all default outlines in dba_outlines but they are being created automatically.(Why)
    Please give me good article to understand more on stored outlines.

    Please post your 4 digits Oracle version.
    It looks like that Oracle has only 1 stored outline for the SQL statement and that the second execution plan with the index has replaced the first outline (execution plan with full table scan).
    Here is a good article on stored outlines http://www.oracle-base.com/articles/misc/Outlines.php (except that the used Oracle version is also missing).
    Here is a short demo based on your demo that I have modified (note that I disabled stored outlines just after creating the first one):
    SQL> select * from v$version;
    BANNER
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
    PL/SQL Release 10.2.0.1.0 - Production
    CORE    10.2.0.1.0      Production
    TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    SQL> drop table emp purge;
    Table dropped.
    SQL> drop outline emp_dept;
    Outline dropped.
    SQL> whenever sqlerror exit failure;
    SQL> --
    SQL> create table emp as
      2  select object_name ename, object_id empno
      3  from all_objects
      4  where object_id < 5000;
    Table created.
    SQL> --
    SQL> alter session set create_stored_outlines = TRUE;
    Session altered.
    SQL> create outline emp_dept for category scott_outlines on
    select empno from emp where ename = 'SCOTT';
    Outline created.
    SQL> set autot on exp
    SQL> select empno from emp where ename = 'SCOTT';
    no rows selected
    Execution Plan
    Plan hash value: 3956160932
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT  |      |     1 |    30 |     5   (0)| 00:00:01 |
    |*  1 |  TABLE ACCESS FULL| EMP  |     1 |    30 |     5   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       1 - filter("ENAME"='SCOTT')
    Note
       - dynamic sampling used for this statement
    SQL> -- disable stored outline creation
    SQL> alter session set create_stored_outlines = FALSE;
    Session altered.
    SQL> create index i on emp(ename);
    Index created.
    SQL> select empno from emp where ename = 'SCOTT';
    no rows selected
    Execution Plan
    Plan hash value: 4079916893
    | Id  | Operation                   | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT            |      |     1 |    30 |     1   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| EMP  |     1 |    30 |     1   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN          | I    |     1 |       |     1   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - access("ENAME"='SCOTT')
    Note
       - dynamic sampling used for this statement
    SQL> -- use stored outlines
    SQL> alter session set use_stored_outlines = SCOTT_OUTLINES;
    Session altered.
    SQL> select empno from emp where ename = 'SCOTT';
    no rows selected
    Execution Plan
    Plan hash value: 3956160932
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT  |      |    10 |   300 |     5   (0)| 00:00:01 |
    |*  1 |  TABLE ACCESS FULL| EMP  |    10 |   300 |     5   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       1 - filter("ENAME"='SCOTT')
    Note
       - outline "EMP_DEPT" used for this statement
    SQL> -- do not use stored outlines
    SQL> alter session set use_stored_outlines=false;
    Session altered.
    SQL> select empno from emp where ename = 'SCOTT';
    no rows selected
    Execution Plan
    Plan hash value: 4079916893
    | Id  | Operation                   | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT            |      |     1 |    30 |     1   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| EMP  |     1 |    30 |     1   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN          | I    |     1 |       |     1   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - access("ENAME"='SCOTT')
    Note
       - dynamic sampling used for this statementEdited by: P. Forstmann on 4 mai 2011 13:34

  • Oracle stored procedure works in toad but lots of error in java

    I've tested this stored procedure in toad 7.3 and it completes ok.
    I do pass the same IN parameters and OUT parameters.
    I registered the out parameter as a OracleTypes.CURSOR
    if it works in toad or pl/sql, what is wrong? how can this be fixed.
    however, when i execute this in java, this is the exception and garbage i receive:
    java.sql.SQLException: ORA-06550: line 1, column 22:
    PLS-00103: Encountered the symbol "" when expecting one of the following:
    := . ( @ % ;
    The symbol "(" was substituted for "" to continue.
    ORA-06550: line 1, column 33:
    PLS-00103: Encountered the symbol ";" when expecting one of the following:
    . ( ) , * @ % & | = - + < / > at in mod not range rem => ..
    <an exponent (**)> <> or != or ~= >= <= <> and or like
    between is null is not || indicator is
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
    my stored procedure is as follows:
    CREATE OR REPLACE PROCEDURE getUserByLogin (
    arg_subscriptionName IN varchar,
    arg_loginName IN varchar,
    arg_password IN varchar,
    arg_rec_userinfo_valLanguage OUT types.rec_userinfo_valLanguage
    ) AS
    var_userNum int;
    BEGIN
    select
    u.userNum into var_userNum
    from
    userInfo u,
    subscription s
    where
    s.subscriptionName = arg_subscriptionName AND
    s.subscriptionNum = u.subscriptionNum AND
    u.loginName = arg_loginName AND
    u.password = arg_password;
    if (var_userNum is null) then
    var_userNum := 0;
    end if;
    getUser(var_userNum, arg_rec_userinfo_valLanguage);
    END;
    /

    I'm using a callable statement.
    The strange thing is that, when i remove all IN and OUT paramters in the java code and the stored procedure, both the call to the stored procedure and teh execution of the stored procedure works.
    The moment I add in just a IN parameter (in the stored procedure, and setting it in the java code) it stops working, and i receive this error.
    java.sql.SQLException: ORA-06550: line 1, column 23:
    PLS-00103: Encountered the symbol "" when expecting one of the following:
    := . ( @ % ;
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
    heres the java code and stored procedure
    CREATE OR REPLACE PROCEDURE sampleProcedure(tax out number)
    is
    BEGIN
    tax := 10 *.15;
    /END;
    CallableStatement statement =conn.prepareCall("{call sampleprocedure ?}");
    statement.registerOutParameter(1,java.sql.Types.INTEGER);
    statement.execute();
    ResultSet rs = statement.getResultSet();
    if((rs = statement.getResultSet()) != null){

  • Stored Outlines on 10g as was on 9i

    Hi everyone,
    I built lots of stored outlines in 9i for our production database. The interface to do that by then was the java client/server enterprise manager.
    When I upgraded to 10g the only outlines I could find was the sql advisor from the web enterprise manager, but it do not let me customize the plans the way I did on 9i.
    I found out to be a packaged called dbms_sqltune, I wasn't able to do much with that package its kinda a way complex and less pratical.
    How do I create a stored outlines on 10g?
    Many will ask why to force a execution plan as the optimizer is very good? Well, in my experience sometimes the optimizer just don't know "business rules" enought to find the best execution plan for a report, he can guess on the cardinality of the columns but he can't guess that if a report is build to sales dept. then they will only use the 1000 and 1005 contracts on 99% of the cases that will represent a very small part of a huge table. To complete the scenario, many vendors do not open the code for us to "hint" their queries, so stored outlines was the way to go on those (many on my case) cases.
    Thanks in advance for comments!
    Ricardo Rodriguez

    Ricardo,
    Allow me to say a few words as I read your question just now.
    Stored outlines will do exactly what you mentioned.Stored outlines are used to make sure that optimizer wont go for another plan from what you had opted.That's the basic goal in making and conceptulating outlines.The same concept is also there in 11g with Sql Plan Baselines.Therefore, stored outlines and SQL plan baselines are used to:
    - ensure that a given execution plan is always used
    - do SQL tuning without changing the code of the application
    Stored outlines are indeed there in 10g.Please see this line here for 10gR2,
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/outlines.htm#sthref1341
    Now in the EM,there is no option(atleast I havenot seen one) to create them as the idea to use stored outlines never really got so popular.I agree those who use it,they like it very much but on a generic part, they were actualy a problem.Too many restrictions are there to implement and use them.
    In 10g, this funcionality seems to be missing, you cannot 'hand made' a exection plan for the query anymore, you could just click on the advice of the sql advisor and pray to him find an solution.
    In 10g the concept is enhanced a step further.Its always a bad idea to "hard-code" a plan for optimizer taking away its decision making sense.So Oracle is promoting for the same reasons which were there for outlines i.e. the query is a part of vendor application,you don't want to chance n number of parameters to tune one query only,they formulated stored profiles to do the job which does the same job but doesn't hard code the plan.SQL profiles are designed to provide to the query optimizer the information like:
    - execution environment (e.g. optimizer mode)
    - object statistics
    - corrections related to the estimations performed by the query optimizer
    As you can see, the aim of a SQL profile is "only" to change the environment in which the query optimizer works. The idea is that by changing the environment the query optimizer should be able to generated a more efficient execution plan.
    I guess you would be clear with the part now.I wont even sya that outlines store the plan itself.Stored outlines, SQL plan baselines and SQL profile do not plans. They store hints which can be used to make up a plan.Yes the option in 10g from GUI is to just create Stored Profiles but not Stored Outlines which stands as a manualy done task.
    Just my 2 cents on the topic.
    Aman....

  • Query on stored outlines

    Hi,
    The database version is 10204.
    I have a query which is running fine in TEST but not in PRODUCTION.
    I have created the outline, however have a doubt.
    The difference in the query in TEST and PROD is that the schema in TEST differs from the schema in PROD.
    However object names remain the same.
    Would the outline still work in PROD?
    select * from crmprd.table1 ...........
    select * from db3.table1 ......Rgds,
    Sanjay

    No, that won't work
    >
    There is a one-to-one correspondence between SQL text and its stored outline. If you specify a different literal in a predicate, then a different outline applies. To avoid this, replace literals in applications with bind variables
    >
    See Using Plan Stabilility in the Database Performance Tuning Guide.
    http://docs.oracle.com/cd/B19306_01/server.102/b14211/outlines.htm
    The outline association is based on a hash of the SQL text and the hash won't match. That is why the above excerpt suggests using bind variables; it makes the hash the same even though the actual value of the bind can be different at run time.

  • Stored Outlines in SAP

    Hi,
    is anyone using stored outlines within SAP?
    Would you pleas share your experience with it's implementation.
    Thanks
    Volker

    Volker Borowski wrote:>
    > >
    YukonKid wrote:
    > > If you go for outlines you would need to
    > >
    > > a) capture the query exactly as it is executed by the application, hints and all
    > > yk
    > http://forums.sdn.sap.com/post!reply.jspa?messageID=8458029
    > Hi YK,
    >
    > this would be a major "gotcha".
    > My statement has bind variables and I am not able to force the plan
    > to the correct one by invalidating an index.
    > I either need a hint (which will not be in the generated code) or
    > change the sequence of the tables in the from clause.
    >
    > So in both ways the stored outline would refer to a statement,
    > that is literally diffrent.
    >
    > So if I got you correctly, I will not be able to like the plan of a statement to a diffrent one?
    no - it works the other way round:
    Statement A -> worse plan
    you would make it to use the more efficient plan (i.e. using session parameters and such)
    capture that plan and use it on Statement A.
    >
    >
    > The change I'd have to do would be
    >
    > :
    > FROM
    >   table1  T_00,
    >   table2  T_01,
    >   table3  T_02,
    >   table4  T_03,
    >   table5  T_04,
    >   table6  T_05,
    >   table7  T_06,
    >   table8  T_07,
    > WHERE
    > :
    >
    > to
    >
    > :
    > FROM
    >   table2  T_01,
    >   table3  T_02,
    >   table1  T_00,
    >   table4  T_03,
    >   table5  T_04,
    >   table6  T_05,
    >   table7  T_06,
    >   table8  T_07,
    > WHERE
    > :
    >
    > Now as for the SQL Syntax, this make absolutely no diffrence.
    > But the plan changes to effectively 50% less consistent gets (~12000 -> ~6500)
    > and the total optimizer costs for both plans are identical.
    >
    > So I would like to link the plan for statement 2 to the literal statement 1.
    If you have control over the statement check out the ORDERED hint and forget stored outlines
    SELECT /*+ ORDERED */ ....FROM ....WHERE
    tables get joined in the order of the from clause.
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements006.htm#SQLRF50601
    But same applies: Don't try to be more clever than the CBO (99% of the time he is smarter than you)....
    >
    > Volker

  • Stored Outline usage

    I have some stored outlines that aren't being used and I can't figure out why.
    Not sure what the best next step is.
    Unfortunately, this is 8.1.7.4 - appreciate it's an old version, it's upgrading imminently.
    The production database has some statistics - a really crap situation which again is on the path to being rectified.
    Some queries have been developed which work ok against a development database where all objects have some representative statistics.
    Not surprisingly, these queries do not work at all well against a production-like database where only some objects have statistics, and some of those are stale (the CBO makes up some defaults and not surprisingly gets bad paths).
    So, the idea was to:
    - Capture stored outlines for queries against "good" database
    - Export
    - Import to "bad" database
    - Enable stored outline usage at a session level in the "bad" database
    - See the queries run acceptably.
    Unfortunately, in the "bad" database, the stored outlines are not being used.
    - I have set "alter session set use_stored_outlines=....."
    - I have flushed the shared pool to make sure
    - I can tell from performance that outlines are not being used
    - I can see from a 10046 and 10053 trace that stored outlines are not being used
    - I can see from v$sql that the outline_category is null
    - I can see from outln.ol$ that the queries are there and not being used
    - I can see in outln.ol$hint that all the hints are there and nothing has got corrupted or rejected from imp/exp.
    - I can see from v$sql that the hash_value of the SQL matches the hash_value of the SQL in ol$.
    What could / should my next steps be to determine what is going on ?

    Have never used outlines myself but answers to this question
    http://www.freelists.org/archives/oracle-l/12-2006/msg00199.html
    seems to indicate that both environments should match also for other parameters.
    You can search also in the archives for the above mentioned list for outlines, I assume there were many threads of them, probably you can get some idea.
    Gints Plivna
    http://www.gplivna.eu

  • How much performance is impacted if the Stored outline is used globally?

    Hi,
    One of the queries that we are having problem with and we are trying to use the Stored outline so that we freeze the execution plan. The vendor is telling us that it should set globally (ALTER SYSTEM not SESSION) , but we disagreed because this would have negative effect on our db performance. We ask to enable session only iusing LOGON trigger filtered by program/username nstead of system like below
    Vendor preference: ALTER SYSTEM SET CREATE_STORED_OUTLINES=TRUE
    We prefer: ALTER SESSION SET CREATE_STORED_OUTLINES=TRUE
    BTW, we are on HP UX 10.2.0.3. Any recommendations or suggestions would be greatly appreciated. Thank you so much.
    Rich.

    No Oracle version number.
    No information as to the vendor or the product.
    No information indicating why a stored outline might be of value in one or many cases.
    And most importantly ... no evidence of testing to see if it really makes things better or worse.
    Throw this into a test environment and validate your prejudices. There is no way we can possibly
    know and there are no general rules when it comes to tuning other than the fact that only testing
    on your hardware with your system has value.

  • Performance Tuning Issues: UNION and Stored Outlines

    Hi,
    I have two questions,
    Firstly I have read this:
    http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14211/sql_1016.htm#i35699
    What I can understand is using UNION ALL is better than UNION.
    The ALL in UNION ALL is logically valid because of this exclusivity. It allows the plan to be carried out without an expensive sort to rule out duplicate rows for the two halves of the query.
    Can someone explain me the following sentences.
    Secondly my Oracle Database 10g is on FIRST_ROWS_1, how can stored outlines help in reducing I/O cost and response time in general?Please explain.
    Thank you,
    Adith

    Union ALL and Union
    SQL> select 1, 2 from dual
    union
    select 1, 2 from dual;
    | Id | Operation | Name | Rows | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | 2 | 6 (67)| 00:00:01 |
    | 1 | SORT UNIQUE | | 2 | 6 (67)| 00:00:01 |
    | 2 | UNION-ALL | | | | |
    | 3 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
    | 4 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
    11 rows selected.
    SQL>select 1, 2 from dual
    union all
    select 1, 2 from dual;
    | Id | Operation | Name | Rows | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | 2 | 4 (50)| 00:00:01 |
    | 1 | UNION-ALL | | | | |
    | 2 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
    | 3 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
    10 rows selected.
    Adith

  • Stored outline issue

    Hi experts,
    i have an issues with stored outlines.i am on oracle 9.2.0.1
    i created and outline as
    CREATE OR REPLACE OUTLINE JOB1 FOR CATEGORY JOB_TBL2 ON
    SELECT EMPLID FROM PS_JOB WHERE ACTION LIKE :1
    then
    ALTER SESSION SET use_stored_outlines=JOB_TBL2;
    after that if i run the query SELECT EMPLID FROM PS_JOB WHERE ACTION LIKE :1 then my stored outline is used
    but if i run as SELECT EMPLID FROM PS_JOB WHERE ACTION LIKE 'HIR' it doesnot use stored outline.
    i test with both cursor sharing =similar\exact
    Please help.

    Loading at non lev0 members and aggregating with SET AGGMISSIG OFF may protect the data at non lev0 combinatioons that time.
    It will not protect the data permanantly as future calc operations has always a chance to overwrite that data.
    Follow the below prctices
    1) Load high at the non lev0 combination
    2) Run the push down calculation to allocate this data to lev0 combinations.
    3) Aggregate the data.
    Second approch is
    If you dont like to tie this data to the any available lev0 members for any reasons.Consider the below hierarchy
    ---PG
    -------PG1
    -------PG2
    -------PG3
    You want to load data at PG member level and dont like to tie for any of the members PG1, PG2 and PG3.
    Then add a place holder member PG_I as a sibling to PG3 and load the data to that PG_I.
    Then you can see the expected data at PG with out loading high and applying conditions.

  • Stored outlines & plan stability

    I am trying to use stored outlines, for plan stability (Oracle 8i).
    Oracle documents says that; the query from my
    application must literally match to the one
    in stored outline (OL$ table). Does that mean
    that the parameter value(s) also should
    match ??
    Example: The following query was stored
    in OL$ table, thru stored outlines procedure.
    select cust_name, sum(revenue)
    from accounts
    where country_code = '225'
    and account_type = 'C'
    group by cust_name;
    Now my question: Is it necessary that my application should throw exact same query,
    including parameter values (i.e.country_code)
    to take advantage of the store outline ?
    If I pass country_code = '436', does it make use of the stored outline or not ?
    Any input is highly appreciated, since this option is very useful in my application
    context.
    thanks and regards
    subbu

    The stored outline need not take the same parameter values .we can give different parameter values.In your case if country_code = '436', it makes use of stored outline.

  • Use Stored Outlines to replace ANALYZE  with "do nothing" ?

    Has anyone used Stored Outlines to replace statements like "ANALYZE TABLE abc COMPUTE STATISTICS" ?
    Say you have an application that issues a number of 'ANALYZE TABLE' statements at different times during a batch run and you want some of the ANALYZE calls to succeed (eg for tables 'stu' and 'xyz') but others to "do nothing" (eg for table 'abc').
    Could you replace "ANALYZE TABLE abc COMPUTE STATISTICS" with a (for example) "select 'x' from dual" call ?

    Hemant K Chitale wrote:
    Has anyone used Stored Outlines to replace statements like "ANALYZE TABLE abc COMPUTE STATISTICS" ?
    Say you have an application that issues a number of 'ANALYZE TABLE' statements at different times during a batch run and you want some of the ANALYZE calls to succeed (eg for tables 'stu' and 'xyz') but others to "do nothing" (eg for table 'abc').
    Could you replace "ANALYZE TABLE abc COMPUTE STATISTICS" with a (for example) "select 'x' from dual" call ?
    If i understood it right, you seem to mean query rewrite.
    As you know already, stored outline is a series of hints to guide optimizer to emulate previous plan.
    It cannot be used to replace query text itself.
    Advanced query rewrite(10g) seems to be promising, but it can only be used for select statement.
    Dion Cho
    PS) Rewriting query is very powerful, but very dangerous both for performance and security.
    That is maybe the reason why Oracle does not provide those kinds of functionality.

  • Invalid Stored block length - Error Oracle 12c DB installation in OEL6

    Hi Guys,
    I got the below error message during the installation on Oracle 12c DB in OEL6.
    "Invalid Stored Block Length". And the installation got terminated.
    All the pre-req got passed and now i got sucked at this step.
    Can someone help me on this please.....
    Thanks,
    Sunil

    Here is the Error Log
    INFO: Extracting files to '/u01/app/oracle/product/12.1.0/db_1'.
    INFO: Performing fastcopy operations based on the information in the file 'oracle.server_EE_dirs.lst'.
    INFO: Performing fastcopy operations based on the information in the file 'oracle.server_EE_filemap.jar'.
    INFO: Performing fastcopy operations based on the information in the file 'racfiles.jar'.
    INFO: Performing fastcopy operations based on the information in the file 'oracle.server_EE_exp_1.xml'.
    INFO: Performing fastcopy operations based on the information in the file 'oracle.server_EE_1.xml'.
    INFO: Performing fastcopy operations based on the information in the file 'setperms1.sh'.
    INFO: Number of threads for fast copy :1
    INFO: invalid stored block lengths
    SEVERE: oracle.sysman.oii.oiif.oiifb.OiifbEndIterateException: invalid stored block lengths
      at oracle.sysman.oii.oiic.OiicInstallAPISession.doOperation(OiicInstallAPISession.java:490)
      at oracle.sysman.oii.oiic.OiicAPIInstaller.doOperation(OiicAPIInstaller.java:1009)
      at oracle.sysman.oii.oiic.OiicAPIInstaller.doOperation(OiicAPIInstaller.java:970)
      at oracle.install.driver.oui.OUISetupDriver.setup(OUISetupDriver.java:358)
      at oracle.install.driver.oui.SetupJob.call(SetupJob.java:315)
      at oracle.install.driver.oui.SetupJob.call(SetupJob.java:49)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
    INFO: Update the state machine to STATE_READY
    INFO: isSuccessfullInstallation: false
    INFO: isSuccessfullRemoteInstallation: true
    INFO: Adding ExitStatus FAILURE to the exit status set
    INFO: Shutting down OUISetupDriver.JobExecutorThread
    SEVERE: [FATAL] invalid stored block lengths
       CAUSE: No additional information available.
       ACTION: Refer to the logs or contact Oracle Support Services
       SUMMARY:
           - invalid stored block lengths.
    Refer associated stacktrace #oracle.install.commons.util.exception.DefaultErrorAdvisor:7314
    INFO: Advice is ABORT
    SEVERE: Unconditional Exit
    INFO: Adding ExitStatus FAILURE to the exit status set
    INFO: Dispose the current Session instance
    INFO: Dispose the install area control object
    INFO: Update the state machine to STATE_CLEAN
    INFO: Finding the most appropriate exit status for the current application
    INFO: Exit Status is -1
    INFO: Shutdown Oracle Database 12c Release 1 Installer

  • Question about Stored Outlines.

    I would like to reset the status of all stored outlines to "UNUSED". Can someone share with me how to accomplish this?
    Thanks.

    i would like to reset the status of all stored outlines to "UNUSED". Can someone share with me how to accomplish this?http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_outln.htm
    exec DBMS_OUTLN.CLEAR_USED ( 'OUTLINE_NAME);
    -Anantha

  • SQL Profiles or STORED OUTLINE

    Hi,
    on 10g R2, any query to know
    the SQL Profiles in DB ?
    Or the STORED OUTLINES ?
    Thanks.

    Hi,
    You can get the details from the DBA_SQL_PROFILES. there are futher sys tables which can give some details
    SQL Profiles hints from SQLPROF$ATTR,SQLPROF$ and SQLPROF$DESC
    - Pavan Kumar N
    Oracle 9i/10g - OCP
    http://oracleinternals.blogspot.com/

Maybe you are looking for