{"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-pour-se-connecter-a-plusieurs-bases-de-donnees-oracle-executer-une-requete","status":"publish","type":"post","link":"https:\/\/rootfan.com\/fr\/script-to-connect-to-multiple-oracle-databases-run-query\/","title":{"rendered":"Script Bash pour se connecter \u00e0 plusieurs bases de donn\u00e9es Oracle et ex\u00e9cuter une requ\u00eate"},"content":{"rendered":"<p>Si vous devez ex\u00e9cuter la m\u00eame requ\u00eate sur toutes les bases de donn\u00e9es h\u00e9berg\u00e9es sur votre serveur, vous pouvez utiliser ce script bash.<\/p>\n\n\n\n<p>Le script v\u00e9rifie toutes les instances Oracle dans le fichier \/etc\/oratab, mais il ignore toutes les lignes comment\u00e9es.<\/p>\n\n\n\n<p>Il ignore \u00e9galement toutes les instances ASM.<\/p>\n\n\n\n<p>Vous devez cr\u00e9er un script avec la requ\u00eate que vous souhaitez ex\u00e9cuter et le passer en argument au script bash.<\/p>\n\n\n\n<p>Cr\u00e9ez un nouveau fichier nomm\u00e9 run_on_all.sh et mettez-y ce contenu :<\/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>Ensuite, vous lui donnez des droits d'ex\u00e9cution.<\/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>Et vous l'ex\u00e9cutez comme cela, en supposant que vous ayez un script Oracle appel\u00e9 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 vous devez ex\u00e9cuter la m\u00eame requ\u00eate sur toutes les bases de donn\u00e9es h\u00e9berg\u00e9es sur votre serveur, vous pouvez utiliser ce script bash. Le script v\u00e9rifie toutes les instances Oracle dans le fichier \/etc\/oratab, mais il ignore toutes les lignes comment\u00e9es. Il ignore \u00e9galement toutes les instances ASM. Vous devez cr\u00e9er un script avec la requ\u00eate que vous voulez ex\u00e9cuter et ... <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/rootfan.com\/fr\/script-to-connect-to-multiple-oracle-databases-run-query\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de \" Script Bash pour se connecter \u00e0 plusieurs bases de donn\u00e9es Oracle et ex\u00e9cuter des requ\u00eates \"<\/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\/fr\/wp-json\/wp\/v2\/posts\/5640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/comments?post=5640"}],"version-history":[{"count":11,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts\/5640\/revisions"}],"predecessor-version":[{"id":6073,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts\/5640\/revisions\/6073"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/media\/5668"}],"wp:attachment":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/media?parent=5640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/categories?post=5640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/tags?post=5640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}