{"id":39773,"date":"2025-07-31T08:31:15","date_gmt":"2025-07-31T06:31:15","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=39773"},"modified":"2025-07-31T08:31:17","modified_gmt":"2025-07-31T06:31:17","slug":"automatisation-for-oracle-zdm-installation-and-update","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/","title":{"rendered":"Automatisation for Oracle ZDM installation and update"},"content":{"rendered":"\n<p>Let&#8217;s have a look how we can install and update Oracle Zero Downtime Migration tool, and see how we can automatise it with ansible&#8230;<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3>Check ZDM build<\/h3>\n\n\n\n<p>Let&#8217;s first see how we can check ZDM version using zdm cli.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4]\">\n[zdm@zdmhost ~]$ zdmcli -v\nRHP_PT.ZDM21_LINUX.X64_221207.30\n\n[zdm@zdmhost ~]$ zdmcli -build\nversion: 21.0.0.0.0\nfull version: 21.4.0.0.0\npatch version: 21.4.5.0.0\nlabel date: 221207.30\nZDM kit build date: Mar 21 2024 22:07:12 UTC\nCPAT build version: 24.6.0\n[exauser@sva-oelexa501 ~]$\n<\/pre>\n<\/br>\n\n\n\n<p>Version installed is 21.4, and we would see how to update it to last current version, which is 21.5.<\/p>\n\n\n\n<h3>Manuel installation and update<\/h3>\n\n\n\n<p>Manuel installation and update is quite easy as it will be done through the <code>zdminstall.sh<\/code> script. It will be the option that will highlight if it is a first installation or an update. For a first installation, the option will be <code>setup<\/code> and for an update it will be <code>update<\/code>.<\/p>\n\n\n\n<h3>Automatisation of the installation and update of ZDM<\/h3>\n\n\n\n<p>The playbook to automatise the installation and the update, in my case named <code>deploy_zdm.yml<\/code>, is composed of following tasks.<\/p>\n\n\n\n<p>We start by defining the playbook and the variable that will be used in the included tasks to install or update to zdm current last version, which is 21.5. The zip file to unarchive will be stored in the <code>..\/oracle_swfiles<\/code> directory.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: []\">\n---\n# Playbook for deploying ZDM host\n# Marc Wagner - dbi\n# Date : 06.10.2023\n# 11.06.2025 : stop service + new 21.5 version\n- name: Deploy ZDM\n  hosts: \"zdmhost\"\n  vars:\n    sfw_folder: \"..\/oracle_swfiles\"\n\n\n    zdm_base: \"\/u01\/app\/oracle\"\n    zdm_install_dir: \"zdm21.5\"\n    zdm_download_dir: \"\/u01\/app\/zdm_download_dir\"\n    zdm_archive: \"{{ sfw_folder }}\/V1045330-01.zip\"\n\n    # ZDM update is an in-place process\n    zdm_home: \"\/u01\/app\/oracle\/product\/zdm\"\n  environment:\n    HTTP_PROXY: \"\"\n    HTTPS_PROXY: \"\"\n\n  tasks:\n\n<\/pre>\n<\/br>\n\n\n\n<p>Then we will have all the tasks performing the installation.<\/p>\n\n\n\n<p>The first one will be used to define the variable for the option provided as extra argument of the ansible playbook. And we will assert that the variable is provided.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: []\">\n- name: Assert extra-var has been passed as argument to playbook\n  ansible.builtin.assert:\n    that:\n      - deploy_option is defined\n    quiet: false\n    fail_msg: \"Please provide --extra-var deploy_option=\"\n    success_msg: \"deploy_option={{ deploy_option }}\"\n<\/pre>\n<\/br>\n\n\n\n<p>The next task will stop ZDM service and will only run if following file exists : <code>\/u01\/app\/oracle\/product\/zdm\/bin\/zdmservice<\/code>.<\/p>\n\n\n\n<p>This check is done so the task will only run if ZDM tool is already installed.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: []\">\n- name: Stop ZDM service\n  ansible.builtin.shell: |\n    cmd: |\n    {{ zdm_home }}\/bin\/zdmservice stop\n  args:\n    executable: \"\/bin\/bash\"\n    removes: \"\/u01\/app\/oracle\/product\/zdm\/bin\/zdmservice\"\n<\/pre>\n<\/br>\n\n\n\n<p>The next task will install some prerequisite if not already installed.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: []\">\n- name: Install ZDM software prerequisites\n  become: true\n  become_user: root\n  ansible.builtin.dnf:\n    name: \"{{ item }}\"\n  loop:\n    - perl\n    - expect\n    - libaio\n    - glibc-devel\n    - unzip\n    - libnsl\n    - ncurses-compat-libs\n    - oraclelinux-developer-release-el8\n<\/pre>\n<\/br>\n\n\n\n<p>The next task will create all needed directories like zdm base, zdm home and the file used to store the installation archive file.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: []\">\n- name: Create directories for ZDM tool\n  become: true\n  become_user: root\n  ansible.builtin.file:\n    path: \"{{ item }}\"\n    state: directory\n    owner: exauser\n    group: exauser\n    mode: '755'\n  loop:\n    - \"{{ zdm_base }}\"\n    - \"{{ zdm_home }}\"\n    - \"{{ zdm_download_dir }}\"\n<\/pre>\n<\/br>\n\n\n\n<p>The next task will unarchive the installation zip file.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: []\">\n- name: Unarchive ZDM\n  ansible.builtin.unarchive:\n    src: \"{{ zdm_archive }}\"\n    dest: \"{{ zdm_download_dir }}\"\n<\/pre>\n<\/br>\n\n\n\n\n<p>And the next task will finally installed or update zdm tool according to the option given to the playbook.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: []\">\n- name: Install or update ZDM\n  ansible.builtin.shell:\n    cmd: |\n      {{ zdm_download_dir }}\/{{ zdm_install_dir }}\/zdminstall.sh \\\n        {{ deploy_option }} oraclehome={{ zdm_home }} oraclebase={{ zdm_base }} \\\n        ziploc={{ zdm_download_dir }}\/{{ zdm_install_dir }}\/zdm_home.zip -zdm\n  args:\n    executable: \"\/bin\/bash\"\n<\/pre>\n<\/br>\n\n\n\n<p>And we can finally with the last steps start ZDM service.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: []\">\n- name: Start ZDM service\n  ansible.builtin.shell: |\n    cmd: |\n    {{ zdm_home }}\/bin\/zdmservice start\n  args:\n    executable: \"\/bin\/bash\"\n<\/pre>\n<\/br>\n\n\n\n<h3>Run the playbook<\/h3>\n\n\n\n<p>As prerequisite, let&#8217;s first check that the appropriate ZDM installation zip file is in the expected ansible folder.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[myuser@domain.com@admin-host zdm_ansible]$ ls -ltrh .\/oracle_swfiles\/\ntotal 874M\n-rw-r--r--. 1 myuser@domain.com myuser@domain.com 871M Jun 11 10:12 V1045330-01.zip\n[myuser@domain.com@admin-host zdm_ansible]$\n<\/pre>\n<\/br>\n\n\n\n<p>We can check that the assert task to ensure we put the appropriate &#8211;extra-vars works.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[myuser@domain.com@admin-host zdm_ansible]$ ansible-playbook .\/playbooks\/deploy_zdm.yml\n\nPLAY [Deploy ZDM] ***********************************************************************************************************************************************************************************************************************************************************************\n\nTASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************************************************************\n[WARNING]: Platform linux on host zdmhost is using the discovered Python interpreter at \/usr\/bin\/python3, but future installation of another Python interpreter could change the meaning of that path. See https:\/\/docs.ansible.com\/ansible-\ncore\/2.15\/reference_appendices\/interpreter_discovery.html for more information.\nok: [zdmhost]\n\nTASK [Assert extra-var has been passed as argument to playbook] *************************************************************************************************************************************************************************************************************************\nfatal: [zdmhost]: FAILED! =&gt; {\"msg\": \"The task includes an option with an undefined variable. The error was: 'deploy_option' is undefined. 'deploy_option' is undefined\\n\\nThe error appears to be in '\/home\/nfs\/domain.com\/myuser\/ExaCCGit\/zdm_ansible\/playbooks\/deploy_zdm.yml': line 25, column 7, but may\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n\\n    - name: Assert extra-var has been passed as argument to playbook\\n      ^ here\\n\"}\n\nPLAY RECAP ******************************************************************************************************************************************************************************************************************************************************************************\nzdmhost              : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0\n\n[myuser@domain.com@admin-host zdm_ansible]$\n<\/pre>\n<\/br>\n\n\n\n<p>Then we can run the playbook with the update option.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\n[myuser@domain.com@admin-host zdm_ansible]$ ansible-playbook .\/playbooks\/deploy_zdm.yml -e deploy_option=\"update\"\n\nPLAY [Deploy ZDM] ***********************************************************************************************************************************************************************************************************************************************************************\n\nTASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************************************************************\n[WARNING]: Platform linux on host zdmhost is using the discovered Python interpreter at \/usr\/bin\/python3, but future installation of another Python interpreter could change the meaning of that path. See https:\/\/docs.ansible.com\/ansible-\ncore\/2.15\/reference_appendices\/interpreter_discovery.html for more information.\nok: [zdmhost]\n\nTASK [Assert extra-var has been passed as argument to playbook] *************************************************************************************************************************************************************************************************************************\nok: [zdmhost] =&gt; {\n    \"changed\": false,\n    \"msg\": \"deploy_option=update\"\n}\n\nTASK [Stop ZDM service] *****************************************************************************************************************************************************************************************************************************************************************\nchanged: [zdmhost]\n\nTASK [Install ZDM software prerequisites] ***********************************************************************************************************************************************************************************************************************************************\nok: [zdmhost] =&gt; (item=perl)\nok: [zdmhost] =&gt; (item=expect)\nok: [zdmhost] =&gt; (item=libaio)\nok: [zdmhost] =&gt; (item=glibc-devel)\nok: [zdmhost] =&gt; (item=unzip)\nok: [zdmhost] =&gt; (item=libnsl)\nok: [zdmhost] =&gt; (item=ncurses-compat-libs)\nok: [zdmhost] =&gt; (item=oraclelinux-developer-release-el8)\n\nTASK [Create directories for ZDM tool] **************************************************************************************************************************************************************************************************************************************************\nok: [zdmhost] =&gt; (item=\/u01\/app\/oracle)\nok: [zdmhost] =&gt; (item=\/u01\/app\/oracle\/product\/zdm)\nok: [zdmhost] =&gt; (item=\/u01\/app\/zdm_download_dir)\n\nTASK [Unarchive ZDM] ********************************************************************************************************************************************************************************************************************************************************************\nok: [zdmhost]\n\nTASK [Install or update ZDM] ************************************************************************************************************************************************************************************************************************************************************\nchanged: [zdmhost]\n\nTASK [Start ZDM service] ****************************************************************************************************************************************************************************************************************************************************************\nchanged: [zdmhost]\n\nPLAY RECAP ******************************************************************************************************************************************************************************************************************************************************************************\nzdmhost              : ok=8    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\n<\/pre>\n<\/br>\n\n\n\n<h3>Check new ZDM version<\/h3>\n\n\n\n<p>And we can check that the new ZDM tool version is 21.5.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4]\">\n[zdm@zdmhost ~]$ zdmcli -v\nRHP_PT.ZDM21_LINUX.X64_240219.12\n\n[zdm@zdmhost ~]$ zdmcli -build\nversion: 21.0.0.0.0\nfull version: 21.5.0.0.0\npatch version: N\/A\nlabel date: 240219.12\nZDM kit build date: Sep 10 2024 21:59:18 UTC\nCPAT build version: 24.6.0\n[zdm@zdmhost ~]$\n<\/pre>\n<\/br>\n\n\n\n<h3>To wrap up&#8230;<\/h3>\n\n\n\n<p>Installing and updating ZDM cli is quite easy, and writing an ansible playbook will help automatising the installation and further update.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s have a look how we can install and update Oracle Zero Downtime Migration tool, and see how we can automatise it with ansible&#8230;<\/p>\n","protected":false},"author":48,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[101,2576,1574,1575],"type_dbi":[],"class_list":["post-39773","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-installation","tag-patching-2","tag-zdm","tag-zero-downtime-migration"],"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>Automatisation for Oracle ZDM installation and update - 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\/automatisation-for-oracle-zdm-installation-and-update\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatisation for Oracle ZDM installation and update\" \/>\n<meta property=\"og:description\" content=\"Let&#8217;s have a look how we can install and update Oracle Zero Downtime Migration tool, and see how we can automatise it with ansible&#8230;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-31T06:31:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T06:31:17+00:00\" \/>\n<meta name=\"author\" content=\"Marc Wagner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marc Wagner\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 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\/automatisation-for-oracle-zdm-installation-and-update\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/\"},\"author\":{\"name\":\"Marc Wagner\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"headline\":\"Automatisation for Oracle ZDM installation and update\",\"datePublished\":\"2025-07-31T06:31:15+00:00\",\"dateModified\":\"2025-07-31T06:31:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/\"},\"wordCount\":411,\"commentCount\":0,\"keywords\":[\"Installation\",\"patching\",\"zdm\",\"zero downtime migration\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/\",\"name\":\"Automatisation for Oracle ZDM installation and update - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2025-07-31T06:31:15+00:00\",\"dateModified\":\"2025-07-31T06:31:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automatisation for Oracle ZDM installation and update\"}]},{\"@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\/225d9884b8467ead9a872823acb14628\",\"name\":\"Marc Wagner\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"caption\":\"Marc Wagner\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Automatisation for Oracle ZDM installation and update - 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\/automatisation-for-oracle-zdm-installation-and-update\/","og_locale":"en_US","og_type":"article","og_title":"Automatisation for Oracle ZDM installation and update","og_description":"Let&#8217;s have a look how we can install and update Oracle Zero Downtime Migration tool, and see how we can automatise it with ansible&#8230;","og_url":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/","og_site_name":"dbi Blog","article_published_time":"2025-07-31T06:31:15+00:00","article_modified_time":"2025-07-31T06:31:17+00:00","author":"Marc Wagner","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Wagner","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/"},"author":{"name":"Marc Wagner","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"headline":"Automatisation for Oracle ZDM installation and update","datePublished":"2025-07-31T06:31:15+00:00","dateModified":"2025-07-31T06:31:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/"},"wordCount":411,"commentCount":0,"keywords":["Installation","patching","zdm","zero downtime migration"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/","url":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/","name":"Automatisation for Oracle ZDM installation and update - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2025-07-31T06:31:15+00:00","dateModified":"2025-07-31T06:31:17+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/225d9884b8467ead9a872823acb14628"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/automatisation-for-oracle-zdm-installation-and-update\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Automatisation for Oracle ZDM installation and update"}]},{"@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\/225d9884b8467ead9a872823acb14628","name":"Marc Wagner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","caption":"Marc Wagner"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/39773","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\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=39773"}],"version-history":[{"count":16,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/39773\/revisions"}],"predecessor-version":[{"id":39797,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/39773\/revisions\/39797"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=39773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=39773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=39773"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=39773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}