{"id":2162,"date":"2021-10-11T23:07:34","date_gmt":"2021-10-11T21:07:34","guid":{"rendered":"http:\/\/rootfan.com\/?p=2162"},"modified":"2022-04-09T16:27:06","modified_gmt":"2022-04-09T14:27:06","slug":"oracle-19c-configuration-logique-de-secours-pas-a-pas","status":"publish","type":"post","link":"https:\/\/rootfan.com\/fr\/oracle-19c-logical-standby-configuration-step-by-step\/","title":{"rendered":"Oracle 19c Logical Standby Configuration Step by Step (configuration de l'attente logique)"},"content":{"rendered":"<p>Pour cr\u00e9er un standby logique Oracle, vous devez d'abord disposer d'un data guard physique.<\/p>\n\n\n\n<p>Veillez \u00e0 <a href=\"http:\/\/rootfan.com\/fr\/oracle-19c-data-guard-configuration-pas-a-pas\/\" target=\"_blank\" data-type=\"post\" data-id=\"1675\" rel=\"noreferrer noopener\">lire cet article<\/a> d'abord, puis de revenir.<\/p>\n\n\n\n<p>Une base de donn\u00e9es de secours logique contient les m\u00eames informations logiques que la base de donn\u00e9es de production, bien que l'organisation physique et la structure des donn\u00e9es puissent \u00eatre diff\u00e9rentes. <\/p>\n\n\n\n<p>La base de donn\u00e9es logique de secours est synchronis\u00e9e avec la base de donn\u00e9es primaire par l'interm\u00e9diaire de SQL Apply, qui transforme les donn\u00e9es de la base de donn\u00e9es primaire en instructions SQL, puis ex\u00e9cute les instructions SQL sur la base de donn\u00e9es de secours.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">1. V\u00e9rifier les deux bases de donn\u00e9es<\/h2>\n\n\n\n<p>V\u00e9rifiez d'abord que toutes les tables sont pr\u00eates \u00e0 fonctionner.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_NOT_UNIQUE WHERE (OWNER, TABLE_NAME) \nNOT IN (SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED) AND BAD_COLUMN = &#039;Y&#039;;\n<\/pre><\/div>\n\n\n<p>Assurez-vous qu'il n'y a pas d'\u00e9cart entre la base de donn\u00e9es primaire et la base de donn\u00e9es en attente.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT ARCH.THREAD# &quot;Thread&quot;, ARCH.SEQUENCE# &quot;Last Sequence Received&quot;, APPL.SEQUENCE# &quot;Last Sequence Applied&quot;\nFROM (SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH, \n(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL \nWHERE ARCH.THREAD# = APPL.THREAD# \nORDER BY 1;\n<\/pre><\/div>\n\n\n<p>Arr\u00eatez le processus d'application sur la base de donn\u00e9es en attente.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">2. Pr\u00e9parer la base de donn\u00e9es primaire<\/h2>\n\n\n\n<p>Cr\u00e9ez ce dossier.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nmkdir -p \/u01\/app\/oracle\/arch\/standby\n<\/pre><\/div>\n\n\n<p>Modifier ces param\u00e8tres sur la base de donn\u00e9es primaire<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nshow parameter LOG_ARCHIVE_DEST_1\nALTER SYSTEM SET LOG_ARCHIVE_DEST_1=&#039;LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=BCN&#039; scope=both;\n\nshow parameter LOG_ARCHIVE_DEST_3\nALTER SYSTEM SET LOG_ARCHIVE_DEST_3=&#039;LOCATION=\/u01\/app\/oracle\/arch\/standby VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=BCN&#039; scope=both;\n<\/pre><\/div>\n\n\n<p>Ex\u00e9cutez maintenant cette op\u00e9ration sur la base de donn\u00e9es primaire pour cr\u00e9er un dictionnaire dans les donn\u00e9es de r\u00e9tablissement.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nEXECUTE DBMS_LOGSTDBY.BUILD;\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">3. Pr\u00e9parer la base de donn\u00e9es logique<\/h2>\n\n\n\n<p>Convertir la base de donn\u00e9es de secours en base de donn\u00e9es logique<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nALTER DATABASE RECOVER TO LOGICAL STANDBY PARIS;\n<\/pre><\/div>\n\n\n<p>Cr\u00e9er ce dossier sur le serveur en attente<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nmkdir -p \/u01\/app\/oracle\/arch\/standby\n<\/pre><\/div>\n\n\n<p>Arr\u00eatez maintenant la base de donn\u00e9es en attente et d\u00e9marrez-la en mode montage.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nshutdown immediate\nstartup mount\n<\/pre><\/div>\n\n\n<p>Modifier ces param\u00e8tres sur la base de donn\u00e9es en attente<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nshow parameter LOG_ARCHIVE_DEST_1\nALTER SYSTEM SET LOG_ARCHIVE_DEST_1=&#039;LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PARIS&#039; scope=both;\n\nshow parameter LOG_ARCHIVE_DEST_2\nALTER SYSTEM SET LOG_ARCHIVE_DEST_2=&#039;SERVICE=BCN ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=BCN&#039; SCOPE=BOTH ;\n\nshow parameter LOG_ARCHIVE_DEST_3\nALTER SYSTEM SET LOG_ARCHIVE_DEST_3=&#039;LOCATION=\/u01\/app\/oracle\/arch\/standby VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=PARIS&#039; scope=both;\n<\/pre><\/div>\n\n\n<p>Ouvrez la base de donn\u00e9es en attente avec resetlogs.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nALTER DATABASE OPEN RESETLOGS;\n<\/pre><\/div>\n\n\n<p>Lancez le processus d'application sur la base de donn\u00e9es en attente.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;\n<\/pre><\/div>\n\n\n<p>Vous disposez \u00e0 pr\u00e9sent d'une base de donn\u00e9es de secours logique op\u00e9rationnelle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Essais<\/h2>\n\n\n\n<p>Si vous souhaitez tester votre nouveau standby logique, vous pouvez cr\u00e9er un nouvel utilisateur et une nouvelle table dans la base de donn\u00e9es primaire, puis ins\u00e9rer quelques lignes et la table et les nouvelles lignes devraient \u00eatre r\u00e9pliqu\u00e9es dans le standby logique.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.1 Sur le primaire<\/h3>\n\n\n\n<p>Je dispose d'un PDB appel\u00e9 pdb1, je vais donc travailler avec ce PDB.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; alter session set container=pdb1;\n\nSession altered.\n\nSQL&gt; create user fernando identified by fernando123;\n\nUser created.\n\nSQL&gt; grant dba to fernando;\n\nGrant succeeded.\n\nSQL&gt; create table fernando.table1 (col1 number);\n\nTable created.\n\nSQL&gt; insert into fernando.table1 values (1);\n\n1 row created.\n\nSQL&gt; insert into fernando.table1 values (2);\n\n1 row created.\n\nSQL&gt; commit;\n\nCommit complete.\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">4.2 En veille<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; alter session set container=pdb1;\n\nSession altered.\n\nSQL&gt; select * from fernando.table1;\n\n      COL1\n----------\n         2\n         1\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Pour cr\u00e9er un standby logique Oracle, vous devez d'abord disposer d'un data guard physique. Lisez d'abord cet article, puis revenez-y. Un standby logique contient les m\u00eames informations logiques que la base de donn\u00e9es de production, bien que l'organisation physique et la structure des donn\u00e9es puissent \u00eatre diff\u00e9rentes. La base de donn\u00e9es de secours logique est ... <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/rootfan.com\/fr\/oracle-19c-logical-standby-configuration-step-by-step\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de \" Oracle 19c Logical Standby Configuration Step by Step \"<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":2929,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_focus_keyword":"Oracle 19c Logical Standby Configuration","rank_math_title":"","rank_math_description":"Learn how to configure Oracle 19c logical standby step by step. Master the Oracle 19c logical standby configuration process.","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":[82,83],"class_list":["post-2162","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-logical","tag-standby"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rootfan.com\/wp-content\/uploads\/pexels-photo-1533720.jpeg?fit=1880%2C1253&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts\/2162","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=2162"}],"version-history":[{"count":20,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts\/2162\/revisions"}],"predecessor-version":[{"id":2241,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts\/2162\/revisions\/2241"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/media\/2929"}],"wp:attachment":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/media?parent=2162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/categories?post=2162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/tags?post=2162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}