{"id":9752,"date":"2017-02-06T21:51:08","date_gmt":"2017-02-06T20:51:08","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/"},"modified":"2017-02-06T21:51:08","modified_gmt":"2017-02-06T20:51:08","slug":"exadata-express-cloud-service-sql-and-optimizer-trace","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/","title":{"rendered":"Exadata Express Cloud Service: SQL and Optimizer trace"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nThe Oracle PDBaaS is for database developers. And database developers may need to trace what happens with their queries: SQL trace and Optimizer trace. Let&#8217;s see what we can do on Exadata Express Cloud Service<br \/>\n<!--more--><\/p>\n<h3>V$DIAG_TRACE_FILE_CONTENTS<\/h3>\n<p>On the managed PDBaaS you don&#8217;t have access to the filesystem. But in 12.2 you have a view that can display the content of the trace files: V$DIAG_TRACE_FILE lists the files you can access (that pertain to your container) and V$DIAG_TRACE_FILE_CONTENTS can display the content.<\/p>\n<p>Here is an example how to read it.<br \/>\nI get my tracefile name from v$process:<\/p>\n<pre><code>\nSQL&gt; column tracefile new_value tracefile\nSQL&gt; select tracefile from v$process where addr=(select paddr from v$session where sid=sys_context('userenv','sid'));\n&nbsp;\nTRACEFILE\n--------------------------------------------------------------------------------\n\/u02\/app\/oracle\/diag\/rdbms\/cfcdba1\/cfcdba1_1\/trace\/cfcdba1_1_ora_24389.trc\n<\/code><\/pre>\n<p>And read the &#8216;payload&#8217; from the view:<\/p>\n<pre><code>\nSQL&gt; set linesize 4000 pagesize 0 trimspool on\nSQL&gt; spool last.trc\nSQL&gt; select payload from V$DIAG_TRACE_FILE_CONTENTS where trace_filename='&amp;tracefile';\nold   1: select payload from V$DIAG_TRACE_FILE_CONTENTS where trace_filename='&amp;tracefile'\nnew   1: select payload from V$DIAG_TRACE_FILE_CONTENTS where trace_filename='\/u02\/app\/oracle\/diag\/rdbms\/cfcdba1\/cfcdba1_1\/trace\/cfcdba1_1_ora_24389.trc'\n&nbsp;\nno rows selected\n<\/code><\/pre>\n<p>Of course, I didn&#8217;t enable any trace, so the file is empty.<\/p>\n<h3>10046<\/h3>\n<p>You can&#8217;t enable SQL Trace in the Exadata Express Cloud Service. This is disabled by lockdown profile and by not granting execute to the packages that can do it.<br \/>\nHere is what I tried. Please tell me if you have other ideas:<\/p>\n<pre><code>SQL&gt; alter session set sql_trace=true;\nERROR:\nORA-01031: insufficient privileges\n&nbsp;\nSQL&gt; exec sys.dbms_support.start_trace;\nBEGIN sys.dbms_support.start_trace; END;\n&nbsp;\n      *\nERROR at line 1:\nORA-06550: line 1, column 7:\nPLS-00201: identifier 'SYS.DBMS_SUPPORT' must be declared\nORA-06550: line 1, column 7:\nPL\/SQL: Statement ignored\n&nbsp;\nSQL&gt; exec dbms_session.set_sql_trace(true);\nBEGIN dbms_session.set_sql_trace(true); END;\n&nbsp;\n*\nERROR at line 1:\nORA-01031: insufficient privileges\nORA-06512: at \"SYS.DBMS_SESSION\", line 178\nORA-06512: at line 1\n&nbsp;\nSQL&gt; exec for i in (select sid,serial# from v$session where sid=sys_context('userenv','sid')) loop sys.dbms_system.set_sql_trace_in_session(i.sid,i.serial#,true); end loop;\nBEGIN for i in (select sid,serial# from v$session where sid=sys_context('userenv','sid')) loop sys.dbms_system.set_sql_trace_in_session(i.sid,i.serial#,true); end loop; END;\n&nbsp;\n                                                                                               *\nERROR at line 1:\nORA-06550: line 1, column 96:\nPLS-00201: identifier 'SYS.DBMS_SYSTEM' must be declared\nORA-06550: line 1, column 96:\nPL\/SQL: Statement ignored\n&nbsp;\nSQL&gt; exec for i in (select sid,serial# from v$session where sid=sys_context('userenv','sid')) loop sys.dbms_support.start_trace_in_session(i.sid,i.serial#,true); end loop;\nBEGIN for i in (select sid,serial# from v$session where sid=sys_context('userenv','sid')) loop sys.dbms_support.start_trace_in_session(i.sid,i.serial#,true); end loop; END;\n&nbsp;\n                                                                                               *\nERROR at line 1:\nORA-06550: line 1, column 96:\nPLS-00201: identifier 'SYS.DBMS_SUPPORT' must be declared\nORA-06550: line 1, column 96:\nPL\/SQL: Statement ignored\n&nbsp;\nSQL&gt; alter session set events 'sql_trace';\nERROR:\nORA-01031: insufficient privileges\n&nbsp;\nSQL&gt; exec execute immediate q'{alter session set events 'sql_trace'}';\nBEGIN execute immediate q'{alter session set events 'sql_trace'}'; END;\n&nbsp;\n*\nERROR at line 1:\nORA-01031: insufficient privileges\nORA-06512: at line 1\n&nbsp;\nSQL&gt; create or replace procedure sys.my_sql_trace as begin execute immediate q'{alter session set events 'sql_trace'}'; end;\n  2  \/\ncreate or replace procedure sys.my_sql_trace as begin execute immediate q'{alter session set events 'sql_trace'}'; end;\n*\nERROR at line 1:\nORA-01031: insufficient privileges\n<\/code><\/pre>\n<p>No doubt, we can&#8217;t sql_trace. I&#8217;m not sure it is a big problem because we have all options in the Exadata Express Cloud Service so we have ASH, SQL monitor, etc. I&#8217;m not saying that sql_trace is not useful anymore &#8211; there are cases where you need to see the wait events one by one &#8211; but from development point of view an plan with execution statistics should be sufficient.<\/p>\n<h3>10053<\/h3>\n<p>Tracing the CBO is a different thing. There is no alternative when you want to understand the choices of the optimizer. It is not something I use every day, but there are some cases where it is the only tool to troubleshoot.<\/p>\n<pre><code>SQL&gt; alter session set events 'trace [SQL_Optimizer.*]';\nERROR:\nORA-01031: insufficient privileges\n<\/code><\/pre>\n<p>The ALTER SESSION SET EVENT is blocked by the S20 lockdown profile. But there is another way.<\/p>\n<p>I&#8217;ve run the following query:<\/p>\n<pre><code>\nSQL&gt; select * from dual;\nX\n&nbsp;\nSQL&gt; select * from table(dbms_xplan.display_cursor);\nSQL_ID  a5ks9fhw2v9s1, child number 0\n-------------------------------------\nselect * from dual\n&nbsp;\nPlan hash value: 272002086\n&nbsp;\n----------------------------------------------------------------------------------\n| Id  | Operation                 | Name | Rows  | Bytes | Cost (%CPU)| Time     |\n----------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT          |      |       |       |     2 (100)|          |\n|   1 |  TABLE ACCESS STORAGE FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |\n----------------------------------------------------------------------------------\n&nbsp;\n13 rows selected.\n<\/code><\/pre>\n<p>Now I want more information about the execution plan.<\/p>\n<pre><code>\nSQL&gt; exec dbms_sqldiag.dump_trace('a5ks9fhw2v9s1', 0, 'Compiler','Compiler');\nPL\/SQL procedure successfully completed.\n<\/code><\/pre>\n<p>Cool. It seems I&#8217;m allowed to do that. This procedures sets the SQL Compiler event, but it seems that it is allowed from the procedure.<\/p>\n<p>I can now get the trace:<\/p>\n<pre><code>\nSQL&gt; select tracefile from v$process where addr=(select paddr from v$session where sid=sys_context('userenv','sid'));\n\/u02\/app\/oracle\/diag\/rdbms\/cfcdba1\/cfcdba1_1\/trace\/cfcdba1_1_ora_24389_Compiler.trc\n&nbsp;\nSQL&gt; spool last.trc\nSQL&gt; select payload from V$DIAG_TRACE_FILE_CONTENTS\n  2  where        adr_home=regexp_replace('&amp;tracefile','^(.*)\/trace\/([^\/]*)','1')\n  3  and trace_filename=regexp_replace('&amp;tracefile','^(.*)\/trace\/([^\/]*)','2')\n  4  ;\nold   2: where     adr_home=regexp_replace('&amp;tracefile','^(.*)\/trace\/([^\/]*)','1')\nnew   2: where     adr_home=regexp_replace('\/u02\/app\/oracle\/diag\/rdbms\/cfcdba1\/cfcdba1_1\/trace\/cfcdba1_1_ora_24389_Compiler.trc','^(.*)\/trace\/([^\/]*)','1')\nold   3: and trace_filename=regexp_replace('&amp;tracefile','^(.*)\/trace\/([^\/]*)','2')\nnew   3: and trace_filename=regexp_replace('\/u02\/app\/oracle\/diag\/rdbms\/cfcdba1\/cfcdba1_1\/trace\/cfcdba1_1_ora_24389_Compiler.trc','^(.*)\/trace\/([^\/]*)','2')\nTrace file \/u02\/app\/oracle\/diag\/rdbms\/cfcdba1\/cfcdba1_1\/trace\/cfcdba1_1_ora_24389_Compiler.trc\n<\/code><\/pre>\n<p>This outputs the full 10053 trace:<\/p>\n<pre><code>\nOracle Database 12c Enterprise Edition Release 12.2.0.0.3 - 64bit Production\nBuild label:    RDBMS_12.2.0.0.3_LINUX.X64_160720\nORACLE_HOME:    \/u01\/app\/oracle\/product\/12.2.0.0.3\/dbhome_1\nSystem name:    Linux\nNode name:      cfcldx0171.usdc2.oraclecloud.com\nRelease:        2.6.39-400.264.1.el6uek.x86_64\nVersion:        #1 SMP Wed Aug 26 16:42:25 PDT 2015\nMachine:        x86_64\nStorage:        Exadata\nInstance name: cfcdba1_1\nRedo thread mounted by this instance: 1\nOracle process number: 109\nUnix process pid: 24389, image: oracle@cfcldx0171.usdc2.oraclecloud.com\n&nbsp;\n*** 2017-02-05T20:42:38.580323+00:00 (EPTDOJVM1KG(47))\n&nbsp;\n*** SESSION ID:(2343.25237) 2017-02-05T20:42:38.580349+00:00\n*** CLIENT ID:() 2017-02-05T20:42:38.580354+00:00\n*** SERVICE NAME:(eptdojvm1kg.usdc2.oraclecloud.com) 2017-02-05T20:42:38.580358+00:00\n*** MODULE NAME:(SQL*Plus) 2017-02-05T20:42:38.580363+00:00\n*** ACTION NAME:() 2017-02-05T20:42:38.580368+00:00\n*** CLIENT DRIVER:(SQL*PLUS) 2017-02-05T20:42:38.580372+00:00\n*** CONTAINER ID:(47) 2017-02-05T20:42:38.580377+00:00\n&nbsp;\nEnabling tracing for cur#=6 sqlid=bqf9h9bhb6c88 recursive\nParsing cur#=6 sqlid=bqf9h9bhb6c88 len=45\nsql=\/* SQL Analyze(2343,0) *\/ select * from dual\n&nbsp;\nEnd parsing of cur#=6 sqlid=bqf9h9bhb6c88\nSemantic Analysis cur#=6 sqlid=bqf9h9bhb6c88\nOPTIMIZER INFORMATION\n&nbsp;\n******************************************\n&nbsp;\n----- Current SQL Statement for this session (sql_id=3u37gu3fhx3q1) -----\n\/* SQL Analyze(2343,0) *\/ select * from dual\n----- PL\/SQL Stack -----\n----- PL\/SQL Call Stack -----\n  object      line  object\n  handle    number  name\n0x3c5cdebc38       161  package body SYS.DBMS_SQLTUNE_INTERNAL.I_PROCESS_SQL_CALLOUT\n0x3c5cdebc38     14080  package body SYS.DBMS_SQLTUNE_INTERNAL.I_PROCESS_SQL\n0x3e17d89590      1599  package body SYS.DBMS_SQLDIAG.DUMP_TRACE\n0x25dda27db0         1  anonymous block\n...\n<\/code><\/pre>\n<h3>Unified Trace Service views<\/h3>\n<p>Those views are new in 12.2 and are declined to show only part of files so that you can grant access to read those files only for 10046 (SQL Trace) or for 10053 (Optimizer Trace), for all sessions or only the user&#8217;s one.<\/p>\n<p>GV$DIAG_TRACE_FILE (from x$dbgtflist) and GV$DIAG_TRACE_FILE_CONTENTS (from x$dbgtfview) show all files from the ADR traces<br \/>\nGV$DIAG_APP_TRACE_FILE (from x$dbgatflist) is a subset showing all files containing SQL Trace or Optimizer Trace<br \/>\nGV$DIAG_SQL_TRACE_RECORDS (from x$dbgtfsqlt) is a subset showing all files containing SQL Trace<br \/>\nGV$DIAG_OPT_TRACE_RECORDS (from x$dbgtfoptt) is a subset showing all files containing Optimizer Trace<br \/>\nV$DIAG_SESS_SQL_TRACE_RECORDS (from x$dbgtfssqlt) and V$DIAG_SESS_OPT_TRACE_RECORDS (from x$dbgtfsoptt) are similar, but for your session (and then no GV$ as your session is on one instance only).<\/p>\n<p>A new role APPLICATION_TRACE_VIEWER grants to select on views that show only SQL and Optimizer traces.<\/p>\n<h3>Alert.log<\/h3>\n<p>This is not new in 12.2, you can query V$DIAG_ALERT_EXT to see the alert.log content. Of course, from the PDB you will see only PDB related content:<\/p>\n<pre><code>\nEndian type of dictionary set to little\nAutotune of undo retention is turned on.\nThis instance was first to open pluggable database EPTDOJVM1KG (container=47)\nattach called for domid 47 (domuid: 0x7fa9e59a, options: 0x0, pid: 111297)\nqueued attach broadcast request 0x3e26185d68\n[111297] Successfully onlined Undo Tablespace 2.\nUndo initialization finished serial:0 start:2570370849 end:2570371107 diff:258 ms (0.3 seconds)\nDatabase Characterset for EPTDOJVM1KG is AL32UTF8\nJIT: pid 111297 requesting full stop\ndetach called for domid 47 (domuid: 0x7fa9e59a, options: 0x0, pid: 111297)\nqueued detach broadcast request 0x3e26185d18\nAutotune of undo retention is turned on.\nThis instance was first to open pluggable database EPTDOJVM1KG (container=47)\nattach called for domid 47 (domuid: 0x7fa9e59a, options: 0x0, pid: 111297)\nqueued attach broadcast request 0x3e26185cc8\nEndian type of dictionary set to little\n[111297] Successfully onlined Undo Tablespace 2.\nUndo initialization finished serial:0 start:2570382111 end:2570382464 diff:353 ms (0.4 seconds)\nDeleting old file#8 from file$\nDeleting old file#9 from file$\nDeleting old file#10 from file$\nDeleting old file#11 from file$\nDeleting old file#12 from file$\nDeleting old file#14 from file$\nDeleting old file#17 from file$\nAdding new file#486 to file$(old file#8)\nAdding new file#487 to file$(old file#9)\nAdding new file#488 to file$(old file#10)\nAdding new file#489 to file$(old file#11)\nAdding new file#490 to file$(old file#12)\nAdding new file#491 to file$(old file#14)\nAdding new file#492 to file$(old file#17)\nSuccessfully created internal service eptdojvm1kg.usdc2.oraclecloud.com at open\nDatabase Characterset for EPTDOJVM1KG is AL32UTF8\nOpatch validation is skipped for PDB EPTDOJVM1KG (con_id=0)\nOpening pdb with no Resource Manager plan active\nCreating new database key for new master key and wallet\nCreating new database key with the new master key\nRetiring: ena 2 flag 6 mkloc 0\n   encrypted key 32ce589b50b3105f9419d0a86ce8e7f400000000000000000000000000000000\n   mkid cbcd33d929f64fd0bf1367f6e69f2dd5\nCreating: ena 2 flag e mkloc 1\n   encrypted key baf27c1e11623fe9837f678df2e48f8a00000000000000000000000000000000\n   mkid 2d99ba8694054fd5bf41f998513e1d4c\nNew database key and new master key created successfully\ncreate temporary tablespace \"EPTDOJVM1KG_TEMP\" tempfile size 20M extent management local uniform size 16M\nForce tablespace EPTDOJVM1KG_TEMP to be encrypted with AES128\nCompleted: create temporary tablespace \"EPTDOJVM1KG_TEMP\" tempfile size 20M extent management local uniform size 16M\ncreate BIGFILE tablespace \"EPTDOJVM1KG_DATA\" datafile size 10485760 autoextend on next 1M maxsize UNLIMITED extent management local autoallocate segment space management auto\nForce tablespace EPTDOJVM1KG_DATA to be encrypted with AES128\nCompleted: create BIGFILE tablespace \"EPTDOJVM1KG_DATA\" datafile size 10485760 autoextend on next 1M maxsize UNLIMITED extent management local autoallocate segment space management auto\nResize operation completed for file# 486, old size 307200K, new size 317440K\nALTER SYSTEM SET pdb_lockdown='S20' SCOPE=BOTH PDB='EPTDOJVM1KG';\n...\n<\/code><\/pre>\n<h3>So what?<\/h3>\n<p>We can access SQL Trace and Optimizer trace and this is very nice. Access to trace has always been a problem because they are on the server, may contain sensitive data, etc. Having views to give access easily and in a controlled way is a very nice 12.2 feature.<br \/>\nI don&#8217;t know if enabling Optimizer trace on Exadata Express Cloud Service is expected, or just something that was forgotten by the lockdown profile. I hope the first hypothesis is the right one and I hope that we will be allowed to enable SQL Trace as well. This service is for developers, and I&#8217;m a big advocate of giving all tools to developers so that performance is addressed before production.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . The Oracle PDBaaS is for database developers. And database developers may need to trace what happens with their queries: SQL trace and Optimizer trace. Let&#8217;s see what we can do on Exadata Express Cloud Service<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[955,229],"tags":[135,96,339],"type_dbi":[],"class_list":["post-9752","post","type-post","status-publish","format-standard","hentry","category-cloud","category-database-administration-monitoring","tag-cloud","tag-oracle","tag-trace"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Exadata Express Cloud Service: SQL and Optimizer trace - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Exadata Express Cloud Service: SQL and Optimizer trace\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . The Oracle PDBaaS is for database developers. And database developers may need to trace what happens with their queries: SQL trace and Optimizer trace. Let&#8217;s see what we can do on Exadata Express Cloud Service\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-06T20:51:08+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Exadata Express Cloud Service: SQL and Optimizer trace\",\"datePublished\":\"2017-02-06T20:51:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/\"},\"wordCount\":700,\"commentCount\":0,\"keywords\":[\"Cloud\",\"Oracle\",\"Trace\"],\"articleSection\":[\"Cloud\",\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/\",\"name\":\"Exadata Express Cloud Service: SQL and Optimizer trace - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2017-02-06T20:51:08+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Exadata Express Cloud Service: SQL and Optimizer trace\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Exadata Express Cloud Service: SQL and Optimizer trace - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/","og_locale":"en_US","og_type":"article","og_title":"Exadata Express Cloud Service: SQL and Optimizer trace","og_description":"By Franck Pachot . The Oracle PDBaaS is for database developers. And database developers may need to trace what happens with their queries: SQL trace and Optimizer trace. Let&#8217;s see what we can do on Exadata Express Cloud Service","og_url":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/","og_site_name":"dbi Blog","article_published_time":"2017-02-06T20:51:08+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Exadata Express Cloud Service: SQL and Optimizer trace","datePublished":"2017-02-06T20:51:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/"},"wordCount":700,"commentCount":0,"keywords":["Cloud","Oracle","Trace"],"articleSection":["Cloud","Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/","url":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/","name":"Exadata Express Cloud Service: SQL and Optimizer trace - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-02-06T20:51:08+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/exadata-express-cloud-service-sql-and-optimizer-trace\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Exadata Express Cloud Service: SQL and Optimizer trace"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=9752"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9752\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=9752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=9752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=9752"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=9752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}