{"id":14118,"date":"2020-05-09T23:45:39","date_gmt":"2020-05-09T21:45:39","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/"},"modified":"2020-05-09T23:45:39","modified_gmt":"2020-05-09T21:45:39","slug":"handle-db-links-after-cloning-an-oracle-database","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/","title":{"rendered":"Handle DB-Links after Cloning an Oracle Database"},"content":{"rendered":"<h2>By Clemens Bleile<\/h2>\n<p>After cloning e.g. a production database into a database for development or testing purposes, the DBA has to make sure that no activities in the cloned database have an impact on data in other production databases. Because after cloning production data jobs may still try to modify data through e.g. db-links. I.e. scheduled database jobs must not start in the cloned DB and applications connecting to the cloned database must not modify remote production data. Most people are aware of this issue and a first measure is to start the cloned database with the DB-parameter<\/p>\n<pre><code>job_queue_processes=0\n<\/code><\/pre>\n<p>That ensures that no database job will start in the cloned database. However, before enabling scheduler jobs again, you have to make sure that no remote production data is modified. Remote data is usually accessed through db-links. So the second step is to handle the db-links in the cloned DB.<\/p>\n<p>In a recent project we decided to be strict and drop all database links in the cloned database.<br \/>\nREMARK: Testers and\/or developers should create the needed db-links later again pointing to non-production data.<br \/>\nBut how to do that, because private DB-Links can only be dropped by the owner of the db-link? I.e. even a connection with SYSDBA-rights cannot drop private database links:<\/p>\n<pre><code>sys@orcl@orcl&gt; connect \/ as sysdba\nConnected.\nsys@orcl@orcl&gt; select db_link from dba_db_links where owner='CBLEILE';\n\u00a0\nDB_LINK\n--------------------------------\nCBLEILE_DB1\nPDB1\n\u00a0\nsys@orcl@orcl&gt; drop database link cbleile.cbleile_db1;\ndrop database link cbleile.cbleile_db1\n                   *\nERROR at line 1:\nORA-02024: database link not found\n\u00a0\nsys@orcl@orcl&gt; alter session set current_schema=cbleile;\n\u00a0\nSession altered.\n\u00a0\nsys@orcl@orcl&gt; drop database link cbleile_db1;\ndrop database link cbleile_db1\n*\nERROR at line 1:\nORA-01031: insufficient privileges\n<\/code><\/pre>\n<p>We&#8217;ll see later on how to drop the db-links. Before doing that we make a backup of the db-links. That can be achieved with expdp:<\/p>\n<p>Backup of db-links with expdp:<\/p>\n<p>1.) create a directory to store the dump-file:<\/p>\n<pre><code>create directory prod_db_links as '&#060;directory-path&#062;';\n<\/code><\/pre>\n<p>2.) create the param-file expdp_db_links.param with the following content:<\/p>\n<pre><code>full=y\nINCLUDE=DB_LINK:\"IN(SELECT db_link FROM dba_db_links)\"\n<\/code><\/pre>\n<p>3.) expdp all DB-Links<\/p>\n<pre><code>expdp dumpfile=prod_db_links.dmp logfile=prod_db_links.log directory=prod_db_links parfile=expdp_db_links.param\nUsername: &lt;user with DATAPUMP_EXP_FULL_DATABASE right&gt;\n<\/code><\/pre>\n<p>REMARK: Private db-links owned by SYS are not exported by the command above. But SYS must not own user-objects anyway.<\/p>\n<p>In case the DB-Links have to be restored you can do the following:<\/p>\n<pre><code>impdp dumpfile=prod_db_links.dmp logfile=prod_db_links_imp.log directory=prod_db_links\nUsername: &lt;user with DATAPUMP_IMP_FULL_DATABASE right&gt;\n<\/code><\/pre>\n<p>You may also create a script prod_db_links.sql with all ddl (passwords are not visible in the created script):<\/p>\n<pre><code>impdp dumpfile=prod_db_links.dmp directory=prod_db_links sqlfile=prod_db_links.sql\nUsername: &lt;user with DATAPUMP_IMP_FULL_DATABASE right&gt;\n<\/code><\/pre>\n<p>Finally drop the directory again:<\/p>\n<pre><code>drop directory prod_db_links;\n<\/code><\/pre>\n<p>Now, that we have a backup we can drop all db-links. As mentioned earlier, private db-links cannot be dropped, but you can use the following method to drop them:<\/p>\n<p>As procedures are running with definer rights by default, we can create a procedure under the owner of the db-link and in the procedure drop the dblink. SYS has the privileges to execute the procedure. The following example will drop the db-link cbleile.cbleile_db1:<\/p>\n<pre><code>select db_link from dba_db_links where owner='CBLEILE';\n \nDB_LINK\n--------------------------------\nCBLEILE_DB1\nPDB1\n\ncreate or replace procedure CBLEILE.drop_DB_LINK as begin\nexecute immediate 'drop database link CBLEILE_DB1';\nend;\n\/\n\u00a0\nexec CBLEILE.drop_DB_LINK;\n\u00a0\nselect db_link from dba_db_links where owner='CBLEILE';\n\u00a0\nDB_LINK\n--------------------------------\nPDB1\n<\/code><\/pre>\n<p>I.e. the db-link CBLEILE_DB1 has been dropped.<br \/>\nREMARK: Using a proxy-user would also be a possibility to connect as the owner of the db-link, but that cannot be automated in a script that easily.<\/p>\n<p>As we have a method to drop private db-links we can go ahead and automate creating the drop db-link commands with the following sql-script drop_all_db_links.sql:<\/p>\n<pre><code>set lines 200 pages 999 trimspool on heading off feed off verify off\nset serveroutput on size unlimited\ncolumn dt new_val X\nselect to_char(sysdate,'yyyymmdd_hh24miss') dt from dual;\nspool drop_db_links_&amp;&amp;X..sql\nselect 'set echo on feed on verify on heading on' from dual;\nselect 'spool drop_db_links_&amp;&amp;X..log' from dual;\nselect 'select count(*) from dba_objects where status='''||'INVALID'||''''||';' from dual;\nREM Generate all commands to drop public db-links\nselect 'drop public database link '||db_link||';' from dba_db_links where owner='PUBLIC';\nREM Generate all commands to drop db-links owned by SYS (except SYS_HUB, which is oracle maintained)\nselect 'drop database link '||db_link||';' from dba_db_links where owner='SYS' and db_link not like 'SYS_HUB%';\nPROMPT\nREM Generate create procedure commands to drop private db-link, generate the execute and the drop of it.\ndeclare\n   current_owner varchar2(32);\nbegin\n   for o in (select distinct owner from dba_db_links where owner not in ('PUBLIC','SYS')) loop\n      dbms_output.put_line('create or replace procedure '||o.owner||'.drop_DB_LINK as begin');\n      for i in (select db_link from dba_db_links where owner=o.owner) loop\n         dbms_output.put_line('execute immediate '''||'drop database link '||i.db_link||''''||';');\n      end loop;\n      dbms_output.put_line('end;');\n      dbms_output.put_line('\/');\n      dbms_output.put_line('exec '||o.owner||'.drop_DB_LINK;');\n      dbms_output.put_line('drop procedure '||o.owner||'.drop_DB_LINK;');\n      dbms_output.put_line('-- Seperator -- ');\n   end loop;\nend;\n\/\nselect 'select count(*) from dba_objects where status='''||'INVALID'||''''||';' from dual;\nselect 'set echo off' from dual;\nselect 'spool off' from dual;\nspool off\n\u00a0\nPROMPT\nPROMPT A script drop_db_links_&amp;&amp;X..sql has been created. Check it and then run it to drop all DB-Links.\nPROMPT\n<\/code><\/pre>\n<p>Running above script generates a sql-script drop_db_links_&lt;yyyymmdd_hh24miss&gt;.sql, which contains all drop db-link commands.<\/p>\n<pre><code>sys@orcl@orcl&gt; @drop_all_db_links\n...\nA script drop_db_links_20200509_234906.sql has been created. Check it and then run it to drop all DB-Links.\n\u00a0\nsys@orcl@orcl&gt; !cat drop_db_links_20200509_234906.sql\n\u00a0\nset echo on feed on verify on heading on\n\u00a0\nspool drop_db_links_20200509_234906.log\n\u00a0\nselect count(*) from dba_objects where status='INVALID';\n\u00a0\ndrop public database link DB1;\ndrop public database link PDB2;\n\u00a0\ncreate or replace procedure CBLEILE.drop_DB_LINK as begin\nexecute immediate 'drop database link CBLEILE_DB1';\nexecute immediate 'drop database link PDB1';\nend;\n\/\nexec CBLEILE.drop_DB_LINK;\ndrop procedure CBLEILE.drop_DB_LINK;\n-- Seperator --\ncreate or replace procedure CBLEILE1.drop_DB_LINK as begin\nexecute immediate 'drop database link PDB3';\nend;\n\/\nexec CBLEILE1.drop_DB_LINK;\ndrop procedure CBLEILE1.drop_DB_LINK;\n-- Seperator --\n\u00a0\nselect count(*) from dba_objects where status='INVALID';\n\u00a0\nset echo off\n\u00a0\nspool off\n\u00a0\nsys@orcl@orcl&gt;\n<\/code><\/pre>\n<p>After checking the file drop_db_links_20200509_234906.sql I can run it:<\/p>\n<pre><code>sys@orcl@orcl&gt; @drop_db_links_20200509_234906.sql\nsys@orcl@orcl&gt; \nsys@orcl@orcl&gt; spool drop_db_links_20200509_234906.log\nsys@orcl@orcl&gt; \nsys@orcl@orcl&gt; select count(*) from dba_objects where status='INVALID';\n\u00a0\n  COUNT(*)\n----------\n   1\n\u00a0\n1 row selected.\n\u00a0\nsys@orcl@orcl&gt; \nsys@orcl@orcl&gt; drop public database link DB1;\n\u00a0\nDatabase link dropped.\n\u00a0\nsys@orcl@orcl&gt; drop public database link PDB2;\n\u00a0\nDatabase link dropped.\n\u00a0\nsys@orcl@orcl&gt; \nsys@orcl@orcl&gt; create or replace procedure CBLEILE.drop_DB_LINK as begin\n  2  execute immediate 'drop database link CBLEILE_DB1';\n  3  execute immediate 'drop database link PDB1';\n  4  end;\n  5  \/\n\u00a0\nProcedure created.\n\u00a0\nsys@orcl@orcl&gt; exec CBLEILE.drop_DB_LINK;\n\u00a0\nPL\/SQL procedure successfully completed.\n\u00a0\nsys@orcl@orcl&gt; drop procedure CBLEILE.drop_DB_LINK;\n\u00a0\nProcedure dropped.\n\u00a0\nsys@orcl@orcl&gt; -- Seperator --\nsys@orcl@orcl&gt; create or replace procedure CBLEILE1.drop_DB_LINK as begin\n  2  execute immediate 'drop database link PDB3';\n  3  end;\n  4  \/\n\u00a0\nProcedure created.\n\u00a0\nsys@orcl@orcl&gt; exec CBLEILE1.drop_DB_LINK;\n\u00a0\nPL\/SQL procedure successfully completed.\n\u00a0\nsys@orcl@orcl&gt; drop procedure CBLEILE1.drop_DB_LINK;\n\u00a0\nProcedure dropped.\n\u00a0\nsys@orcl@orcl&gt; -- Seperator --\nsys@orcl@orcl&gt; \nsys@orcl@orcl&gt; select count(*) from dba_objects where status='INVALID';\n\u00a0\n  COUNT(*)\n----------\n   1\n\u00a0\n1 row selected.\n\u00a0\nsys@orcl@orcl&gt; \nsys@orcl@orcl&gt; set echo off\nsys@orcl@orcl&gt; \nsys@orcl@orcl&gt; select owner, db_link from dba_db_links;\n\nOWNER\t\t\t\t DB_LINK\n-------------------------------- --------------------------------\nSYS\t\t\t\t SYS_HUB\n\n1 row selected.\n<\/code><\/pre>\n<p>A log-file drop_db_links_20200509_234906.log has been produced as well.<\/p>\n<p>After dropping all db-links you may do the following checks as well before releasing the cloned database for the testers or the developers:<\/p>\n<ul>\n<li>disable all jobs owned by not Oracle maintained users. You may use the following SQL to generate the commands in sqlplus:<\/li>\n<\/ul>\n<pre><code>\nselect 'exec dbms_scheduler.disable('||''''||owner||'.'||job_name||''''||');' from dba_scheduler_jobs where enabled='TRUE' and owner not in (select username from dba_users where oracle_maintained='Y');\n<\/code><\/pre>\n<ul>\n<li>check all directories in the DB and make sure the directory-paths do not point to shared production folders<\/li>\n<\/ul>\n<pre><code>\ncolumn owner format a32\ncolumn directory_name format a32\ncolumn directory_path format a64\nselect owner, directory_name, directory_path from dba_directories order by 1;\n<\/code><\/pre>\n<ul>\n<li>mask sensitive data, which should not be visible to testers and\/or developers.<\/li>\n<\/ul>\n<p>At that point you are quite sure to not affect production data with your cloned database and you can set<br \/>\njob_queue_processes&gt;0<br \/>\nagain and provide access to the cloned database to the testers and\/or developers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Clemens Bleile After cloning e.g. a production database into a database for development or testing purposes, the DBA has to make sure that no activities in the cloned database have an impact on data in other production databases. Because after cloning production data jobs may still try to modify data through e.g. db-links. I.e. [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[1937,1938,280,619,96],"type_dbi":[],"class_list":["post-14118","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-clone","tag-cloning","tag-database","tag-db-link","tag-oracle"],"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>Handle DB-Links after Cloning an Oracle Database - 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\/handle-db-links-after-cloning-an-oracle-database\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Handle DB-Links after Cloning an Oracle Database\" \/>\n<meta property=\"og:description\" content=\"By Clemens Bleile After cloning e.g. a production database into a database for development or testing purposes, the DBA has to make sure that no activities in the cloned database have an impact on data in other production databases. Because after cloning production data jobs may still try to modify data through e.g. db-links. I.e. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-09T21:45:39+00:00\" \/>\n<meta name=\"author\" content=\"Clemens Bleile\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ifgtxD2SrQ8r!YuXj\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Clemens Bleile\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 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\/handle-db-links-after-cloning-an-oracle-database\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/\"},\"author\":{\"name\":\"Clemens Bleile\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da\"},\"headline\":\"Handle DB-Links after Cloning an Oracle Database\",\"datePublished\":\"2020-05-09T21:45:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/\"},\"wordCount\":629,\"commentCount\":0,\"keywords\":[\"clone\",\"cloning\",\"database\",\"db link\",\"Oracle\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/\",\"name\":\"Handle DB-Links after Cloning an Oracle Database - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-05-09T21:45:39+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Handle DB-Links after Cloning an Oracle Database\"}]},{\"@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\/0ac04011f60f2e93c115358d0789c2da\",\"name\":\"Clemens Bleile\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"caption\":\"Clemens Bleile\"},\"description\":\"Clemens Bleile has more than 30 years of IT experience, thirteen in Oracle Support and fifteen in Oracle Consulting. He is specialized in Oracle Database Performance Tuning (SQL Tuning, DB Tuning) and developing an Oracle DB IT architecture (highly available, low-maintenance, cost efficient storage of data). He is an expert in problem analysis and resolution. Prior to joining dbi services, Clemens Bleile was Manager of the EMEA Database Performance team at the Oracle Global Customer Support Services. Clemens Bleile is Oracle Certified Professional 11g, 12c and Oracle Certified Expert for Performance Management and Tuning and holds a Master Degree, Business Information Systems from the Fachhochschule Furtwangen, Germany.\",\"sameAs\":[\"https:\/\/www.dbi-services.com\",\"https:\/\/x.com\/ifgtxD2SrQ8r!YuXj\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/clemens-bleile\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Handle DB-Links after Cloning an Oracle Database - 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\/handle-db-links-after-cloning-an-oracle-database\/","og_locale":"en_US","og_type":"article","og_title":"Handle DB-Links after Cloning an Oracle Database","og_description":"By Clemens Bleile After cloning e.g. a production database into a database for development or testing purposes, the DBA has to make sure that no activities in the cloned database have an impact on data in other production databases. Because after cloning production data jobs may still try to modify data through e.g. db-links. I.e. [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/","og_site_name":"dbi Blog","article_published_time":"2020-05-09T21:45:39+00:00","author":"Clemens Bleile","twitter_card":"summary_large_image","twitter_creator":"@ifgtxD2SrQ8r!YuXj","twitter_misc":{"Written by":"Clemens Bleile","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/"},"author":{"name":"Clemens Bleile","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da"},"headline":"Handle DB-Links after Cloning an Oracle Database","datePublished":"2020-05-09T21:45:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/"},"wordCount":629,"commentCount":0,"keywords":["clone","cloning","database","db link","Oracle"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/","url":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/","name":"Handle DB-Links after Cloning an Oracle Database - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-05-09T21:45:39+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/handle-db-links-after-cloning-an-oracle-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Handle DB-Links after Cloning an Oracle Database"}]},{"@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\/0ac04011f60f2e93c115358d0789c2da","name":"Clemens Bleile","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","caption":"Clemens Bleile"},"description":"Clemens Bleile has more than 30 years of IT experience, thirteen in Oracle Support and fifteen in Oracle Consulting. He is specialized in Oracle Database Performance Tuning (SQL Tuning, DB Tuning) and developing an Oracle DB IT architecture (highly available, low-maintenance, cost efficient storage of data). He is an expert in problem analysis and resolution. Prior to joining dbi services, Clemens Bleile was Manager of the EMEA Database Performance team at the Oracle Global Customer Support Services. Clemens Bleile is Oracle Certified Professional 11g, 12c and Oracle Certified Expert for Performance Management and Tuning and holds a Master Degree, Business Information Systems from the Fachhochschule Furtwangen, Germany.","sameAs":["https:\/\/www.dbi-services.com","https:\/\/x.com\/ifgtxD2SrQ8r!YuXj"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/clemens-bleile\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14118","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\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=14118"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14118\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=14118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=14118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=14118"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=14118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}