36
SQLT XPLORE The SQLT XPLAIN Hidden Child Carlos Sierra Enkitec

SQLT XPLORE - The SQLT XPLAIN Hidden Child

  • Upload
    enkitec

  • View
    304

  • Download
    4

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

SQLT  XPLORE  The  SQLT  XPLAIN  Hidden  Child  

Carlos  Sierra  -­‐  Enkitec  

Page 2: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Carlos  Sierra  •  Enkitec  Consultant  •  Oracle  Performance  •  SQL  Tuning  •  PL/SQL  

11/12/13   Enkitec  (c)   2  

Page 3: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

SQLT  XPLORE  •  IntroducDon  •  Input  and  Output  •  Screen  Shots  •  Demo  

11/12/13   Enkitec  (c)   3  

Page 4: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

SQLTXPLAIN  (SQLT)  •  Free  SQL  Tuning  Tool  •  Oracle  10g  to  12c  •  Linux/UNIX/Windows  •  Available  @  MOS  215187.1  •  Includes  SQLT  Test  Case  (TC)  and  XPLORE  

11/12/13   Enkitec  (c)   4  

Page 5: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

SQLT  Test  Case  (TC)  •  Metadata  to  create  a  SQL  Tuning  test  case  – SQL  Text  with  bind  variables  and  their  values  – Schema  Objects  creaDon  script  – CBO  StaDsDcs  – Schema  Objects  mapping  

11/12/13   Enkitec  (c)   5  

Page 6: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

What  is  SQLT  XPLORE?  •  Brute  Force  stand-­‐alone  module    •  Under  sqlt/utl/xplore  out  of  sqlt.zip  •  Acts  on  top  of  a  SQLT  TC    – Or  any  SQL  on  a  Test  System  

•  Discovers  several  ExecuDon  Plans  

11/12/13   Enkitec  (c)   6  

Page 7: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

XPLORE  Mechanics  •  Iterates  over    – CBO  Parameters  and  Fix  Control  

•  For  each  iteraDon  – Executes  input  SQL  – Captures  Plan  

•  Reports  Summary  11/12/13   Enkitec  (c)   7  

Page 8: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

XPLORE  Input  and  Output  •  Inputs  one  script  with  one  SQL  •  Outputs  a  zip  with  – HTML  Report  – SQL  Monitor  zip  – Staging  SQL  Script  – ExecuDon  Log  

11/12/13   Enkitec  (c)   8  

Page 9: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

XPLORE  HTML  Report  •  Plans  Summary  •  Discovered  Plans  •  Baseline  •  Completed  Tests  for  each  Plan  •  ExecuDon  Plans  

11/12/13   Enkitec  (c)   9  

Page 10: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

SQL  Monitor  ZIP  •  Only  on  11g  •  Requires  Oracle  Tuning  Pack  – Controlled  by  XPLORE  execuDon  parameter  

•  You  may  need  to  embed  /*+  MONITOR  */  hint  •  One  SQL  Monitor  Report  for  each  iteraDon  

11/12/13   Enkitec  (c)   10  

Page 11: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   11  

Page 12: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

When  to  use  XPLORE?  •  SQL  performance  analysis    – Afer  a  database  sofware  upgrade  

•  Bad  Plan  is  reproducible  on  Test  System  •  Good  Plan  can  be  obtained  using  OpDmizer  Features  Enabled  (OFE)  set  to  prior  release  

•  You  want  to  narrow  reason  of  regression  11/12/13   Enkitec  (c)   12  

Page 13: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

MulDple  Uses  •  SQL  Performance  Regression  afer  Upgrade  •  Long  Parse  Time  Analysis  •  Wrong  Results  Analysis  – DiagnosDc  of  Query  TransformaDons  Errors  

•  Discover  effect  of  “disabled”  fixes  •  Find  a  beler  performing  Plan  

11/12/13   Enkitec  (c)   13  

Page 14: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

When  NOT  to  use  XPLORE?  •  When  your  SQL  to  be  analyzed  may  corrupt  or  update  data  

•  When  using  XPLORE  with  data  and  each  iteraDon  takes  more  than  a  few  seconds  

11/12/13   Enkitec  (c)   14  

Page 15: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

XPLORE  Prerequisites  •  Create  a  SQL  Script  with  one  SQL  – Binds  are  allowed  

•  SQL  on  script  must  include  /*  ^^unique_id  */  •  Script  must  be  capable  to  execute  stand  alone  •  SQL  may  or  may  not  return  rows    – XPLORE  works  with  and  without  data  

11/12/13   Enkitec  (c)   15  

Page 16: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

XPLORE  InstallaDon  •  Place  your  input  SQL  Script  into  sqlt/utl/xplore  •  Execute  sqlt/utl/xplore/install.sql  as  SYS  •  Input  test  case  user  and  its  password  – XPLORE  will  be  executed  as  test  case  user  

11/12/13   Enkitec  (c)   16  

Page 17: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Uninstalling  XPLORE  •  Execute  sqlt/utl/xplore/uninstall.sql  as  SYS  •  Provide  test  case  user  when  asked  

11/12/13   Enkitec  (c)   17  

Page 18: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

XPLORE  use  •  Navigate  to  sqlt/utl/xplore/  •  Connect  as  the  test  case  user  •  Set  the  CBO  environment  (opDonal)  •  Execute  create_xplore_script.sql  •  Execute  dynamically  generated  xplore_script  

11/12/13   Enkitec  (c)   18  

Page 19: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Create  XPLORE  Script  Parameters  •  XPLORE  Method:  [  XECUTE  |  XPLAIN  ]  •  Include  CBO  Parameters:  [  Y  |  N  ]  •  Include  Exadata  Parameters:  [  Y  |  N  ]  •  Include  Fix  Control:  [  Y  |  N  ]  •  Generate  SQL  Monitor  Reports:  [  N  |  Y  ]  

11/12/13   Enkitec  (c)   19  

Page 20: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

XPLORE  Script  Parameters  •  Script  to  be  executed  on  each  iteraDon  – Script  must  reside  on  sqlt/utl/xplore  – Must  contain  /*  ^^unique_id  */  – Must  be  capable  of  stand-­‐alone  error-­‐free  exec  

•  Password  for  test  case  user  – Each  iteraDon  re-­‐connects  and  sets  CBO  env  (opt)  

11/12/13   Enkitec  (c)   20  

Page 21: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Input  tc.sql  Sample  

11/12/13   Enkitec  (c)   21  

Page 22: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   22  

Page 23: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   23  

Page 24: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Input  q1.sql  Sample  

11/12/13   Enkitec  (c)   24  

Page 25: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   25  

Page 26: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   26  

Page 27: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Input  q2.sql  Sample  

11/12/13   Enkitec  (c)   27  

Page 28: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   28  

Page 29: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   29  

Page 30: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   30  

Page 31: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Input  q3.sql  Sample  

11/12/13   Enkitec  (c)   31  

Page 32: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   32  

Page 33: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

11/12/13   Enkitec  (c)   33  

Page 34: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Demo  Time  

11/12/13   Enkitec  (c)   34  

Page 35: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

References  •  SQLTXPLAIN  (SQLT)  – MOS  215187.1  

11/12/13   Enkitec  (c)   35  

Page 36: SQLT XPLORE -  The SQLT XPLAIN Hidden Child

Carlos  Sierra  Contact  Info  •  [email protected]  

•  csierra_usa  

•  carlos-­‐sierra.net  

11/12/13   Enkitec  (c)   36