{"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-configuracion-logica-standby-paso-a-paso","status":"publish","type":"post","link":"https:\/\/rootfan.com\/es\/oracle-19c-logical-standby-configuration-step-by-step\/","title":{"rendered":"Configuraci\u00f3n Paso a Paso de Oracle 19c Logical Standby"},"content":{"rendered":"<p>Para crear un standby l\u00f3gico de Oracle, es necesario disponer primero de un data guard f\u00edsico.<\/p>\n\n\n\n<p>Aseg\u00farese de <a href=\"http:\/\/rootfan.com\/es\/configuracion-de-oracle-19c-data-guard-paso-a-paso\/\" target=\"_blank\" data-type=\"post\" data-id=\"1675\" rel=\"noreferrer noopener\">leer este post<\/a> primero y luego volver.<\/p>\n\n\n\n<p>Un standby l\u00f3gico contiene la misma informaci\u00f3n l\u00f3gica que la base de datos de producci\u00f3n, aunque la organizaci\u00f3n f\u00edsica y la estructura de los datos pueden ser diferentes. <\/p>\n\n\n\n<p>La base de datos l\u00f3gica en espera se mantiene sincronizada con la base de datos primaria a trav\u00e9s de SQL Apply, que transforma los datos del redo recibidos de la base de datos primaria en sentencias SQL y, a continuaci\u00f3n, ejecuta las sentencias SQL en la base de datos en espera.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">1. Compruebe ambas bases de datos<\/h2>\n\n\n\n<p>Primero comprueba que todas las mesas est\u00e1n en orden.<\/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>Aseg\u00farese de que no hay ning\u00fan hueco entre la base de datos primaria y la base de datos en espera.<\/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>Detenga el proceso de aplicaci\u00f3n en la base de datos en espera.<\/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. Preparar la base de datos primaria<\/h2>\n\n\n\n<p>Crea esta carpeta.<\/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>Modifique estos par\u00e1metros en la base de datos primaria<\/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>Ahora ejecute esto en la base de datos primaria para construir un diccionario en los datos rehechos<\/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. Preparar la base de datos l\u00f3gica<\/h2>\n\n\n\n<p>Convertir la base de datos en espera en una base de datos l\u00f3gica<\/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>Cree esta carpeta en el servidor en espera<\/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>Ahora detenga la base de datos en espera e in\u00edciela en modo de montaje<\/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>Modifique estos par\u00e1metros en la base de datos en espera<\/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>Abra la base de datos en espera con 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>Inicie el proceso de aplicaci\u00f3n en la base de datos en espera.<\/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>Ahora tiene una base de datos l\u00f3gica en espera que funciona.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Pruebas<\/h2>\n\n\n\n<p>Si desea probar su nueva base de datos en espera l\u00f3gica, puede crear un nuevo usuario y una nueva tabla en la base de datos primaria y, a continuaci\u00f3n, insertar algunas filas y la tabla y las nuevas filas deber\u00edan replicarse en la base de datos en espera l\u00f3gica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.1 En el primario<\/h3>\n\n\n\n<p>Tengo un PDB llamado pdb1, as\u00ed que trabajar\u00e9 con ese 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 espera<\/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>Para crear un standby l\u00f3gico de Oracle, primero necesita tener un data guard f\u00edsico. Aseg\u00farese de leer este post primero y luego vuelva. Un standby l\u00f3gico contiene la misma informaci\u00f3n l\u00f3gica que la base de datos de producci\u00f3n, aunque la organizaci\u00f3n f\u00edsica y la estructura de los datos pueden ser diferentes. La base de datos en espera l\u00f3gica es ... <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/rootfan.com\/es\/oracle-19c-logical-standby-configuration-step-by-step\/\" class=\"more-link\">Seguir leyendo<span class=\"screen-reader-text\"> \"Configuraci\u00f3n de Oracle 19c Logical Standby Paso a Paso\"<\/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\/es\/wp-json\/wp\/v2\/posts\/2162","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=2162"}],"version-history":[{"count":20,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/2162\/revisions"}],"predecessor-version":[{"id":2241,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/2162\/revisions\/2241"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/media\/2929"}],"wp:attachment":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/media?parent=2162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/categories?post=2162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/tags?post=2162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}