Stored Outline Creation script for review

DB version:10gR2
I am new to stored Outlines and I've been asked to review a Stored Outline Creation script. This is the script
-- Log in as SYS
-- Grant necessary privileges to the User executing SQL in question.
grant create any outline to rec_sch
grant execute on dbms_outln to rec_sch
grant execute on dbms_outln_edit to rec_sch
-- Connect to that user(rec_sch) to create the outline
select name, category, used, sql_text   from  dba_outlines;
ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY';
alter session set create_stored_outlines = TRUE;
declare
v_sqlstring varchar2(5000);
begin
v_sqlstring:= 'The SQL in Question';
execute immediate v_sqlstring;
end;
--After granting the UPDATE privilege on the outln.ol$ table to rec_sh user
--log in as rec_sh
alter session set create_stored_outlines = FALSE;
ALTER SYSTEM set use_stored_outlines = default;
update <font color="red"><b>outln.ol$</b></font>
set sql_text ='The SQL in Question';Is this script Ok?
Message was edited by:
user609308

One error i didn't suspect -> don't using SID with lowercase and uppercase in the name.
Thing i've forgotten to say: variables have to be set both in the .bat and the first .sql but they have to match too with values in the init.ora. That why i would like to simplify all these declarations with unifying them into a single file.
If somebody can help me, please
Tif

