{"id":5640,"date":"2023-07-09T19:44:25","date_gmt":"2023-07-09T17:44:25","guid":{"rendered":"http:\/\/rootfan.com\/?p=5640"},"modified":"2024-03-25T00:48:29","modified_gmt":"2024-03-24T23:48:29","slug":"script-para-conectarse-a-varias-bases-de-datos-oracle-ejecutar-consulta","status":"publish","type":"post","link":"https:\/\/rootfan.com\/es\/script-to-connect-to-multiple-oracle-databases-run-query\/","title":{"rendered":"Script Bash para Conectarse a M\u00faltiples Bases de Datos Oracle y Ejecutar Consultas"},"content":{"rendered":"<p>Si necesita ejecutar la misma consulta en todas las bases de datos alojadas en su servidor, puede utilizar este script bash.<\/p>\n\n\n\n<p>El script comprueba todas las instancias de Oracle en \/etc\/oratab, pero se salta cualquier l\u00ednea comentada.<\/p>\n\n\n\n<p>Tambi\u00e9n omite todas las instancias ASM.<\/p>\n\n\n\n<p>Debe crear un script con la consulta que desea ejecutar y pasarlo como argumento al script bash.<\/p>\n\n\n\n<p>Crea un nuevo archivo llamado run_on_all.sh y pon este contenido dentro:<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n#!\/bin\/bash\n\n# Oratab location\nORATAB=\/etc\/oratab\n\n# SQL script file passed as an argument\nSQL_FILE=$1\n\n# Log file with timestamp in filename\nLOG_FILE=&quot;run_on_all_dbs_$(date +%Y%m%d_%H%M%S).log&quot;\n\n# Check if the oratab file exists\nif &#x5B; ! -f &quot;$ORATAB&quot; ]; then\n    echo &quot;Oratab file not found at $ORATAB&quot; | tee -a $LOG_FILE\n    exit 1\nfi\n\n# Check if the SQL file exists\nif &#x5B; ! -f &quot;$SQL_FILE&quot; ]; then\n    echo &quot;SQL file not found at $SQL_FILE&quot; | tee -a $LOG_FILE\n    exit 1\nfi\n\n# Iterate over databases in oratab\nwhile read -r line\ndo\n    # Check for comment lines, instances starting with &#039;+ASM&#039;, and blank lines\n    if &#x5B;&#x5B; $line = \\#* ]] || &#x5B;&#x5B; $line = +ASM* ]] || &#x5B;&#x5B; -z $line ]]; then\n        continue\n    fi\n\n    # Extract SID and HOME from oratab line\n    DB_SID=$(echo $line | cut -d&#039;:&#039; -f1)\n    DB_HOME=$(echo $line | cut -d&#039;:&#039; -f2)\n\n    echo &quot;Running SQL script on database: $DB_SID&quot; | tee -a $LOG_FILE\n\n    # Export necessary environment variables\n    export ORACLE_SID=$DB_SID\n    export ORACLE_HOME=$DB_HOME\n    export PATH=$ORACLE_HOME\/bin:$PATH\n\n    # Run the SQL script and log the output\n    sqlplus -s \/ as sysdba @$SQL_FILE | tee -a $LOG_FILE\n\ndone &lt; &quot;$ORATAB&quot;\n<\/pre><\/div>\n\n\n<p>Entonces le das derechos de ejecuci\u00f3n.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nchmod +x run_on_all.sh\n<\/pre><\/div>\n\n\n<p>Y lo ejecutas as\u00ed, suponiendo que tienes un script de Oracle llamado script.sql<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n.\/run_on_all.sh script.sql\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Si necesita ejecutar la misma consulta en todas las bases de datos alojadas en su servidor, puede utilizar este script bash. El script comprueba todas las instancias de Oracle en \/etc\/oratab, pero se salta cualquier l\u00ednea comentada. Tambi\u00e9n omite todas las instancias ASM. Deber\u00eda crear un script con la consulta que desea ejecutar y ... <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/rootfan.com\/es\/script-to-connect-to-multiple-oracle-databases-run-query\/\" class=\"more-link\">Seguir leyendo<span class=\"screen-reader-text\"> \"Script Bash para Conectarse a M\u00faltiples Bases de Datos Oracle y Ejecutar Consultas\"<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":5668,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_focus_keyword":"","rank_math_title":"","rank_math_description":"Connect to multiple Oracle databases and run queries with this powerful bash script. Simplify your database management now!","rank_math_robots":"","rank_math_og_title":"","rank_math_og_description":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[31],"tags":[93],"class_list":["post-5640","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-script"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rootfan.com\/wp-content\/uploads\/pexels-photo-2249961.jpeg?fit=1880%2C1166&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/5640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/comments?post=5640"}],"version-history":[{"count":11,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/5640\/revisions"}],"predecessor-version":[{"id":6073,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/5640\/revisions\/6073"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/media\/5668"}],"wp:attachment":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/media?parent=5640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/categories?post=5640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/tags?post=5640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}