Explain the Plan in SQL Developer vs SQLPlus

Hello world

I have a small question. Why a plan explain blocking in SQL Developer but return immediately in sqlplus?

For example, in SQL developer, I write my statement and use the F6 command to bring up the plan to explain it and just, it hangs and crashes. It seems he's trying to produce a plan to explain, but it worked for hours now.

When I log into SQL Plus, I do a
SQL> explain plan for <query>:
SQL> select * from table(dbms_xplan.display);
The whole process takes less than a minute to get the plan of the explain command.

Is there something fundamentally different running through SQL Developer?

Thank you!

-Joe

Joe,

F6 in SQL Developer runs an AutoTrace, which is currently running the SQL and also shows schedules and terms of the explain command. If you only want the plan of the explain command, use F10.

Kind regards
Bob

Tags: Database

Similar Questions

  • a sql id have more than explain the plan so I'd like to come up with plan used at runtime.

    Hi all


    In a sql oracle11g having id several explain the plan so I'd like to come up with plan used at runtime.

    For example SQlID:-8yczg5zav14vt have 5 sql plan and I want to check that we execute at any time, please let me how I can check by sql queries


    Concerning

    Ranjeet

    RanjeetSohale wrote:

    I am ok for that but active only plans is right, but in accordance with the foregoing, two data line table in the table SQL V$ so both active and plan cost is high and the other is low.

    Yes that's right cost is different, he means here another effective plan for oracle will analyze the declaration again and stored as new slider of the child. Especially since I explained that.

  • explain the plan of a query with variables

    Trying to Explain plan at some sql code in sql * more. The query has a variable. How can I do this?

    I look to explain the plan and dbms_xplan but did not find anything with variables

    use sqlplus variable bind:

    SQL> --define variable
    SQL> var x varchar2
    
    SQL> -- notice the colon prefixing the variable
    SQL> explain plan for select * from customer where cid = :x;
    
    Explained.
    
    SQL> select * from table( dbms_xplan.display );
    
    PLAN_TABLE_OUTPUT
    -----------------------------------------------------------------------------------------------
    Plan hash value: 1709312366
    
    ----------------------------------------------------------------------------------------
    | Id  | Operation                   | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT            |          |     1 |    67 |     2   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| CUSTOMER |     1 |    67 |     2   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN          | CID      |     1 |       |     1   (0)| 00:00:01 |
    ----------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       2 - access("CID"=:X)
    
    14 rows selected.
    

    the variable should not be set to explain the request, because explain does not actually run.

    Published by: shoblock on November 6, 2008 16:51

  • explain the plan and so on

    Hello world


    could someone please provide me with details of explained the plan and I would appreciate some related details explain plan, trace and tkprof

    Thank you
    Shareef

    Hello

    PLAN of EXPLAINING is an Oracle utility that analyzes a statement and shows the expected execution plan. It may be different from the implementation plan real for a number of reasons.

    Extended SQL trace (10046 event) is a way to gather advanced diagnostic information. There are different levels, at levels 8 and 12 provide the greatest level of detail (you will be able to see the events of waiting and the bind variable values).

    TKProf is a utility that processes the raw trace files and makes shaped the output in a more readable way. However, some experts prefer to work with trace files "gross" - they are not so difficult to read, especially if you get some practice.

    There are other events of tracing: 10053 allows you to see what is happening inside the Oracle optimizer, 10104 allows to see the stats of hash etc join.

    Best regards
    Nikolai

  • Generation to EXPLAIN the PLAN on a database that is open in READ ONLY mode

    Hello

    I use the Oracle 10.2.0.3 version.

    If my database is opened in READ ONLY mode, means that no insert/update/delete operations are allowed here.

    During the generation of the PLAN to EXPLAIN this, the PLAN_TABLE registrations for any SQL. But my database is opened in READ ONLY mode, means that no inserts can happen.

    So, how can I generate EXPLAIN PLAN for my SQL in this State?

    Thanks in advance.



    Best regards
    oratest

    oratest wrote:
    I use the Oracle 10.2.0.3 version.

    If my database is opened in READ ONLY mode, means that no insert/update/delete operations are allowed here.

    During the generation of the PLAN to EXPLAIN this, the PLAN_TABLE registrations for any SQL. But my database is opened in READ ONLY mode, means that no inserts can happen.

    So, how can I generate EXPLAIN PLAN for my SQL in this State?

    You can always do: 'explain the plan in some_table@remote_database' to avoid inclusion in the local database. Unfortunately 10g added an extraction of the sequence of the code "explain plan", and that's where the call fails if you have tried this distant approach on your version.

    Here's an idea that I have not tested. If you configure a link of data to your database from production to the database read-only, you could then do a "explain plan" in the database of production for the SQL statement by changing each object reference in the SQL statement to "object@readonlydatabase". In most cases this will allow the optimizer to recognize the statement as "entirely to distance" and get the optimizer on the readonly database to create the execution plan - which will be then written into the production database.

    Concerning
    Jonathan Lewis

  • why sometimes the trace file does not explain the plan?

    Hello

    Sometimes, when I 'alter session set sql_trace = true' and run some querys, some of them don't see explained the plan in the trace file?

    I tried "alter system RAS shared_pool" before starting the trace, but not luck.

    (Oracle 10g R2)

    any ideas?

    Thnks
    Miguel

    Published by: jmmnunes on Apr 27, 2010 18:01

    some of them don't watch not explain the plan in the trace file?

    Log out of your session after you set the trace sql false?

    All cursors must be closed to have access to all the information from the row source in the trace file.

  • Explain the plans differ as the parameter value changes

    Hi all

    My colleague posted a similar question a few days before. Happened because of some bad index. But now we are in a strange situation.

    DB:
    SQL> select * from v$version;
    
    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    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
    We use the query below and was working fine until 13.
    SQL> explain plan for
      2  SELECT *
      3    FROM gacc_dtl_v1  acc,
      4         gcus_dtl_v1  cus,
      5         gtxn_dtl_v1  txn
      6   WHERE txn.customer_id = cus.customer_number(+)
      7   AND txn.batch_id = cus.batch_id(+)
      8   AND txn.account_number = acc.id
      9   AND acc.batch_id = '130609'
     10   AND cus.batch_id(+) = '130609'
     11   AND txn.batch_id = '130609' AND cus.target IN ('30');
    
    Explained.
    
    SQL> select * from table(dbms_xplan.display);
    
    PLAN_TABLE_OUTPUT
    -------------------------------------------------------------------------------------------------------------
    Plan hash value: 566819363
    
    -------------------------------------------------------------------------------------------------------------
    | Id  | Operation                     | Name                | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
    -------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT              |                     |     1 |   947 |       | 16963   (1)| 00:03:24 |
    |   1 |  NESTED LOOPS                 |                     |     1 |   947 |       | 16963   (1)| 00:03:24 |
    |*  2 |   HASH JOIN                   |                     |    41 | 26322 |  9136K| 16799   (1)| 00:03:22 |
    |*  3 |    TABLE ACCESS BY INDEX ROWID| GTXN_DTL_V1         | 31055 |  8764K|       |  2430   (1)| 00:00:30 |
    |*  4 |     INDEX RANGE SCAN          | GTXN_V1_BATCHID_NDX | 60524 |       |       |   156   (2)| 00:00:02 |
    |*  5 |    TABLE ACCESS BY INDEX ROWID| GCUS_DTL_V1         |   176K|    59M|       | 10869   (1)| 00:02:11 |
    |*  6 |     INDEX RANGE SCAN          | IDX_CUS2_V1         |   198K|       |       |   527   (2)| 00:00:07 |
    |   7 |   TABLE ACCESS BY INDEX ROWID | GACC_DTL_V1         |     1 |   305 |       |     4   (0)| 00:00:01 |
    |*  8 |    INDEX RANGE SCAN           | GACC_DTL_V1_IDX     |     1 |       |       |     3   (0)| 00:00:01 |
    -------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       2 - access("TXN"."CUSTOMER_ID"="CUS"."CUSTOMER_NUMBER" AND "TXN"."BATCH_ID"="CUS"."BATCH_ID")
       3 - filter("TXN"."CUSTOMER_ID" IS NOT NULL)
       4 - access("TXN"."BATCH_ID"='130609')
       5 - filter("CUS"."TARGET"='30')
       6 - access("CUS"."BATCH_ID"='130609')
       8 - access("TXN"."ACCOUNT_NUMBER"="ACC"."ID" AND "ACC"."BATCH_ID"='130609')
           filter(SUBSTR("TXN"."ACCOUNT_NUMBER",1,3)=SUBSTR("ACC"."ID",1,3))
    
    26 rows selected.
    It shows a hash join and nested with cost 16963 loops and gives the result in 2-3 seconds. It gives the same plan to explain even now if we use batch_id = '130609'

    Now all of a sudden from yesterday it gives different explain the plan below. Only difference in the query below is the value of batch_id
    SQL> explain plan for
      2  SELECT *
      3    FROM gacc_dtl_v1  acc,
      4         gcus_dtl_v1  cus,
      5         gtxn_dtl_v1  txn
      6   WHERE txn.customer_id = cus.customer_number(+)
      7   AND txn.batch_id = cus.batch_id(+)
      8   AND txn.account_number = acc.id
      9   AND acc.batch_id = '150609'
     10   AND cus.batch_id(+) = '150609'
     11   AND txn.batch_id = '150609' AND cus.target IN ('30');
    
    Explained.
    
    SQL> select * from table(dbms_xplan.display);
    
    PLAN_TABLE_OUTPUT
    ------------------------------------------------------------------------------------------------------------
    Plan hash value: 773603995
    
    --------------------------------------------------------------------------------------------------------
    | Id  | Operation                     | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT              |                        |     1 |   947 |    77   (0)| 00:00:01 |
    |   1 |  NESTED LOOPS                 |                        |     1 |   947 |    77   (0)| 00:00:01 |
    |   2 |   NESTED LOOPS                |                        |     1 |   594 |    73   (0)| 00:00:01 |
    |   3 |    TABLE ACCESS BY INDEX ROWID| GACC_DTL_V1            |     1 |   305 |     4   (0)| 00:00:01 |
    |*  4 |     INDEX RANGE SCAN          | GACC_DTL_BATCH_ID_INDX |     1 |       |     3   (0)| 00:00:01 |
    |*  5 |    TABLE ACCESS BY INDEX ROWID| GTXN_DTL_V1            |     1 |   289 |    69   (0)| 00:00:01 |
    |*  6 |     INDEX RANGE SCAN          | IDX_TXN2_V1            |   125 |       |    12   (0)| 00:00:01 |
    |*  7 |   TABLE ACCESS BY INDEX ROWID | GCUS_DTL_V1            |     1 |   353 |     4   (0)| 00:00:01 |
    |*  8 |    INDEX RANGE SCAN           | IDX_CUS3_V1            |     1 |       |     3   (0)| 00:00:01 |
    --------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       4 - access("ACC"."BATCH_ID"='150609')
       5 - filter("TXN"."CUSTOMER_ID" IS NOT NULL AND "TXN"."BATCH_ID"='150609')
       6 - access("TXN"."ACCOUNT_NUMBER"="ACC"."ID")
           filter(SUBSTR("TXN"."ACCOUNT_NUMBER",1,3)=SUBSTR("ACC"."ID",1,3))
       7 - filter("CUS"."TARGET"='30')
       8 - access("CUS"."BATCH_ID"='150609' AND "TXN"."CUSTOMER_ID"="CUS"."CUSTOMER_NUMBER")
           filter("TXN"."BATCH_ID"="CUS"."BATCH_ID")
    
    26 rows selected.
    It shows two loops nested with cost 77, but works for hours. Very very slow.. No idea what's going on...
     select i.table_name,i.index_name,index_type,c.column_name,c.column_position,e.column_expression
       from all_indexes i, all_ind_columns c,all_ind_expressions e
       where c.index_name = i.index_name
       and e.index_name(+) = i.index_name
       and i.table_name in ('GCUS_DTL_V1','GACC_DTL_V1','GTXN_DTL_V')
       order by 1,2,4
    
    TABLE_NAME     INDEX_NAME          INDEX_TYPE          COLUMN_NAME     COLUMN_POSITION     COLUMN_EXPRESSION
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    GACC_DTL_V1     GACC_DTL_BATCH_ID_INDX     NORMAL               BATCH_ID          1     
    GACC_DTL_V1     GACC_DTL_V1_IDX          NORMAL               BATCH_ID          2     
    GACC_DTL_V1     GACC_DTL_V1_IDX          NORMAL               ID               1     
    GACC_DTL_V1     GACC_DTL_V1_IDX2     FUNCTION-BASED NORMAL     SYS_NC00101$          1     SUBSTR("ID",1,3)
    GACC_DTL_V1     IDX_ACC1_V1          NORMAL               CATEGORY          1     
    GACC_DTL_V1     IDX_ACC3_V1          FUNCTION-BASED NORMAL     SYS_NC00099$          1     "CUSTOMER_NUMBER"||'.'||"LIMIT_REF"
    GACC_DTL_V1     IDX_ACC4_V1          FUNCTION-BASED NORMAL     SYS_NC00100$          1     "CUSTOMER_NUMBER"||'.000'||"LIMIT_REF"
    GACC_DTL_V1     IDX_ACC5_V1          NORMAL               POSTING_RESTRICT     1     
    GACC_DTL_V1     IDX_CUS5_V1          NORMAL               CUSTOMER_NUMBER          1     
    GACC_DTL_V1     IDX_CUS6_V1          NORMAL               LIMIT_REF          1     
    GCUS_DTL_V1     GCUS_DTL_V1_IDX1     NORMAL               CUSTOMER_NUMBER          1     
    GCUS_DTL_V1     IDX_CUS2_V1          NORMAL               BATCH_ID          1     
    GCUS_DTL_V1     IDX_CUS3_V1          NORMAL               BATCH_ID          1     
    GCUS_DTL_V1     IDX_CUS3_V1          NORMAL               CUSTOMER_NUMBER          2     
    GCUS_DTL_V1     IDX_CUS3_V1          NORMAL               INDUSTRY          4     
    GCUS_DTL_V1     IDX_CUS3_V1          NORMAL               SECTOR               3     
    GCUS_DTL_V1     IDX_CUS4_V1          FUNCTION-BASED NORMAL     SYS_NC00078$          1     SUBSTR("DATE_STAMP",1,6)
    We are also do not understand why the filter (SUBSTR ("TXN". ""»(, 1, 3) ACCOUNT_NUMBER = SUBSTR ("VAC". " ID", 1, 3)) is used in both queries.

    All tables are analyzed today.

    Please share your thoughts on this.

    Thanks in advance,
    Jac

    Jac says:

    L     H     NUM_BUCKETS     LAST_ANALYZED     SAMPLE_SIZE     HISTOGRAM
    ------------------------------------------------------------------------------------------------------------------------------------------------
    010109     311208     235     13/Jun/2009     5,343     FREQUENCY
    

    You have a histogram of frequencies on the BATCH_ID column missing at least 2 values according to your index statistics (235 buckets vs 237 separate keys).

    If the value that you use in the query is missing then this could be the explanation for the estimation of cardinality bad (since you're on pre - 10.2.0.4. In 10.2.0.4 that this behavior changes).

    The size of the sample of 5 300 lines is also very low, given the 57,000,000 lines according to the index statistics.

    You have two options (which can be combined):

    -Increase the size of the sample using a parameter explicitly estimate_percent, for example at least 10 percent

    exec DBMS_STATS. GATHER_TABLE_STATS (null, 'GACC_DTL_V1', estimate_percent-online 10, method_opt => 'FOR COLUMNS SIZE 254 BATCH_ID,' waterfall-online fake)

    -Get rid of the histogram

    exec DBMS_STATS. GATHER_TABLE_STATS (null, 'GACC_DTL_V1', method_opt-online 'FOR BATCH_ID COLUMNS SIZE 1', cascade-online fake)

    Note: Is there a particular reason why you store numbers in varchar columns? This might be the reason why Oracle believes that it must generate a histogram using the AUTO SIZE option.

    I tend to promote to remove from the histogram, but you must first verify the data if the BATCH_ID values are spread out and the histogram is reasonable:

    select
            batch_id
          , count(*)
    from
            gacc_dtl_v1
    group by
            batch_id;
    

    No constarints are at the DB level. All are processed Application level.

    Have you checked this in DBA/ALL/USER_CONSTRAINTS?

    It's also a good idea to have constraints at the level of the DB. It keeps your data consistent and quite often helps the optimizer. It allows even 10.2 and later to make things like the elimination of a join table that can make a huge difference in performance.

    Kind regards
    Randolf

    Oracle related blog stuff:
    http://Oracle-Randolf.blogspot.com/

    SQLTools ++ for Oracle (Open source Oracle GUI for Windows):
    http://www.sqltools-plusplus.org:7676 /.
    http://sourceforge.NET/projects/SQLT-pp/

    Published by: Randolf Geist on June 16, 2009 11:48

    Comment added constraints

  • difference between the execution plan and explain the plan?

    What is the difference between the execution plan & explain the plan?

    an execution plan is the actual steps that oracle will pass by when it executes a query.

    explain plan is a tool that is used to generate the steps of an execution plan for a query.

  • explain the plan against the eve...

    I have a DDL which takes a long time to run on the primary
    would like to know how long it takes if I switch to sleep mode and run education instead of the primary current standby... is possible to run explain sleep agasint plan without having to go through the whole process of switch?
    I tried but the statement explain plan is a failure... Statement requires write Victorian for table plan and may not write in the plan table because db is not open... :) perhapts a new feature to implement in oracle 12g? :)
    :)

    v11.2.0.2
    physical standby

    be nice if we could run explains the plan for the system of relief through the primary system :) maybe in 12g?

    do not know now. :)

  • How to flush the output of the script in sql developer

    Greetings from a newbie,
    How can I empty out the script in sql developer?

    Kind regards
    Valerie

    Flush? You can clear the output pane by pressing 'Clear' (Eraser pencil) icon: the first icon on the mini-bar to the tab tools.

    That answer your question?
    K.

  • Explain the Plan in pl/sql

    Dear all.
     
    /*
    DBMS_XPLAN.DISPLAY_CURSOR(
       sql_id        IN  VARCHAR2  DEFAULT  NULL,
       child_number  IN  NUMBER    DEFAULT  NULL, 
       format        IN  VARCHAR2  DEFAULT  'TYPICAL');
    */
    
    
    SQL> SELECT * FROM table (
      2     DBMS_XPLAN.DISPLAY_CURSOR('b7jn4mf49n569'));
     
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    SQL_ID  b7jn4mf49n569, child number 0
    -------------------------------------
    select o.name, u.name from obj$ o, type$ t, user$ u  where o.oid$ = t.tvoid and
    u.user#=o.owner# and  bitand(t.properties,8388608) = 8388608 and
    (sysdate-o.ctime) > 0.0007
    Plan hash value: 4266358741
    --------------------------------------------------------------------------------
    | Id  | Operation                     | Name    | Rows  | Bytes | Cost (%CPU)| T
    --------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT              |         |       |       |    94 (100)|
    |   1 |  NESTED LOOPS                 |         |     1 |    72 |    94   (2)| 0
    |   2 |   NESTED LOOPS                |         |     1 |    56 |    93   (2)| 0
    |*  3 |    TABLE ACCESS FULL          | OBJ$    |    71 |  2414 |    37   (3)| 0
    |*  4 |    TABLE ACCESS BY INDEX ROWID| TYPE$   |     1 |    22 |     1   (0)| 0
    |*  5 |     INDEX UNIQUE SCAN         | I_TYPE2 |     1 |       |     0   (0)|
    |   6 |   TABLE ACCESS CLUSTER        | USER$   |     1 |    16 |     1   (0)| 0
    |*  7 |    INDEX UNIQUE SCAN          | I_USER# |     1 |       |     0   (0)|
    --------------------------------------------------------------------------------
     
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       3 - filter(("O"."OID$" IS NOT NULL AND SYSDATE@!-"O"."CTIME">.0007))
       4 - filter(BITAND("T"."PROPERTIES",8388608)=8388608)
       5 - access("O"."OID$"="T"."TVOID")
       7 - access("U"."USER#"="O"."OWNER#")
     
    29 rows selected
     
    SQL> 
    As you can see using DBMS_XPLAN. DISPLAY_CURSOR. I can view the plan to explain any query in SQL * MORE.
    But I want to write a PL/SQL function generating a plan to explain for any query and display of the plan to explain in a HTML page
    How can I do the same thing in pl/sql? I need your advice.

    Thanks in advance!

    Better use a loop FOR:

    BEGIN
     htp.htmlopen ();
     htp.headopen ();
     htp.title ('My First Page');
     htp.headclose ();
     htp.bodyopen ();
     htp.tableopen ();
    
     FOR rc IN (SELECT PLAN_TABLE_OUTPUT FROM TABLE (dbms_xplan.display()))
     LOOP
      htp.tablerowopen ();
      htp.tabledata (rc.plan_table_output);
      htp.tablerowclose ();
     END LOOP;
    
     htp.tableclose ();
     htp.bodyclose ();
    
     htp.htmlclose ();
    END;
    
  • explain the plan without permissions?

    We have some rules on production. one of them is that we can query the database as a developer, but we cannot change it. There are other connections (application) that can change the data. because we can not all DML on the production, we cannot see why a DML statements plan that modifies data. whenever we ask a DBA to send us a plan of enforcement, which is simply embarrassing.

    QUESTION: is it possible to pack "explain plan" statement in a procedure that would accept DML code as a parameter that developer is not able to run/don't have permissions of tun by itself and would assess such plan explanation as another, privileged user ("application") and returns the result (ie. assess the implementation plan) to the original user who invoke this procedure?

    the idea is to have a mechanism among the users of unpliviliged to see what happens really with the code which, after all, we change and correct, but can not run anyway (it is run under "user application" later).

    I would appreciate any idea how to solve this problem. There is no copy of production or something like this where we could do that loves us and play with the code as another user etc.

    Thank you

    943276 wrote:

    QUESTION: is it possible to pack "explain plan" statement in a procedure that would accept DML code as a parameter that developer is not able to run/don't have permissions of tun by itself and would assess such plan explanation as another, privileged user ("application") and returns the result (ie. assess the implementation plan) to the original user who invoke this procedure?

    Yes, possible. Basic example:

    // as schema production or whatever
    SQL> create or replace type TStrings is table of varchar2(4000);
      2  /
    Type created.
    
    SQL>
    SQL> create or replace function ExplainPlan( sqlStatement varchar2 )
      2          return TStrings pipelined authid definer is
      3          pragma autonomous_transaction;
      4          statementName   varchar2(50)    default 'sql.1';
      5  begin
      6          execute immediate
      7                  'explain plan set statement_id = '''||statementName||''' for '||sqlStatement;
      8          commit;
      9
     10          for c in (
     11                  select
     12                          plan_table_output as LINE
     13                  from TABLE(DBMS_XPLAN.Display('PLAN_TABLE',statementName,'TYPICAL'))
     14          ) loop
     15                  pipe row( c.line );
     16          end loop;
     17
     18          return;
     19  end;
     20  /
    
    Function created.
    
    SQL>
    SQL> grant execute ExplainPlan to some_other_user;
    ..
    

    As another user (requiring only a create session privilege):

    SQL> select * from TABLE(SchemaProd.ExplainPlan('select count(*) from emp'));
    
    COLUMN_VALUE
    --------------------------------------------------------------------------------
    Plan hash value: 2937609675
    
    -------------------------------------------------------------------
    | Id  | Operation        | Name   | Rows  | Cost (%CPU)| Time     |
    -------------------------------------------------------------------
    |   0 | SELECT STATEMENT |        |     1 |     1   (0)| 00:00:01 |
    |   1 |  SORT AGGREGATE  |        |     1 |            |          |
    |   2 |   INDEX FULL SCAN| PK_EMP |    14 |     1   (0)| 00:00:01 |
    -------------------------------------------------------------------
    
    9 rows selected.
    
    SQL> 
    

    Word of warning however. This example uses dynamic SQL. This is dangerous.

    It creates a very weak point in the scheme of production - as a non-privilege user is permitted to cross the dynamic SQL to a pattern of production, in the example above, blindly executed.

    If you want to continue this basic approach, then you will need to do some serious hardening to the ExplainPlan() function to ensure that SQL cannot be injected and cause the production of data being compromised safety.

  • Autotrace and explain the plan just see the Green point

    When I click on the AUTOTRACE and PLAN to EXPLAIN tabs in SQL Developer all I get is a green dot. I have PLUSTRCE roller set to my access code. I am running SQL DEVELOPER 1.5.1 on Windows XP Professional Patch 3.

    You must first click on icon to Explain or Autotrace to generate until you can see the tab.

  • explain the plan using plan_hash_value and runtime

    Hello

    Please let me know the syntax to get the plan to explain using sql_id and plan_hash_value.

    Also let me know how to find out the same sql execution times in the previous months. I have the ID value of sql.

    Kind regards

    VN

    > Is it possible to check how long the sql finished in the previous months?

    Of AWR / StatsPack reports.

    Or use awrsqrpt.sql which can query the repository for a single SQL_ID AWR.

    However, you must have the AWR data kept for 4 months.  The default retention is 7 days.

    Hemant K Collette

  • Explain the Plan of DBA_HIST_SQL_PLAN

    Hello

    I have the SQL_ID of a poor performing stmt of sql and I need to get the plan to explain the same DBA_HIST_SQL_PLAN.

    Please let me how can know I generate an explain plan of DBA_HIST_SQL_PLAN using sql_id.

    Kind regards

    VN

    That's fine - the service is available in this version.  (I asked because I thought that might be a function g 11 - but I just checked, and it's in 10 gr 2 as well).

    Concerning

    Jonathan Lewis

Maybe you are looking for

  • Apps on my ipad has disappeared; reappear briefly during the restoration, and then disappear again.

    I'm in IOS 9.2.1 on an iPad Mini 2, implemented to date (January 31, 2016.) Before the update, I noticed that he lacked all default applications. Projector showed the apps, but the 'Open' button was grey out. The app store shows install them on the i

  • How to get out milliseconds of time function?

    Hi all I use the time function to get the current time of the step. I get only in the format HH and impossible to get milliseconds. Milliseconds are however get updated locally. I'm not able to get in the final installment Is anyway to get the millis

  • Scanner of HP officejet Pro L7680 all-in-one does not

    I have an iMac with OSX Maverick running and after that I have updated with the new software of Maverick, the function scanner no longer works.  I now give an error that says: cannot log on to the device.  I also can not re - install the package of s

  • stop the program

    Hello I have a programworking of labview as follows the labview program will wait you until the threshold is detected as if the voltage is greater than 5 volts then it will send an sms message using a modem gsm per VISA the threshold voltage can last

  • How to install silverlight/mac

    Try to get NetFlix to work on my computer