Similar Messages

  • Need  Bookmark creation script for Paragraph style. Anybody can help me pl?

    Need  Bookmark creation script for Paragraph style. Anybody can help me pl?

    Hi hasvi,
    I wrote a similar script which creates a bookmark on each page in the "main" text frame at the begining of the frame (the 1st insertion point). Here I attached the script and a couple of sample documents: before and after. It's more complex than what you want but you can use it as a starting point. In fact, you have to find a certain paragraph style, loop through every found item and insert a bookmark, say, at the beginning of the found text.
    The dialog box
    Bookmarks added
    Regards,
    Kas

  • Stored Outline creation Error: error occurred at recursive SQL

    Hi All,
    when i try to create outline , i am getting this error
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-00904: "NODE_NAME": invalid identifier
    For example,
    SYSTEM > create outline out1 on select * from dual;
    create outline out1 on select * from dual
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-00904: "NODE_NAME": invalid identifier
    Kindly let me know workarounds.
    Thanks,
    Shiva.
    Message was edited by:
    Shiva
    Message was edited by:
    Shiva
    Message was edited by:
    Shiva
    Message was edited by:
    Shiva

    Hi.
    For example,
    SYSTEM > create outline out1 on select * from dual;
    create outline out1 on select * from dual
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-00904: "NODE_NAME": invalid identifier
    Message was edited by:
    Shiva

  • Stored outline creation error: ORA-00604: error occurred at recursive SQL

    Hi All,
    when i try to create outline , i am getting this error
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-00904: "NODE_NAME": invalid identifier
    Kindly let me know workarounds.
    Thanks,
    Shiva.
    Message was edited by:
    Shiva

    Hi.
    For example,
    SYSTEM > create outline out1 on select * from dual;
    create outline out1 on select * from dual
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-00904: "NODE_NAME": invalid identifier
    Message was edited by:
    Shiva

  • 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

  • Database creation scripts from a running RAC

    Hi all
    We have a two node Oracle 10g R2 RAC running on SLES 10 SP2 Itanium systems.
    We have 4 database instances running on the two nodes.
    I need to create database creation scripts for one of the databases. eg. the script should contain all current configuration of the database (i.e i dont want the script which would have been created at the time of creation of the database)
    Is this possible to achieve?
    thanks

    Hi,
    You can follow this steps to create yours scripts using notes below:
    Create Database Manually
    *How to create a RAC database using DBCA generated scripts from templates [ID 856783.1]*
    Create Database Service Manually
    *How To Configure Server Side Transparent Application Failover [ID 460982.1]*
    *10g & 11g :Configuration of TAF(Transparent Application Failover) and Load Balancing [ID 453293.1]*
    Regards,
    Levi Pereira
    Edited by: Levi Pereira on Mar 18, 2011 11:36 AM

  • 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....

  • Easily fixing parameters for instance creation script

    H all,
    In the classical instance creation scripts numerous parameters are repeated even if they are similar. For example, the directory into which saving the different tablespaces is often the same. Also i'm looking for passing them as parameters. My first tries give the following:
    -> In the .bat launching the creation:
    set MY_DB_USER=sys
    set MY_DB_PWD=change_on_install
    set MY_DB_NAME=DragNFly
    set ORACLE_SID=DragNFly
    set MY_DB_CREATION_SOURCE=F:\Oracle\oradata\Instance_creation_scripts
    set MY_DB_CREATION_DESTINATION=E:\Oracle_DragNFly
    set MY_ORACLE_BIN=F:\oracle\bin
    set MY_ORACLE_HOME=F:\oracle
    mkdir %MY_ORACLE_HOME%\admin\%ORACLE_SID%\bdump
    mkdir %MY_ORACLE_HOME%\admin\%ORACLE_SID%\cdump
    mkdir %MY_ORACLE_HOME%\admin\%ORACLE_SIDD%\create
    mkdir %MY_ORACLE_HOME%\admin\%ORACLE_SID%\udump
    mkdir %MY_DB_CREATION_DESTINATION%\%ORACLE_SID%
    %MY_ORACLE_BIN%\oradim.exe -new -sid %ORACLE_SID% -startmode m
    %MY_ORACLE_BIN%\oradim.exe -edit -sid %ORACLE_SID% -startmode a
    %MY_ORACLE_BIN%\orapwd.exe file=%MY_ORACLE_HOME%\Database\PWD%MY_DB_NAME%.ora password=%MY_DB_PWD%
    %MY_ORACLE_BIN%\sqlplus /nolog connect %MY_DB_USER%/%MY_DB_PWD% @%ORACLE_SID% as sysdba
    %MY_ORACLE_BIN%\sqlplus /nolog @%MY_DB_CREATION_SOURCE%\StartCreation.sql
    -> Then in the first sql file, fixing all the variables and calling the other ones:
    DEFINE MY_DB_USER=SYS
    DEFINE MY_DB_PWD=change_on_install
    DEFINE MY_DB_NAME=DragNFly
    DEFINE MY_DB_SID=DragNFly
    DEFINE MY_DB_CREATION_DESTINATION=E:\Oracle_DragNFly
    DEFINE MY_DB_CREATION_SOURCE=F:\Oracle\oradata\Instance_creation_scripts
    DEFINE MY_ORACLE_BIN=F:\oracle\bin
    DEFINE MY_ORACLE_HOME=F:\oracle
    connect &&MY_DB_USER/&&MY_DB_PWD as SYSDBA
    -- # The following files have to be stored in the #
    -- # same repertory as the present file #
    @@CreateDBdb &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    @@CreateDBtbs &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    @@CreateDBcat &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    @@postDBcreate &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    @@CreateDBuser &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    exit;
    -> Finally one example of use in CreateDB.sql is:
    connect &&1/&&2 as SYSDBA
    set echo on
    spool &&5\&&3\Create&&3.db.log
    startup nomount pfile="&&6\init_DB.ora";
    CREATE DATABASE &&3
    MAXINSTANCES 1
    MAXLOGHISTORY 1
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    DATAFILE '&&5\&&3\system_&&3.01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
    EXTENT MANAGEMENT LOCAL
    DEFAULT TEMPORARY TABLESPACE &&3._TMP TEMPFILE '&&5\&&3\temp_&&3.01.dbf' SIZE 1500M REUSE
    UNDO TABLESPACE "&&3._UNDO" DATAFILE '&&5\&&3\undo_&&3.01.dbf' SIZE 500M REUSE
    CHARACTER SET WE8ISO8859P1
    NATIONAL CHARACTER SET AL16UTF16
    LOGFILE GROUP 1 ('&&5\&&3\redo_&&3.01.log', '&&5\&&3\redo_&&3.01bis.log') SIZE 102400K,
    GROUP 2 ('&&5\&&3\redo_&&3.02.log', '&&5\&&3\redo_&&3.02bis.log') SIZE 102400K,
    GROUP 3 ('&&5\&&3\redo_&&3.03.log', '&&5\&&3\redo_&&3.03bis.log') SIZE 102400K;
    spool off;
    As you can see a first problem is that i have to set the variables the first time in the .bat and a second time in the first .sql. I don't know how to use an unique file for setting all the variables i need.
    Second difficulty is: fixing names and directories is a first step but i would like to fix all the different size values in this same file. The goal is to have only one file with dozen of values to change before creating new instances instead of checking all the different parameters inside of the different files.
    What is your mind on this?
    Probably there are better examples that i don't found?
    Regards,
    Tif

    One error i didn't suspect -> don't using SID with lowercase and uppercase in the name.
    Thing i've forgotten to say: variables have to be set both in the .bat and the first .sql but they have to match too with values in the init.ora. That why i would like to simplify all these declarations with unifying them into a single file.
    If somebody can help me, please
    Tif

  • Create ecatt script for one sales order creation with multiple line items

    Hi ,
    I want to create a ecatt script for one sales order creation with multiple line items. Preferably SAP GUI.
    This selection of data will be from an external file/ variants which will have only one row of data in it.
    Firstly: I have to sort the external file having same PO Numbers in an order.Group them together.
    Second: I have to create sales order for those many line items having same PO Number.
    Best Regard
    Taranum

    Hi Micky
    Firstl you should upload the Line items for a particular sales Order in an Internal table
    and then pass that internal table to your BAPI during your coding corresponding to a particu;lar sales order
    In case of any issues pls revert back
    Reward points if helpful
    Regards
    Hitesh

  • MAXL Script for copying outline

    Can we write any MAXL Script for copying outline from one aplication/datbase to another application/database.
    Example copying olt from app1.dbb1 to app2.dbb2

    No and yes.
    There is no MaxL statement for copying an outline from one DB to another (Unless you are converting from BSO to ASO). But you can shell system commands like xcopy within a MaxL script (of course you could just do this in your batch or shell script) . Just make sure you stop the Dbs before doing the copy

  • Need data loader script for Buyer Creation for R12

    Hi ,
    Anybody has data loader script for Buyer creation in R12. Please copy paste one line in the reply on this message.
    Thanks

    Hi ,
    Anybody has data loader script for Buyer creation in R12. Please copy paste one line in the reply on this message.
    Thanks

  • Stored Outline for Bind Variable

    Hi,
    Please let me know the use of stored outline to maintain the same execution plan for a sql which contains bind variable.
    I know how to use stored outline for a sql which does not contain bind variable. But I want the use of stored outline for sql where bind variables have been used. Please provide an example.
    Thanks,
    Mrinmoy
    Edited by: user3001930 on Aug 10, 2010 11:22 PM

    Not sure as I don't use them myself, but on AskTom:
    http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1396058400346694178
    He says:
    >
    stored outlines are deprecated in 11g - replaced by query plan baselines.
    http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/sqlplsql.htm#sthref2589

  • Shell Scripts for Directory Creation !

    Hi All
    Where can we find the Shell scripts for creating Directories before installing SAP SM 7.0 on RHEL 5.2 ?
    Please let me know.
    Thanks
    Srikar

    Yes - it may be necessary if that is a completely new machine.
    But it's not that much work for that you would need a script, you can create multiple at once using
    mkdir -p /oracle/<SID>/102_64
    mkdir -p /oracle/<SID>/sapbackup
    etc.
    If you don't create them now, sapinst will tell you to create them, it won't stop with an error.
    Markus

  • Passing variables from .bat to .sql in instance creation scripts

    Hi all,
    In the classical instance creation scripts numerous parameters are repeated even if they are similar. For example, the directory into which saving the different tablespaces is often the same. Also i'm looking for passing them as parameters from the .bat launching the instance creation. My first tries give the following:
    -> In the .bat launching the creation:
    set MY_DB_USER=sys
    set MY_DB_PWD=change_on_install
    set MY_DB_NAME=DragNFly
    set ORACLE_SID=DragNFly
    set MY_DB_CREATION_SOURCE=F:\Oracle\oradata\Instance_creation_scripts
    set MY_DB_CREATION_DESTINATION=E:\Oracle_DragNFly
    set MY_ORACLE_BIN=F:\oracle\bin
    set MY_ORACLE_HOME=F:\oracle
    mkdir %MY_ORACLE_HOME%\admin\%ORACLE_SID%\bdump
    mkdir %MY_ORACLE_HOME%\admin\%ORACLE_SID%\cdump
    mkdir %MY_ORACLE_HOME%\admin\%ORACLE_SIDD%\create
    mkdir %MY_ORACLE_HOME%\admin\%ORACLE_SID%\udump
    mkdir %MY_DB_CREATION_DESTINATION%\%ORACLE_SID%
    %MY_ORACLE_BIN%\oradim.exe -new -sid %ORACLE_SID% -startmode m
    %MY_ORACLE_BIN%\oradim.exe -edit -sid %ORACLE_SID% -startmode a
    %MY_ORACLE_BIN%\orapwd.exe file=%MY_ORACLE_HOME%\Database\PWD%MY_DB_NAME%.ora password=%MY_DB_PWD%
    %MY_ORACLE_BIN%\sqlplus /nolog connect %MY_DB_USER%/%MY_DB_PWD% @%ORACLE_SID% as sysdba
    %MY_ORACLE_BIN%\sqlplus /nolog @%MY_DB_CREATION_SOURCE%\StartCreation.sql
    -> Then in the first sql file, fixing all the variables and calling the other ones:
    DEFINE MY_DB_USER=SYS
    DEFINE MY_DB_PWD=change_on_install
    DEFINE MY_DB_NAME=DragNFly
    DEFINE MY_DB_SID=DragNFly
    DEFINE MY_DB_CREATION_DESTINATION=E:\Oracle_DragNFly
    DEFINE MY_DB_CREATION_SOURCE=F:\Oracle\oradata\Instance_creation_scripts
    DEFINE MY_ORACLE_BIN=F:\oracle\bin
    DEFINE MY_ORACLE_HOME=F:\oracle
    connect &&MY_DB_USER/&&MY_DB_PWD as SYSDBA
    -- # The following files have to be stored in the #
    -- # same repertory as the present file #
    @@CreateDBdb &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    @@CreateDBtbs &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    @@CreateDBcat &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    @@postDBcreate &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    @@CreateDBuser &&MY_DB_USER &&MY_DB_PWD &&MY_DB_NAME &&MY_DB_SID &&MY_DB_CREATION_DESTINATION &&MY_DB_CREATION_SOURCE &&MY_ORACLE_BIN &&MY_ORACLE_HOME
    exit;
    -> Finally one example of use in CreateDB.sql is:
    connect &&1/&&2 as SYSDBA
    set echo on
    spool &&5\&&3\Create&&3.db.log
    startup nomount pfile="&&6\init_DB.ora";
    CREATE DATABASE &&3
    MAXINSTANCES 1
    MAXLOGHISTORY 1
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    DATAFILE '&&5\&&3\system_&&3.01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
    EXTENT MANAGEMENT LOCAL
    DEFAULT TEMPORARY TABLESPACE &&3._TMP TEMPFILE '&&5\&&3\temp_&&3.01.dbf' SIZE 1500M REUSE
    UNDO TABLESPACE "&&3._UNDO" DATAFILE '&&5\&&3\undo_&&3.01.dbf' SIZE 500M REUSE
    CHARACTER SET WE8ISO8859P1
    NATIONAL CHARACTER SET AL16UTF16
    LOGFILE GROUP 1 ('&&5\&&3\redo_&&3.01.log', '&&5\&&3\redo_&&3.01bis.log') SIZE 102400K,
    GROUP 2 ('&&5\&&3\redo_&&3.02.log', '&&5\&&3\redo_&&3.02bis.log') SIZE 102400K,
    GROUP 3 ('&&5\&&3\redo_&&3.03.log', '&&5\&&3\redo_&&3.03bis.log') SIZE 102400K;
    spool off;
    As you can see a first problem is that i have to set the variables the first time in the .bat and a second time in the first .sql. I don't know how to use an unique file for setting all the variables i need.
    Second difficulty is: fixing names and directories is a first step but i would like to fix all the different size values in this same file. The goal is to have only one file with dozen of values to change before creating new instances instead of checking all the different parameters inside of the different files.
    Third problem: variables are not transmitted to the init.ora. I think that it's possible to generate it using template and the defined variables, but i don't try for the moment.
    What is your mind on this?
    Probably there are better examples that i don't found?
    Regards,
    Tif

    the problem is nothing your showed.   did you see a security warning that you ignored?
    to test, if that's the problem go here and adjust your security settings:  http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.ht ml
    if that fails, upload your files to a server and confirm everything works.  then start working on your local configuration.

  • Stored Outlines & Restore Table Stats

    Hi all,
    I would like to know how restoring of table stats change execution plans when stored outlines are in place?
    DB version is 10.2.0.4.
    NAME                                 TYPE                             VALUE
    optimizer_dynamic_sampling           integer                          0
    optimizer_features_enable            string                           10.2.0.4
    optimizer_index_caching              integer                          0
    optimizer_index_cost_adj             integer                          65
    optimizer_mode                       string                           FIRST_ROWS_10
    optimizer_secure_view_merging        boolean                          TRUE
    query_rewrite_enabled                string                           TRUE
    star_transformation_enabled          string                           FALSE
    Following actions were done last month:
    1. dbms_stats.gather_table_stats(schema IMANAGE, Table DIT_TRUSTEE)
    2. dbms_stats.lock_table_stats(schema IMANAGE, Table DIT_TRUSTEE)
    3. Once the desired execution plan for Query 1 (e.g. sql_id=ah8nzqhyu7xh4) was in V$SQL and was used by query, I created a Stored Outline using DBMS_OUTLN.create_outline, and enabled outline by setting use_stored_outlines to the desired outline category.
    4. Every thing remained fine for almost 30-35 days
    Today, there was another query (e.g. sql_id=7anr84k12d5rt, using same DIT_TRUSTEE table) whose  query plan got changed. This query didn't have any stored outline in place and was performing without any problem earlier. So, I gathered stats for the same table (DIT_TRUSTEE) after unlocking its stats. It didn't help. So, I thought to restore old stats against which query used to perform better while also rebuilt some indexes. After the restore of table stats (DIT_TRUSTEE) to a date which was earlier than the date of creation of 1st stored outline, the execution plan of query 1 (e.g. sql_id=ah8nzqhyu7xh4) got changed. Can we know the reason why it got changed? I was under the impression that any change in stats doesn't impact the execution plan if stored outline is in place for a query. But it looked like this wasn't the case.
    It would be good if someone can explain or share their experiences.
    regards,
    Anjum

    Hi,
    The query against SQL_ID=ah8nzqhyu7xh4 is:
    SELECT imanage.DIT_TRUSTEE.CREATED_TIME, imanage.DIT_TRUSTEE.DIT_CLASS, imanage.DIT_TRUSTEE.DOES_PASSWORD_EXPIRE, imanage.DIT_TRUSTEE.DOMAIN, imanage.DIT_TRUSTEE.FORCE_PASSWORD_CHANGE, imanage.DIT_TRUSTEE.HOME_LIBRARY, imanage.DIT_TRUSTEE.IS_DELETED, imanage.DIT_TRUSTEE.IS_ENABLED, imanage.DIT_TRUSTEE.IS_LEAF_NODE, imanage.DIT_TRUSTEE.LABEL_F21011, imanage.DIT_TRUSTEE.LOGIN_LOCKOUT_TIME, imanage.DIT_TRUSTEE.MODIFIED_TIME, imanage.DIT_TRUSTEE.PARENT_TRUSTEE_RSID, imanage.DIT_TRUSTEE.PASSWORD_F21015, imanage.DIT_TRUSTEE.PASSWORD_FAIL_COUNT, imanage.DIT_TRUSTEE.PASSWORD_MODIFIED_TIME, imanage.DIT_TRUSTEE.RDN, imanage.DIT_TRUSTEE.REPLICATION_ID, imanage.DIT_TRUSTEE.SID, imanage.DIT_TRUSTEE.SYNCHRONIZE_ID, imanage.DIT_TRUSTEE.SYNCHRONIZED_TIME, imanage.DIT_TRUSTEE.TRUSTEE_TYPE, imanage.DIT_TRUSTEE.UID_F21024, imanage.DIT_TRUSTEE.WORKSPACE_LIBRARY, imanage.DIT_TRUSTEE.WORKSPACE_RSID, imanage.DIT_TRUSTEE.IS_WORKSPACE_LIBRARY_INHERITED, imanage.DIT_TRUSTEE.IS_HOME_LIBRARY_INHERITED, imanage.DIT_TRUSTEE.S_CCSSBL_LBRRY_LST_NHRT_F60326, imanage.DIT_TRUSTEE.NAME_FIRST, imanage.DIT_TRUSTEE.NAME_MIDDLE, imanage.DIT_TRUSTEE.NAME_LAST, imanage.DIT_TRUSTEE.NAME_FULL, imanage.DIT_TRUSTEE.NAME_SUFFIX, imanage.DIT_TRUSTEE.NAME_SALUTATION, imanage.DIT_TRUSTEE.GENDER, imanage.DIT_TRUSTEE.JOB_TITLE, imanage.DIT_TRUSTEE.ANNIVERSARY, imanage.DIT_TRUSTEE.BIRTHDATE, imanage.DIT_TRUSTEE.ASSISTANT_RSID, imanage.DIT_TRUSTEE.LOCALE_LANGUAGE, imanage.DIT_TRUSTEE.LOCALE_COUNTRY, imanage.DIT_TRUSTEE.LOCALE_TIMEZONE, imanage.DIT_TRUSTEE.EMAIL_1, imanage.DIT_TRUSTEE.EMAIL_2, imanage.DIT_TRUSTEE.EMAIL_3, imanage.DIT_TRUSTEE.EMAIL_FORMAT_1, imanage.DIT_TRUSTEE.EMAIL_FORMAT_2, imanage.DIT_TRUSTEE.EMAIL_FORMAT_3, imanage.DIT_TRUSTEE.IM_ID, imanage.DIT_TRUSTEE.PHONE_HOME, imanage.DIT_TRUSTEE.PHONE_BUSINESS, imanage.DIT_TRUSTEE.PHONE_MOBILE, imanage.DIT_TRUSTEE.PHONE_PAGER, imanage.DIT_TRUSTEE.PHONE_OTHER, imanage.DIT_TRUSTEE.FAX_HOME, imanage.DIT_TRUSTEE.FAX_BUSINESS, imanage.DIT_TRUSTEE.FAX_OTHER, imanage.DIT_TRUSTEE.MAILING_ADDRESS, imanage.DIT_TRUSTEE.BA_DEPARTMENT, imanage.DIT_TRUSTEE.BA_LOCATION, imanage.DIT_TRUSTEE.BA_COMPANY, imanage.DIT_TRUSTEE.BA_STREET_1, imanage.DIT_TRUSTEE.BA_STREET_2, imanage.DIT_TRUSTEE.BA_POBOX, imanage.DIT_TRUSTEE.BA_CITY, imanage.DIT_TRUSTEE.BA_STATE, imanage.DIT_TRUSTEE.BA_COUNTRY, imanage.DIT_TRUSTEE.BA_POSTAL_CODE, imanage.DIT_TRUSTEE.HA_STREET_1, imanage.DIT_TRUSTEE.HA_STREET_2, imanage.DIT_TRUSTEE.HA_POBOX, imanage.DIT_TRUSTEE.HA_CITY, imanage.DIT_TRUSTEE.HA_STATE, imanage.DIT_TRUSTEE.HA_COUNTRY, imanage.DIT_TRUSTEE.HA_POSTAL_CODE, imanage.DIT_TRUSTEE.WP_HOME, imanage.DIT_TRUSTEE.WP_BUSINESS, imanage.DIT_TRUSTEE.WP_OTHER, imanage.DIT_TRUSTEE.NE_DELIVERY_MODE_IMMEDIATE, imanage.DIT_TRUSTEE.NE_DELIVERY_MODE_SUMMARY, imanage.DIT_TRUSTEE.NE_USER_PREFERENCE, imanage.DIT_TRUSTEE.NE_USER_SUMMARY_TIME, imanage.DIT_TRUSTEE.NE_COPY_TO_ASSISTANT, imanage.DIT_TRUSTEE.IS_EXTERNAL, imanage.DIT_TRUSTEE.IS_IS_EXTERNAL_INHERITED, imanage.DIT_TRUSTEE.NOTES, imanage.DIT_TRUSTEE.LOCATION_RSID, imanage.DIT_TRUSTEE.IS_ALL_IP_VALID, imanage.DIT_TRUSTEE.LAST_LOGON_TIME, imanage.DIT_TRUSTEE.S_HM_PG_WRKSPC_NHR_F4294966291, imanage.DIT_TRUSTEE.S_PRFRNCS_FCLTY_NH_F4294966292, imanage.DIT_TRUSTEE.HOME_PAGE_WORKSPACE, imanage.DIT_TRUSTEE.PREFERENCES_FACILITY, imanage.DIT_TRUSTEE.P_NEW_ITEM_INDICATOR, imanage.DIT_TRUSTEE.P_PWD_QUESTION, imanage.DIT_TRUSTEE.P_PWD_ANSWER, imanage.DIT_TRUSTEE.X_ECF_USER, imanage.DIT_TRUSTEE.X_DEPARTMENTS, imanage.DIT_TRUSTEE.X_TP_CLASSIFICATION, imanage.DIT_TRUSTEE.X_IMR_ENABLED_TIME, imanage.DIT_TRUSTEE.X_CAN_MANAGE_COI, imanage.DIT_TRUSTEE.X_CAN_ADD_THIRD_PARTY, imanage.DIT_TRUSTEE.X_IS_SECURITY_ADMINISTRATOR, imanage.DIT_TRUSTEE.X_IS_A_AND_S_DIRECT_LOAD, imanage.DIT_TRUSTEE.X_IS_ECF_DIRECT_LOAD, imanage.DIT_TRUSTEE.X_IS_NATIVE_REPOSITORY, imanage.DIT_TRUSTEE.X_CLIENT_CATEGORY, imanage.DIT_TRUSTEE.X_IS_ECF2_USER, imanage.DIT_TRUSTEE.X_IS_ECF2_ADMIN, imanage.DIT_TRUSTEE.X_CWS_UNIT, imanage.DIT_TRUSTEE.X_XCHANGING_ID, imanage.DIT_TRUSTEE.X_IS_DOCUMENT_FILE_VIEWER, imanage.DIT_TRUSTEE.X_IS_CWS_USER
    FROM imanage.DIT_TRUSTEE
    WHERE ((imanage.DIT_TRUSTEE.WORKSPACE_RSID = :"SYS_B_0") AND (UPPER(imanage.DIT_TRUSTEE.RDN) = :1)) ORDER BY imanage.DIT_TRUSTEE.NAME_FIRST ASC, imanage.DIT_TRUSTEE.NAME_LAST ASC, imanage.DIT_TRUSTEE.UID_F21024 ASC, imanage.DIT_TRUSTEE.RDN ASC
    which shows the bind vars in place.
    while definition of index IX_DIT_TRUSTEE_6 is:
    CREATE INDEX "IMANAGE"."IX_DIT_TRUSTEE_6" ON "IMANAGE"."DIT_TRUSTEE" ("WORKSPACE_RSID", "DIT_CLASS", "SID") TABLESPACE "REPOS_INDX" PCTFREE 10INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 512K BUFFER_POOL DEFAULT) LOGGING LOCAL
    Now, I below details explaining the index it started using despite outline in place:
    SQL> select sql_id, HASH_VALUE, CHILD_NUMBER, users_executing from v$sql where PLAN_HASH_VALUE=2563299851;
    SQL_ID        HASH_VALUE CHILD_NUMBER USERS_EXECUTING
    ah8nzqhyu7xh4 1034155524            1               0
    SQL> SELECT hash_value, child_number, sql_text FROM v$sql WHERE sql_id='ah8nzqhyu7xh4';
    HASH_VALUE CHILD_NUMBER
    SQL_TEXT
    1034155524            1
    SELECT imanage.DIT_TRUSTEE.CREATED_TIME, imanage.DIT_TRUSTEE.DIT_CLASS, imanage.DIT_TRUSTEE.DOES_PASSWORD_EXPIRE, imanage.DIT_TRUSTEE.DOMAIN, imanage.DIT_TRUSTEE.FORCE_PASSWORD_CHANGE, imanage.DIT_TRU
    STEE.HOME_LIBRARY, imanage.DIT_TRUSTEE.IS_DELETED, imanage.DIT_TRUSTEE.IS_ENABLED, imanage.DIT_TRUSTEE.IS_LEAF_NODE, imanage.DIT_TRUSTEE.LABEL_F21011, imanage.DIT_TRUSTEE.LOGIN_LOCKOUT_TIME, imanage.D
    IT_TRUSTEE.MODIFIED_TIME, imanage.DIT_TRUSTEE.PARENT_TRUSTEE_RSID, imanage.DIT_TRUSTEE.PASSWORD_F21015, imanage.DIT_TRUSTEE.PASSWORD_FAIL_COUNT, imanage.DIT_TRUSTEE.PASSWORD_MODIFIED_TIME, imanage.DIT
    _TRUSTEE.RDN, imanage.DIT_TRUSTEE.REPLICATION_ID, imanage.DIT_TRUSTEE.SID, imanage.DIT_TRUSTEE.SYNCHRONIZE_ID, imanage.DIT_TRUSTEE.SYNCHRONIZED_TIME, imanage.DIT_TRUSTEE.TRUSTEE_TYPE, imanage.DIT_TRUS
    TEE.UID_F21024, imanage.DIT_TRUSTEE.WORKSPACE_LIBRARY, imanage.DIT_TRUSTEE.WORKSPACE_RSID, imanage.DIT_TRUSTEE.IS_WORKSPACE_LIBRARY_INHERITED, imanage.DIT_TRUSTEE.IS_HOME_LIBRARY_INHERITED, imanage.DI
    SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('ah8nzqhyu7xh4',1));
    PLAN_TABLE_OUTPUT
    SQL_ID  ah8nzqhyu7xh4, child number 1
    SELECT imanage.DIT_TRUSTEE.CREATED_TIME, imanage.DIT_TRUSTEE.DIT_CLASS,
    imanage.DIT_TRUSTEE.DOES_PASSWORD_EXPIRE, imanage.DIT_TRUSTEE.DOMAIN,
    imanage.DIT_TRUSTEE.FORCE_PASSWORD_CHANGE, imanage.DIT_TRUSTEE.HOME_LIBRARY,
    imanage.DIT_TRUSTEE.IS_DELETED, imanage.DIT_TRUSTEE.IS_ENABLED,
    imanage.DIT_TRUSTEE.IS_LEAF_NODE, imanage.DIT_TRUSTEE.LABEL_F21011,
    imanage.DIT_TRUSTEE.LOGIN_LOCKOUT_TIME, imanage.DIT_TRUSTEE.MODIFIED_TIME,
    imanage.DIT_TRUSTEE.PARENT_TRUSTEE_RSID, imanage.DIT_TRUSTEE.PASSWORD_F21015,
    imanage.DIT_TRUSTEE.PASSWORD_FAIL_COUNT, imanage.DIT_TRUSTEE.PASSWORD_MODIFIED_TIME,
    imanage.DIT_TRUSTEE.RDN, imanage.DIT_TRUSTEE.REPLICATION_ID, imanage.DIT_TRUSTEE.SID,
    imanage.DIT_TRUSTEE.SYNCHRONIZE_ID, imanage.DIT_TRUSTEE.SYNCHRONIZED_TIME,
    imanage.DIT_TRUSTEE.TRUSTEE_TYPE, imanage.DIT_TRUSTEE.UID_F21024,
    imanage.DIT_TRUSTEE.WORKSPACE_LIBRARY, imanage.DIT_TRUSTEE.WORKSPACE_RSID,
    imanage.DIT_TRUSTEE.IS_WORKSPACE_LIBRARY_INHERITED,
    imanage.DIT_TRUSTEE.IS_HOME_LIBRARY_INHERITED, imanage.DI
    Plan hash value: 2563299851
    | Id  | Operation                    | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT             |                      |       |       |     4 (100)|          |
    |   1 |  SORT ORDER BY               |                      |     1 |   248 |     4  (25)| 00:00:01 |
    |*  2 |   TABLE ACCESS BY INDEX ROWID| DIT_TRUSTEE          |     1 |   248 |     3   (0)| 00:00:01 |
    |*  3 |    INDEX RANGE SCAN          | DIT_TRUSTEE_TST1_IDX |     1 |       |     2   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - filter("DIT_TRUSTEE"."WORKSPACE_RSID"=:SYS_B_0)
       3 - access("DIT_TRUSTEE"."SYS_NC00096$"=:1)
    Note
       - outline "SYS_OUTLINE_13100417531513606" used for this statement
    38 rows selected.
    Definition of index DIT_TRUSTEE_TST1_IDX is:
    CREATE INDEX "IMANAGE"."DIT_TRUSTEE_TST1_IDX" ON "IMANAGE"."DIT_TRUSTEE" (UPPER("RDN")) TABLESPACE "REPOS_INDX" PCTFREE 10 INITRANS 2 MAXTRANS 255STORAGE ( INITIAL 512K BUFFER_POOL DEFAULT) LOGGING LOCAL
    I didnt want the query to use index DIT_TRUSTEE_TST1_IDX as it performs bad for the customer as compare to index IX_DIT_TRUSTEE_6
    The question arises here is that can we force an index to be used as part of stored outline because when we created outline, it was using index IX_DIT_TRUSTEE_6.

Maybe you are looking for