{"id":451,"date":"2021-12-29T14:49:29","date_gmt":"2021-12-29T13:49:29","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/2021\/12\/29\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/"},"modified":"2022-04-06T08:26:15","modified_gmt":"2022-04-06T06:26:15","slug":"parallelize-your-oracle-insert-with-dbms_parallel_execute","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/","title":{"rendered":"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE"},"content":{"rendered":"<p>One of the challenge of all PL\/SQL developers is to simulate the Production activity in a Non Prod. environment like for example different Insert executed by several sessions.<\/p>\n<p>Different tools exist like Oracle RAT (Real Application Testing) but under license or you can create your own PL\/SQL package using DBMS_SCHEDULER or DBMS_PARALLEL_EXECUTE packages.<\/p>\n<p>The aim of this blog is to show you how to use DBMS_PARALLEL_EXECUTE to parallelize several INSERTS commands through different sessions.<\/p>\n<p>My source to write this blog is :\u00a0<a href=\"https:\/\/oracle-base.com\/articles\/11g\/dbms_parallel_execute_11gR2\">oracle-base<\/a> and <a href=\"https:\/\/docs.oracle.com\/database\/121\/ARPLS\/d_parallel_ex.htm#ARPLS233\">oracle documentation.<\/a><\/p>\n<p>My goal is to Insert 3000 rows into the table DBI_FK_NOPART through different sessions in parallel.<\/p>\n<p>First of all, let&#8217;s check the MAX primary key into the table:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">select max(pkey) from XXXX.dbi_fk_nopart;\nMAX(PKEY)\n9900038489\n<\/pre>\n<p>For my test I have created and populated a new table test_tab as specified into <a href=\"https:\/\/oracle-base.com\/articles\/11g\/dbms_parallel_execute_11gR2\">oracle-base<\/a> which will allow to create the chunks used to create the different parallel sessions. In my case, we will create 3 chunks:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT DISTINCT num_col, num_col FROM test_tab;\nnum_col num_col1\n10      10\n30      30\n20      20\n<\/pre>\n<p>The following code below must be written into a PL\/SQL block or a PL\/SQL procedure, I just copy the main command:<\/p>\n<p>The first step is to create a new task:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">DBMS_PARALLEL_EXECUTE.CREATE_TASK(task_name =&gt; 'TASK_NAME');<\/pre>\n\n<p>We split the data into 3 chunks:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">--We create 3 chunks\nDBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_SQL(task_name =&gt; 'TASK_NAME',sql_stmt =&gt;'SELECT DISTINCT num_col, num_col FROM test_tab', by_rowid =&gt; false); \n<\/pre>\n<p>Now I want to Insert 1000 rows for each chunk which will correspond to different session. So at the end I will have 3000 rows inserted through different sessions.<\/p>\n<p>Add a dynamic PL\/SQL block to execute the Insert :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">v_sql_stmt := 'declare\ns varchar2(16000); vstart_id number := :start_id; vend_id number:= :end_id;\ntable_name varchar2(30);\nv_pkey number;\nbegin\nEXECUTE IMMEDIATE ''SELECT max(pkey) FROM xxxx.DBI_FK_NOPART'' INTO v_pkey;\nfor rec in 1..1000 loop\ns:=''INSERT \/*TEST_INSERT_DBI_FK_NOPART*\/ INTO xxxx.DBI_FK_NOPART ( \npkey,\nboid,\nmetabo,\nlastupdate,\nprocessid,\nrowcomment,\ncreated,\ncreateduser,\nreplaced,\nreplaceduser,\narchivetag,\nmdbid,\nitsforecast,\nbetrag,\nitsopdetherkunft,\nitsopdethkerstprm,\nitsfckomppreisseq,\nclsfckomppreisseq,\nissummandendpreis,\npartitiontag,\npartitiondomain,\nfcvprodkomppkey,\nfckvprdankomppkey,\nsession_id\n) VALUES (\n1 +'||v_pkey||' ,\n''''8189b7c7-0c36-485b-8993-054dddd62708'''' ,\n-695,\nsysdate,\n''''B.3142'''' ,\nNULL,\nSYSDATE,\n''''svc_xxxx_Mig_DEV_DBITEST'''' ,\nSYSDATE,\nNULL,\nNULL,\nNULL,\n''''8a9f1321-b3ec-46d5-b6c7-af1c7fb5167G'''' ,\n0,\n''''ae03b3fc-b31c-433b-be0f-c8b0bdaa82fK'''' ,\nNULL,\n''''5849f308-215b-486b-95bd-cbd7afe8440H'''',  \n-251,\n0,\n201905,\n''''E'''',  \n:start_id,\n:end_id,\nSYS_CONTEXT(''''USERENV'''',''''SESSIONID''''))'';\nexecute immediate s using vstart_id, vend_id;\ncommit;\nend loop;\nend;';\n<\/pre>\n<p>The next step is to execute the TASK with <em>parallel_level = 4 <\/em>meaning I want to insert the rows through 4 differents sessions.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">DBMS_PARALLEL_EXECUTE.RUN_TASK (task_name =&gt; 'TASK_NAME',   sql_stmt =&gt;v_sql_stmt,   language_flag =&gt; DBMS_SQL.NATIVE, parallel_level =&gt; 4 );<\/pre>\n<p>Let&#8217;s check the TASK execution status:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT task_name,status FROM user_parallel_execute_tasks;\nTASK_NAME STATUS\nTASK_NAME FINISHED\n<\/pre>\n<p>And let&#8217;s check the chunks created, we should have 3 chunks:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT chunk_id, status, start_id, end_id FROM   user_parallel_execute_chunks WHERE  task_name = 'TASK_NAME' ORDER BY chunk_id;\nCHUNK_ID STATUS     START_ID END_ID\n9926    PROCESSED   10  10\n9927    PROCESSED   30  30\n9928    PROCESSED   20  20\n<\/pre>\n<p>As we have used the parameter <em>parallel_level=4<\/em>, we should have 4 different jobs using 4 differents sessions :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT log_date,job_name, status FROM   user_scheduler_job_run_details WHERE  job_name LIKE 'TASK$%' order by log_date desc;\nLOG_DATE                            JOB_NAME        STATUS      SESSION_ID\n29.12.21 14:38:41.882995000 +01:00  TASK$_22362_3   SUCCEEDED   3152,27076\n29.12.21 14:38:41.766619000 +01:00  TASK$_22362_2   SUCCEEDED   14389,25264\n29.12.21 14:38:41.657571000 +01:00  TASK$_22362_1   SUCCEEDED   3143,9335\n29.12.21 14:38:41.588968000 +01:00  TASK$_22362_4   SUCCEEDED   6903,60912\n<\/pre>\n<p>Now let&#8217;s check the MAX primary key into the table :<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">select max(pkey) from xxxx.dbi_fk_nopart;\nMAX(PKEY)\n9900041489\nselect 9900041489 - 9900038489 from dual;\n3000\n<\/pre>\n<p>3000 rows has been inserted, and the data has been splitted by chunks of 1000 rows per session:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">select count(*),session_id from xxxx.dbi_fk_nopart where pkey &gt;  9900041489 group by session_id;\ncount(*) session_id\n1000    4174522508\n1000    539738149\n1000    4190321565\n<\/pre>\n<p>Conclusion :<\/p>\n<p>DBMS_PARALLEL_EXECUTE is easy to use, performing and has many options :<\/p>\n<ul>\n<li>Data can be splitted by ROWID by using DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_ROWID<\/li>\n<li>Data can be splitted on a number column by using DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_NUMBER_COL<\/li>\n<li>Data can be splitted on a user defined query by using DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_SQL (used in this blog)<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>One of the challenge of all PL\/SQL developers is to simulate the Production activity in a Non Prod. environment like for example different Insert executed by several sessions. Different tools exist like Oracle RAT (Real Application Testing) but under license or you can create your own PL\/SQL package using DBMS_SCHEDULER or DBMS_PARALLEL_EXECUTE packages. The aim [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":452,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[96,24,98],"type_dbi":[],"class_list":["post-451","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-oracle","tag-pl-sql","tag-sql"],"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>Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE - 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\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE\" \/>\n<meta property=\"og:description\" content=\"One of the challenge of all PL\/SQL developers is to simulate the Production activity in a Non Prod. environment like for example different Insert executed by several sessions. Different tools exist like Oracle RAT (Real Application Testing) but under license or you can create your own PL\/SQL package using DBMS_SCHEDULER or DBMS_PARALLEL_EXECUTE packages. The aim [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-29T13:49:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-06T06:26:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"374\" \/>\n\t<meta property=\"og:image:height\" content=\"159\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"4 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\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE\",\"datePublished\":\"2021-12-29T13:49:29+00:00\",\"dateModified\":\"2022-04-06T06:26:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/\"},\"wordCount\":393,\"commentCount\":1,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png\",\"keywords\":[\"Oracle\",\"PL\/SQL\",\"SQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/\",\"name\":\"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png\",\"datePublished\":\"2021-12-29T13:49:29+00:00\",\"dateModified\":\"2022-04-06T06:26:15+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png\",\"width\":374,\"height\":159},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE\"}]},{\"@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":"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE - 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\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/","og_locale":"en_US","og_type":"article","og_title":"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE","og_description":"One of the challenge of all PL\/SQL developers is to simulate the Production activity in a Non Prod. environment like for example different Insert executed by several sessions. Different tools exist like Oracle RAT (Real Application Testing) but under license or you can create your own PL\/SQL package using DBMS_SCHEDULER or DBMS_PARALLEL_EXECUTE packages. The aim [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/","og_site_name":"dbi Blog","article_published_time":"2021-12-29T13:49:29+00:00","article_modified_time":"2022-04-06T06:26:15+00:00","og_image":[{"width":374,"height":159,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png","type":"image\/png"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE","datePublished":"2021-12-29T13:49:29+00:00","dateModified":"2022-04-06T06:26:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/"},"wordCount":393,"commentCount":1,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png","keywords":["Oracle","PL\/SQL","SQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/","url":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/","name":"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png","datePublished":"2021-12-29T13:49:29+00:00","dateModified":"2022-04-06T06:26:15+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/01\/Capture1.png","width":374,"height":159},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/parallelize-your-oracle-insert-with-dbms_parallel_execute\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Parallelize your Oracle INSERT with DBMS_PARALLEL_EXECUTE"}]},{"@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\/451","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=451"}],"version-history":[{"count":2,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/451\/revisions"}],"predecessor-version":[{"id":642,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/451\/revisions\/642"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/452"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=451"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=451"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=451"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}