{"id":3933,"date":"2014-10-03T15:02:00","date_gmt":"2014-10-03T13:02:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/"},"modified":"2014-10-03T15:02:00","modified_gmt":"2014-10-03T13:02:00","slug":"sql-patch-another-way-to-change-the-plan-without-changing-the-code-1","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/","title":{"rendered":"SQL Patch: Another way to change the plan without changing the code"},"content":{"rendered":"<p>Recently, at a customer site, I faced a performance issue. However, as often the statement is embedded in the application so it&#8217;s not possible to rewrite the query. In this blog post, we&#8217;ll change the execution plan to solve the problem without changing the code &#8211; thanks to SQL Patch.<\/p>\n<p>The faulty statement was part of a daily job that was configured and started from the application during the night. Every night, the statement failed due to a lack of space in the TEMP tablespace.<\/p>\n<h3>Find the statement<\/h3>\n<p>So the first step is to find the statement because the sql_id was not present in the alert in the alert log.<br \/>\nASH is very useful to have a look at what is running on the system at a specific time. And it tracks the amount of TEMP space allocated so a simple query in the interval is helpful:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">SQL&gt; select sample_time, session_id, sql_id, temp_space_allocated\n from v$active_session_history\n where sample_time &gt; to_date('12-09-14 01:16:00','dd-mm-yy hh24:mi:ss')\n and sample_time &lt; to_date('12-09-14 01:19:00','dd-mm-yy hh24:mi:ss')\n and temp_space_allocated &gt; 0;\nSAMPLE_TIME\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SESSION_ID SQL_ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TEMP_SPACE_ALLOCATED\n ------------------------- ---------- ------------- --------------------\n 12-SEP-14 01.17.18.551 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 487587840\n 12-SEP-14 01.17.17.550 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 434634752\n 12-SEP-14 01.17.16.548 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 380633088\n 12-SEP-14 01.17.15.546 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 324534272\n 12-SEP-14 01.17.14.545 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 271581184\n 12-SEP-14 01.17.13.543 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 226492416\n 12-SEP-14 01.17.12.542 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 175112192\n 12-SEP-14 01.17.11.541 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 120061952\n 12-SEP-14 01.17.10.538 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 70254592\n 12-SEP-14 01.17.09.536 AM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1082 bn7zqwkfgtr38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 18874368\n 10 rows selected.<\/pre>\n<p>Good news, only one statement was using TEMP space at the moment of the error and it consumed all the 500 MB allocated to the TEMP tablespace.<\/p>\n<p>The faulty statement has been identified. As 500 MB seems a little bit small, the first obvious try is to increase the TEMP tablespace and restart the statement.<\/p>\n<h3>Analyze the issue<\/h3>\n<p>However when the statement continue to fail with 2 GB of TEMP space, it&#8217;s time to have a deeper look at the execution plan.<br \/>\nThe application uses a view based on user_extents to track object fragmentation. User_extent is itself a view on other dictionary views and in that case we experienced a problem, when using this view the plan needs a lot of TEMP space.<\/p>\n<p>Using dba_extents provided a different execution plan and the same statement completes instantly and without the need of TEMP space. Changing the view user_extent (even if it has been suggested on some thread) is not an option and changing the application view is also not possible.<\/p>\n<p>So how can we influence the Optimizer to change the execution plan?<\/p>\n<p>I&#8217;m not a big fan of using hints but in such cases I&#8217;m glad they exist. We have several options but one of my first try is often using dynamic sampling.<br \/>\nIf the Optimizer has more accurates statistics we obtain better execution plan.<br \/>\nI&#8217;ll skip the details but in that case using dynamic sampling solved my problem, the new execution plan allowed the query to return instantly without any TEMP space.<\/p>\n<p>Second question, how can we provide the new execution plan for an existing query without changing the code?<\/p>\n<p>Oracle provides three mechanism to deal with execution plans: SQL Profiles, SQL Baselines and SQL Patches.<br \/>\nProfiles are proposed by the Tuning Advisor and its mostly based on adapting the cardinalities to match the reality.<br \/>\nBaselines allows us to provide a list of accepted execution plan for a statement.<br \/>\nSQL Patches are part of the SQL Repair Advisor and adds hints to a specific statement. More details in the article <a title=\"SQL Repair Advisor\" href=\"http:\/\/www.oracle-base.com\/articles\/11g\/sql-repair-advisor-11g.php\">SQL Repair Advisor<\/a><\/p>\n<p>I chose to implement a SQL Patch: in that case, a Baseline is not helpful because the hint dynamic_sampling is not saved as part of the execution plan. The additional statistics needed by the Optimizer to allow the good plan are not kept.<\/p>\n<h3>Implement SQL Patch<\/h3>\n<p>Like Profiles, Patches should be proposed by an Oracle advisor, the SQL Repair Advisor and then accepted. In that specific case, we&#8217;ve tried to run the SQL Repair Advisor but there was no proposal. However for SQL Patches there is an article on the Oracle blog that explain <a title=\"Using SQL Patch to add hint to a packaged application\" href=\"https:\/\/blogs.oracle.com\/optimizer\/entry\/how_can_i_hint_a\">how to add a hint to a statement.<\/a><\/p>\n<p>The implementation by itself is pretty easy, the function i_create_patch allows to specify a statement, a text introduced as hint and a name for the SQL Patch:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">declare\n\u00a0\u00a0 v_sql CLOB;\nbegin\n\u00a0\u00a0 select sql_text into v_sql from dba_hist_sqltext where sql_id='bn7zqwkfgtr38';\n\u00a0\u00a0 sys.dbms_sqldiag_internal.i_create_patch(\n\u00a0\u00a0\u00a0\u00a0\u00a0 sql_text\u00a0 =&gt; v_sql,\n\u00a0\u00a0\u00a0\u00a0\u00a0 hint_text =&gt; 'DYNAMIC_SAMPLING(4)',\n\u00a0\u00a0\u00a0\u00a0\u00a0 name\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; 'user_extents_patch');\nend;\n\/<\/pre>\n<p>Then it&#8217;s also very easy to check the status of the Patch in the system using the view DBA_SQL_PATCHES:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select name, status, created, sql_text from dba_sql_patches where name='user_extents_patch';\n\nNAME               STATUS   CREATED                      SQL_TEXT\n------------------ -------- ---------------------------- -------------------------------------------------------------------------------\nuser_extents_patch ENABLED  12-SEP-14 10.25.49.000000 AM select all tablespace_name, segment_name, segment_type, count(*) \"numsegs\" from<\/pre>\n<p>&nbsp;<\/p>\n<p>The SQL Patch feature has an advantage over Baselines and Profiles, it&#8217;s part of SQL Repair Advisor which is free of charge and can be used in both Standard Edition and in Enterprise Edition without Tuning Pack. Now that outlines are deprecated in 12c, it&#8217;s a good tuning option for Standard Edition.<\/p>\n<p>As for Baselines and Profiles, I recommend keeping track of SQL Patches implemented on your systems. It&#8217;s always more a workaround than a solution but can be very useful.<\/p>\n<p>Enjoy!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, at a customer site, I faced a performance issue. However, as often the statement is embedded in the application so it&#8217;s not possible to rewrite the query. In this blog post, we&#8217;ll change the execution plan to solve the problem without changing the code &#8211; thanks to SQL Patch. The faulty statement was part [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[349,96,67,472],"type_dbi":[],"class_list":["post-3933","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","tag-optimizer","tag-oracle","tag-performance","tag-sql-patch"],"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>SQL Patch: Another way to change the plan without changing the code - dbi Blog<\/title>\n<meta name=\"description\" content=\"Recently, at a customer site, I faced a performance issue. However, as often the statement is embedded in the application so it&#039;s not possible to rewrite the query. In this blog post, we&#039;ll change the execution plan to solve the problem without changing the code - thanks to SQL Patch.\" \/>\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\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Patch: Another way to change the plan without changing the code\" \/>\n<meta property=\"og:description\" content=\"Recently, at a customer site, I faced a performance issue. However, as often the statement is embedded in the application so it&#039;s not possible to rewrite the query. In this blog post, we&#039;ll change the execution plan to solve the problem without changing the code - thanks to SQL Patch.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-10-03T13:02:00+00:00\" \/>\n<meta name=\"author\" content=\"Nicolas Jardot\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nicolas Jardot\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 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\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/\"},\"author\":{\"name\":\"Nicolas Jardot\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0aa30f52275a132e9cc2c387708f84ed\"},\"headline\":\"SQL Patch: Another way to change the plan without changing the code\",\"datePublished\":\"2014-10-03T13:02:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/\"},\"wordCount\":752,\"commentCount\":4,\"keywords\":[\"Optimizer\",\"Oracle\",\"Performance\",\"SQL Patch\"],\"articleSection\":[\"Application integration &amp; Middleware\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/\",\"name\":\"SQL Patch: Another way to change the plan without changing the code - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2014-10-03T13:02:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0aa30f52275a132e9cc2c387708f84ed\"},\"description\":\"Recently, at a customer site, I faced a performance issue. However, as often the statement is embedded in the application so it's not possible to rewrite the query. In this blog post, we'll change the execution plan to solve the problem without changing the code - thanks to SQL Patch.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Patch: Another way to change the plan without changing the code\"}]},{\"@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\/0aa30f52275a132e9cc2c387708f84ed\",\"name\":\"Nicolas Jardot\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/112c023c253239221e61a24d59db49d57b354e10da6e7c074cfff50e1b5a6dd8?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/112c023c253239221e61a24d59db49d57b354e10da6e7c074cfff50e1b5a6dd8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/112c023c253239221e61a24d59db49d57b354e10da6e7c074cfff50e1b5a6dd8?s=96&d=mm&r=g\",\"caption\":\"Nicolas Jardot\"},\"description\":\"Nicolas Jardot is a senior consultant with more than nine years of experience in Oracle database infrastructure management and optimization. In addition to standard operations, he is specialized in the performance optimization and tuning of Oracle databases. He also has a strong knowledge of SQL language and has developed several PL\/SQL packages to simplify the administration of database applications. He also maintains the DMK_SQL package of dbi services\u2019 Database Management Kit. Nicolas is Oracle Certified Professional 11g\/12c and Oracle Certified Expert Performance Management and Tuning 12c and holds speeches around Oracle technologies in various conferences including Oracle OpenWorld and UKOUG. Over time, Nicolas has become increasingly interested in Cloud and automation technologies. He has been working for over two years on building and maintaining applications in AWS and operates a CI\/CD pipeline to provision and configure the infrastructure. Nicolas is also certified AWS Solution Architect Professional. Prior to dbi services, Nicolas Jardot was C++ developer on an application virtualization solution, which gave him a solid experience in virtualization and centralization of applications. Nicolas Jardot holds an Engineer\u2019s Degree in Computer Science from the University of Technology of Belfort-Montb\u00e9liard (F). His branch-related experience covers Pharma, Public Sector, Health, Real Estate, Automotive, etc.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/nicolas-jardot-762b9535\/\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/nicolas-jardot\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL Patch: Another way to change the plan without changing the code - dbi Blog","description":"Recently, at a customer site, I faced a performance issue. However, as often the statement is embedded in the application so it's not possible to rewrite the query. In this blog post, we'll change the execution plan to solve the problem without changing the code - thanks to SQL Patch.","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\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/","og_locale":"en_US","og_type":"article","og_title":"SQL Patch: Another way to change the plan without changing the code","og_description":"Recently, at a customer site, I faced a performance issue. However, as often the statement is embedded in the application so it's not possible to rewrite the query. In this blog post, we'll change the execution plan to solve the problem without changing the code - thanks to SQL Patch.","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/","og_site_name":"dbi Blog","article_published_time":"2014-10-03T13:02:00+00:00","author":"Nicolas Jardot","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Nicolas Jardot","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/"},"author":{"name":"Nicolas Jardot","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0aa30f52275a132e9cc2c387708f84ed"},"headline":"SQL Patch: Another way to change the plan without changing the code","datePublished":"2014-10-03T13:02:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/"},"wordCount":752,"commentCount":4,"keywords":["Optimizer","Oracle","Performance","SQL Patch"],"articleSection":["Application integration &amp; Middleware"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/","name":"SQL Patch: Another way to change the plan without changing the code - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2014-10-03T13:02:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0aa30f52275a132e9cc2c387708f84ed"},"description":"Recently, at a customer site, I faced a performance issue. However, as often the statement is embedded in the application so it's not possible to rewrite the query. In this blog post, we'll change the execution plan to solve the problem without changing the code - thanks to SQL Patch.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-patch-another-way-to-change-the-plan-without-changing-the-code-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Patch: Another way to change the plan without changing the code"}]},{"@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\/0aa30f52275a132e9cc2c387708f84ed","name":"Nicolas Jardot","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/112c023c253239221e61a24d59db49d57b354e10da6e7c074cfff50e1b5a6dd8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/112c023c253239221e61a24d59db49d57b354e10da6e7c074cfff50e1b5a6dd8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/112c023c253239221e61a24d59db49d57b354e10da6e7c074cfff50e1b5a6dd8?s=96&d=mm&r=g","caption":"Nicolas Jardot"},"description":"Nicolas Jardot is a senior consultant with more than nine years of experience in Oracle database infrastructure management and optimization. In addition to standard operations, he is specialized in the performance optimization and tuning of Oracle databases. He also has a strong knowledge of SQL language and has developed several PL\/SQL packages to simplify the administration of database applications. He also maintains the DMK_SQL package of dbi services\u2019 Database Management Kit. Nicolas is Oracle Certified Professional 11g\/12c and Oracle Certified Expert Performance Management and Tuning 12c and holds speeches around Oracle technologies in various conferences including Oracle OpenWorld and UKOUG. Over time, Nicolas has become increasingly interested in Cloud and automation technologies. He has been working for over two years on building and maintaining applications in AWS and operates a CI\/CD pipeline to provision and configure the infrastructure. Nicolas is also certified AWS Solution Architect Professional. Prior to dbi services, Nicolas Jardot was C++ developer on an application virtualization solution, which gave him a solid experience in virtualization and centralization of applications. Nicolas Jardot holds an Engineer\u2019s Degree in Computer Science from the University of Technology of Belfort-Montb\u00e9liard (F). His branch-related experience covers Pharma, Public Sector, Health, Real Estate, Automotive, etc.","sameAs":["https:\/\/www.linkedin.com\/in\/nicolas-jardot-762b9535\/"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/nicolas-jardot\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/3933","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\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=3933"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/3933\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=3933"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=3933"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=3933"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=3933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}