<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Dataguard &#8211; Blog DBA Dutra</title>
	<atom:link href="https://www.dbadutra.com/tag/dataguard/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbadutra.com</link>
	<description></description>
	<lastBuildDate>Wed, 13 Dec 2023 20:22:12 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
<site xmlns="com-wordpress:feed-additions:1">170494511</site>	<item>
		<title>Refresh database from Data Guard</title>
		<link>https://www.dbadutra.com/2023/12/refresh-database-from-data-guard/</link>
					<comments>https://www.dbadutra.com/2023/12/refresh-database-from-data-guard/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Wed, 13 Dec 2023 20:17:28 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Dataguard]]></category>
		<category><![CDATA[Refresh]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=6150</guid>

					<description><![CDATA[My client asked me for help. He needs to update the DEV environment every month The current process (using export-import) takes a few days. To reduce the time, an alternative approach was implemented The new procedure should considerably reduce the refresh time considerably to a few hours. 1         Pre-Requirements 2         Preparation Standby preparation Check if [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>My client asked me for help. He needs to update the DEV environment every month</p>



<p>The current process (using export-import) takes a few days.</p>



<p>To reduce the time, an alternative approach was implemented</p>



<ul class="wp-block-list">
<li>Replicate constantly all production changes to a standby database.&nbsp;&nbsp; This is achieved using Data Guard</li>



<li>For the refresh<ul><li>Stop synchronization</li></ul><ul><li>Drop old DEV databases</li></ul><ul><li>Create new DEV databases by cloning from the standby database</li></ul>
<ul class="wp-block-list">
<li>Restart synchronization</li>
</ul>
</li>
</ul>



<p>The new procedure should considerably reduce the refresh time considerably to a few hours.</p>



<h4 class="wp-block-heading"><a>1         Pre-Requirements</a></h4>



<ul class="wp-block-list">
<li>Oracle version and Patch Level on Primary and Secondary should be same.</li>



<li>Db_unique_name on standby and primary database should be different in order to used in DG_CONFIG setting of the LOG_ARCHIVE_CONFIG parameter.</li>
</ul>



<h4 class="wp-block-heading"><a>2         Preparation</a></h4>



<p></p>



<h4 class="wp-block-heading"><a><strong>Standby preparation</strong></a></h4>



<p>Check if standby is in sync with primary</p>



<pre class="wp-block-preformatted">****** To check archivelog apply lag

SELECT al.thrd "Thread", almax "Last Seq Received", lhmax "Last Seq Applied" FROM
(select thread# thrd, MAX(sequence#) almax FROM v$archived_log WHERE resetlogs_change#=(SELECT resetlogs_change#
FROM v$database) GROUP BY thread#) al, (SELECT thread# thrd, MAX(sequence#) lhmax FROM v$log_history
WHERE resetlogs_change#=(SELECT resetlogs_change# FROM v$database) GROUP BY thread#) lh WHERE al.thrd = lh.thrd;

</pre>



<p>Convert standby in snapshot standby</p>



<pre class="wp-block-preformatted">

shutdown immediate
startup mount
alter database convert to snapshot standby;
alter database open;

<a><strong> </strong></a></pre>



<p><a><strong>Create DB links between Standby and DEV</strong></a></p>



<pre class="wp-block-preformatted">---- Standby

alter pluggable database ALL open read only;
CREATE USER c##r_clone identified by Oracle23 CONTAINER=ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE, SYSOPER, RESOURCE, CREATE ANY TABLE, UNLIMITED TABLESPACE TO  c##r_clone CONTAINER=ALL;
GRANT DBA to c##r_clone;

CREATE DATABASE LINK refresh_link CONNECT TO c##r_clone identified by Oracle23 using 'DUTSD'; 

----- Dev Database

CREATE DATABASE LINK refresh_link CONNECT TO c##r_clone identified by Oracle23 using 'DUTSST';

alter pluggable database ALL open read only;
CREATE USER c##r_clone identified by Oracle23 CONTAINER=ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE, SYSOPER, RESOURCE, CREATE ANY TABLE, UNLIMITED TABLESPACE TO  c##r_clone CONTAINER=ALL;
GRANT DBA to c##r_clone;

</pre>



<p><a><strong>Cleanup old PDB&#8217;s in DUTSD</strong></a></p>



<pre class="wp-block-preformatted">####### DROP OLD PDB - DUTSD
Show pdbs; 

ALTER PLUGGABLE DATABASE &lt;PDBNAME> CLOSE;
DROP PLUGGABLE DATABASE &lt;PDBNAME> INCLUDING DATAFILES;
</pre>



<h4 class="wp-block-heading"><a>3   Clone PDBs</a></h4>



<p>The files of standby were created using OMF convention.&nbsp;&nbsp; For this reason the database files need to be converted from</p>



<p>+DATA01/DUTSD/&lt;GUID&gt;/DATAFILE/&lt;file&gt;.&lt;id&gt;&nbsp; to</p>



<p>+DATA01/DUTSST/DATAFILE/&lt;file&gt;.dbf&#8217;</p>



<p><a><strong>Clone DUTSD</strong></a></p>



<pre class="wp-block-preformatted">CREATE PLUGGABLE DATABASE DUTSD FROM DUTSD@refresh_link storage unlimited tempfile reuse 
file_name_convert=('+DATA01/DUTSD/CCA899613E3D0713E0531114C30A2022/DATAFILE/duts01.474.1147957609','+DATA01/DUTSST/DATAFILE/duts01.dbf',
'+DATA01/DUTSD/CCA899613E3D0713E0531114C30A2022/DATAFILE/duts02.269.1147957617','+DATA01/DUTSST/ /DATAFILE/duts02.dbf') 
keystore identified by "Duts23" parallel 6;
</pre>



<h4 class="wp-block-heading"><a>4   Finalize the refresh</a></h4>



<pre class="wp-block-preformatted">. oraenv
sqlplus / as sysdba
shutdown immediate

startup mount


</pre>



<p><a><strong>Restore datafiles permissions</strong></a></p>



<pre class="wp-block-preformatted">
exec dbms_dnfs.restore_datafile_permissions('&lt;CDBNAME>');

</pre>



<p><a><strong>Convert the snapshot back to physical standby</strong></a></p>



<pre class="wp-block-preformatted">show pdbs
alter database convert to physical standby;
shutdown immediate
startup
</pre>



<p>See you soon in other articles.</p>



<p>Stay tuned by following us on Twitter @aontalba and Linkedin.</p>



<p><strong>Disclaimer: “The postings on this site are my own and do not necessarily represent my current employer positions, strategies, or opinions. The information here was edited to be useful for general purpose, specific data, and identifications was removed to allow reaching a generic audience and to be useful.”</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2023/12/refresh-database-from-data-guard/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6150</post-id>	</item>
		<item>
		<title>Usando a feature recover standby database from service Dataguard no 19c</title>
		<link>https://www.dbadutra.com/2020/01/usando-a-feature-recover-standby-database-from-service-dataguard-no-19c/</link>
					<comments>https://www.dbadutra.com/2020/01/usando-a-feature-recover-standby-database-from-service-dataguard-no-19c/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Tue, 21 Jan 2020 07:13:53 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Dataguard]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=5752</guid>

					<description><![CDATA[Introdução O Oracle Dataguard, que faz parte do MAA (Max Availability Architecture) é um produto utilizado em larga escala, por diversas empresas, ao redor do mundo. Sua principal funcionalidade é manter uma cópia atualizada do banco de dados primário em um site secundário, na maioria dos casos. Com a introdução do Active Dataguard no Oracle [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>Introdução</strong></p>



<p>O Oracle Dataguard,
que faz parte do MAA (Max Availability Architecture) é um produto utilizado em
larga escala, por diversas empresas, ao redor do mundo. Sua principal
funcionalidade é manter uma cópia atualizada do banco de dados primário em um
site secundário, na maioria dos casos. </p>



<p>Com a introdução do
Active Dataguard no Oracle 11g o produto ganhou novas funcionalidades,
permitindo que os usuários utilizem o banco de dados de standby para geração de
reports, levou o produto que já era bom a um nível ainda melhor. Ao poder gerar
reports com o&nbsp; banco de dados aberto em
modo read only with apply, é retirado muita carga do banco de dados de primário.
</p>



<p>Com o Oracle 19c,
foi introduzido um recurso que permite que DML feito no standby seja
redirecionado para o banco de dados primário e depois seja enviado via
archivelog para o standby, note que não é recomendado direcionar cargas
intensas de modificações no standby database para redirecionar ao banco
primário.&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</p>



<p>As vezes, por
algumas falhas como GAP de archivelogs ou alguma reconfiguração, se faz
necessário recriar o standby database, e no Oracle 18c é possível, de maneira
bem simples, recriar o standby database com um único comando via RMAN.</p>



<p><strong>Benefícios de usar a nova
funcionalidade</strong></p>



<ul class="wp-block-list"><li>Simplicidade para criação ou recriação </li><li>Melhor controle do processo </li></ul>



<p><strong>Cenário</strong></p>



<ul class="wp-block-list"><li>Primary database:<strong> orclcdb</strong></li><li>Standby database:<strong> orclstb</strong></li></ul>



<p>O banco de dados de
standby e primário estão sendo gerenciados pelo Dataguard broker (DGMGRL), que
nos auxilia na administração de um ambiente Dataguard, simplificando operações
como switchover e diversos outras operações. Para maiores informações, consulte
o manual <a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/dgbkr/index.html">https://docs.oracle.com/en/database/oracle/oracle-database/19/dgbkr/index.html</a></p>



<p><strong>Verificação do Dataguard </strong></p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Usando a interface de linha de comando do Oracle Dataguard
Broker, emitimos o comando <strong><em>show configuration</em></strong> para mostrar as
configurações dos bancos de dados protegidos, no nosso caso, os bancos são
orclcdb, o primário e o orclstb que é o nosso standby que irei recriar em
seguida após ocasionar uma falha, removendo alguns datafiles do mesmo. </p>



<p>Note, que pela imagem abaixo, não temos problemas e no caso de uma falha do banco primário, o banco de dados de standby poderia ser utilizado como banco primário fazendo um switchover manual, sem maiores problemas. Note que é possível automatizar essa operação, configurando Fast-Start Failover  </p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="624" height="443" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image.png" alt="" class="wp-image-5753" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-300x213.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p><strong>Gerando problemas no standby</strong></p>



<p><strong>              </strong>Na imagem abaixo, podemos verificar os datafiles do meu banco de dados de standby, onde iremos causar danos e reconstruir o mesmo a partir do comando recover standby database from service. A listagem abaixo, mostra todos os datafiles do banco de dados em questão (orclstb)</p>



<figure class="wp-block-image size-large"><img decoding="async" width="624" height="445" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-3.png" alt="" class="wp-image-5756" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-3.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-3-300x214.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p>              Agora, iremos remover o datafile principal do banco de dados de standby, /u01/app/oracle/oradata/ORCLSTB/system01.dbf </p>



<figure class="wp-block-image size-large"><img decoding="async" width="624" height="445" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-4.png" alt="" class="wp-image-5757" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-4.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-4-300x214.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p>              Como esperado, após removermos um datafile, propositalmente o nosso ambiente apresenta problemas, vejam:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="598" height="429" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-5.png" alt="" class="wp-image-5758" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-5.png 598w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-5-300x215.png 300w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-5-475x342.png 475w" sizes="(max-width: 598px) 100vw, 598px" /></figure>



<p><strong>Desabilitando o apply no banco de
dados de standby</strong></p>



<p><strong>            </strong>Antes de iniciar o recover do standby database, precisamos parar o sincronismo de archivelogs que estão sendo enviados do banco primário, para isso, usamos o comando abaixo para editar o state do database, ou então, vai se deparar com o erro:</p>



<pre class="wp-block-preformatted"> starting media recovery
 media recovery failed
 RMAN-00571: ===========================================================
 RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
 RMAN-00571: ===========================================================
 RMAN-03002: failure of recover command at 01/19/2020 11:16:26
 RMAN-03015: error occurred in stored script Memory Script
 RMAN-11003: failure during parse/execution of SQL statement: alter database recover
  if needed standby start
 ORA-01153: an incompatible media recovery is active
 <strong> </strong> </pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="624" height="445" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-6.png" alt="" class="wp-image-5759" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-6.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-6-300x214.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p>Após pararmos o recover, basta se logar no RMAN e emitir o comando <strong><em>recover standby database from service</em></strong>, como veremos a seguir:</p>



<pre class="wp-block-preformatted">
 [oracle@ora19c ~]$ rman target=sys/oracle@orclstb
  
 Recovery Manager: Release 19.0.0.0.0 - Production on Sun Jan 19 11:27:59 2020
 Version 19.3.0.0.0
  
 Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
  
 connected to target database: ORCLCDB (DBID=2780785463, not open)
  
 RMAN> recover standby database from service orclcdb;
  
 Starting recover at 19-JAN-20
 using target database control file instead of recovery catalog
 Oracle instance started
  
 Total System Global Area    1895823376 bytes
  
 Fixed Size                     9136144 bytes
 Variable Size                436207616 bytes
 Database Buffers            1442840576 bytes
 Redo Buffers                   7639040 bytes
  
 contents of Memory Script:
 {
    restore standby controlfile from service  'orclcdb';
    alter database mount standby database;
 }
 executing Memory Script
  
 Starting restore at 19-JAN-20
 allocated channel: ORA_DISK_1
 channel ORA_DISK_1: SID=39 device type=DISK
  
 channel ORA_DISK_1: starting datafile backup set restore
 channel ORA_DISK_1: using network backup set from service orclcdb
 channel ORA_DISK_1: restoring control file
 channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
 output file name=/u01/app/oracle/oradata/ORCLSTB/control01.ctl
 output file name=/u01/app/oracle/fast_recovery_area/ORCLSTB/control02.ctl
 Finished restore at 19-JAN-20
  
 released channel: ORA_DISK_1
 Statement processed
  
 contents of Memory Script:
 {
 set newname for datafile  1 to 
  "/u01/app/oracle/oradata/ORCLSTB/system01.dbf";
    restore from service  'orclcdb' datafile
     1;
    catalog datafilecopy  "/u01/app/oracle/oradata/ORCLSTB/system01.dbf";
    switch datafile all;
 }
 executing Memory Script
  
 executing command: SET NEWNAME
  
 Starting restore at 19-JAN-20
 Starting implicit crosscheck backup at 19-JAN-20
 allocated channel: ORA_DISK_1
 channel ORA_DISK_1: SID=49 device type=DISK
 Crosschecked 3 objects
 Finished implicit crosscheck backup at 19-JAN-20
  
 Starting implicit crosscheck copy at 19-JAN-20
 using channel ORA_DISK_1
 Crosschecked 2 objects
 Finished implicit crosscheck copy at 19-JAN-20
  
 searching for all files in the recovery area
 cataloging files...
 cataloging done
  
 List of Cataloged Files
 =======================
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_25_gyq4g4hz_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_26_gyq5km3v_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_27_gyq64bom_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_28_gyq64n7f_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_29_gyq64zy8_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_30_gyq6vxg5_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_32_gyq6vzrv_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_31_gyq6vzs6_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_33_gyq84b59_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_34_gyq88dll_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_35_gyq9rvx9_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_36_gyqcf807_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_37_gyqcfsk1_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_38_gyqcg4l3_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_39_gyqckh4o_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_41_gyqckkfk_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_40_gyqckkg6_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_42_gyqcpsko_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_07/o1_mf_1_43_gyqdchj7_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_08/o1_mf_1_44_gyso1jwz_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_08/o1_mf_1_45_gytopnjo_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2019_12_08/o1_mf_1_46_gytowb7h_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2020_01_09/o1_mf_1_47_h1gstntb_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2020_01_09/o1_mf_1_48_h1gtcgd0_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2020_01_09/o1_mf_1_49_h1gv3wqn_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2020_01_09/o1_mf_1_50_h1gv8rbs_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2020_01_09/o1_mf_1_51_h1gvo2x8_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2020_01_16/o1_mf_1_52_h21lqfd2_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2020_01_16/o1_mf_1_53_h21m7fwt_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/archivelog/2020_01_19/o1_mf_1_54_h28w8y78_.arc
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/autobackup/2019_12_07/o1_mf_s_1026372241_gyq6h263_.bkp
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/autobackup/2019_12_07/o1_mf_s_1026373077_gyq7r09k_.bkp
 File Name: /u01/app/oracle/fast_recovery_area/ORCLSTB/autobackup/2019_12_07/o1_mf_s_1026378166_gyqd9fxy_.bkp
  
 using channel ORA_DISK_1
  
 channel ORA_DISK_1: starting datafile backup set restore
 channel ORA_DISK_1: using network backup set from service orclcdb
 channel ORA_DISK_1: specifying datafile(s) to restore from backup set
 channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/ORCLSTB/system01.dbf
 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
 Finished restore at 19-JAN-20
  
 cataloged datafile copy
 datafile copy file name=/u01/app/oracle/oradata/ORCLSTB/system01.dbf RECID=5 STAMP=1030102136
  
 datafile 1 switched to datafile copy
 input datafile copy RECID=5 STAMP=1030102136 file name=/u01/app/oracle/oradata/ORCLSTB/system01.dbf
  
 contents of Memory Script:
 {
   recover database from service  'orclcdb';
 }
 executing Memory Script
  
 Starting recover at 19-JAN-20
 using channel ORA_DISK_1
 skipping datafile 1; already restored to SCN 4595092
 skipping datafile 3; already restored to SCN 4594570
 skipping datafile 5; already restored to SCN 2163739
 skipping datafile 6; already restored to SCN 2163739
 skipping datafile 7; already restored to SCN 4594577
 skipping datafile 8; already restored to SCN 2163739
 skipping datafile 9; already restored to SCN 4594580
 skipping datafile 10; already restored to SCN 4594582
 skipping datafile 12; already restored to SCN 4594588
 skipping datafile 13; already restored to SCN 4594593
 skipping datafile 14; already restored to SCN 4594596
 skipping datafile 15; already restored to SCN 4594598
 skipping datafile 19; already restored to SCN 4594600
 skipping datafile 20; already restored to SCN 4594604
 skipping datafile 21; already restored to SCN 4594611
  
 starting media recovery
  
 media recovery complete, elapsed time: 00:00:00
 Finished recover at 19-JAN-20
 Finished recover at 19-JAN-20
  
 RMAN> </pre>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Como podemos ver, como uma única linha do RMAN, foi possível recuperar o
meu banco de dados de standby, se os danos fossem outros, o resultado final
seria o mesmo que obtivemos nesse exemplo, banco de dados restaurado e pronto
para ser sincronizado novamente. </p>



<p>Então, pela interface do DGMGRL, ativamos o sincronismo novamente conforme vemos abaixo:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="624" height="439" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-7.png" alt="" class="wp-image-5760" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-7.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-7-300x211.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p>Para validar, se tudo ocorreu bem, vamos realizer um switchover para trocar os papéis dos bancos de dados fazendo com que o banco primário vire standby e vice versa. Como podemos ver na imagem abaixo, sem problemas para realizar o switchover:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="624" height="446" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-9.png" alt="" class="wp-image-5762" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-9.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-9-300x214.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p>Agora o meu banco de dados orclstb, originalmente standby database, agora passou a ser meu banco de dados primário, com todos os pdbs abertos para uso.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="624" height="444" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-10.png" alt="" class="wp-image-5763" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-10.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-10-300x213.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="624" height="449" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-11.png" alt="" class="wp-image-5764" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-11.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-11-300x216.png 300w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-11-475x342.png 475w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p>Todos os nossos PDBs estão abertos e como podemos ver, a instance com db_unique_name = orclstb agora está com a ROLE (papel) PRIMARY.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="624" height="443" src="https://www.dbadutra.com/wp-content/uploads/2020/01/image-12.png" alt="" class="wp-image-5765" srcset="https://www.dbadutra.com/wp-content/uploads/2020/01/image-12.png 624w, https://www.dbadutra.com/wp-content/uploads/2020/01/image-12-300x213.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p><strong>Conclusão:</strong>A Oracle sempre está evoluindo e o produto sempre agregando novas funcionalidades, temos que concordar que essa funcionalidade salva um bom tempo de trabalho para os DBAs e ainda simplifica demais a criação de um standby database.</p>



<p></p>



<p>Esperamos ter ajudado !!</p>



<p>Até a próxima !!</p>



<p><strong>André Luiz Dutra Ontalba / Rodrigo Mufalani / Y V RaviKumar </strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2020/01/usando-a-feature-recover-standby-database-from-service-dataguard-no-19c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5752</post-id>	</item>
		<item>
		<title>Configure Data Guard Physical Setup usando Data Broker no Oracle Database 19c / Data Guard Physical Setup using Data Broker in Oracle Database 19c</title>
		<link>https://www.dbadutra.com/2019/05/data-guard-physical-setup-using-data-broker-in-oracle-database-19c/</link>
					<comments>https://www.dbadutra.com/2019/05/data-guard-physical-setup-using-data-broker-in-oracle-database-19c/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Sat, 11 May 2019 21:48:56 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[19c]]></category>
		<category><![CDATA[Dataguard]]></category>
		<category><![CDATA[Oracle]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=5489</guid>

					<description><![CDATA[Configure o Data Guard Physical com Data Broker no Oracle Database 19c Ambiente Necessário ter dois servidores (VMs ou físicos) com um sistema operacional e Oracle instalado. Meu ambiente eu usei Oracle Linux 7.6 e Oracle Database 19c. O servidor primário (duts-dg1) tem uma instância em execução. O servidor em standby (duts-dg2) somente a instalação [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="https://www.dbadutra.com/wp-content/uploads/2018/01/brazil_pt-150x150.jpg" alt="" class="wp-image-5129" width="48" height="48"/></figure>



<p>Configure o Data Guard Physical com Data Broker no Oracle Database 19c</p>



<p>Ambiente</p>



<ul class="wp-block-list"><li>Necessário ter dois servidores (VMs ou físicos) com
     um sistema operacional e Oracle instalado. Meu ambiente eu usei Oracle
     Linux 7.6 e Oracle Database 19c.</li><li>O servidor primário (duts-dg1) tem uma instância
     em execução.</li><li>O servidor em standby (duts-dg2) somente a
     instalação dos binários.</li><li>Sem nenhum bloqueio a comunicação entre as
     máquinas sobre o listener. </li></ul>



<p>Primary
Server Setup</p>



<p>Logging</p>



<p>Verifique se o banco de dados primário
está no modo ARCHIVELOG.</p>



<p>SELECT log_mode FROM
v$database;</p>



<p>LOG_MODE</p>



<p>&#8212;&#8212;&#8212;&#8212;</p>



<p>NOARCHIVELOG</p>



<p>SQL&gt;</p>



<p>Se estiver em NOARCHIVELOG mode, altere
para o modo ARCHIVELOG.</p>



<p>SHUTDOWN IMMEDIATE;</p>



<p>STARTUP MOUNT;</p>



<p>ALTER DATABASE ARCHIVELOG;</p>



<p>ALTER
DATABASE OPEN;</p>



<p>Habilite o log &nbsp;FORCE
LOGGING.</p>



<p>ALTER DATABASE FORCE LOGGING;</p>



<p>&#8212; Make sure at least one
logfile is present.</p>



<p>ALTER SYSTEM SWITCH LOGFILE;</p>



<p>Crie os standby redo logs no database
primário (em caso de switchovers). O standby redo logs deve ser o mesmo tamanho
que os redo logs e deve haver um grupo extra por thread. No meu caso, os
seguintes standby redo logs deve ser criado em ambos os
servidores.</p>



<p>&#8212; If Oracle Managed Files
(OMF) is not used.</p>



<p>ALTER DATABASE ADD STANDBY
LOGFILE (&#8216;/u01/data/duts/std_redo01.log&#8217;) SIZE 100M;</p>



<p>ALTER DATABASE ADD STANDBY
LOGFILE (&#8216;/u01/data/duts/std_redo02.log&#8217;) SIZE 100M;</p>



<p>ALTER DATABASE ADD STANDBY
LOGFILE (&#8216;/u01/data/duts/std_redo03.log&#8217;) SIZE 100M;</p>



<p>ALTER DATABASE ADD STANDBY
LOGFILE (&#8216;/u01/data/duts/std_redo04.log&#8217;) SIZE 100M;</p>



<p>&#8212; If Oracle Managed Files
(OMF) is used.</p>



<p>ALTER DATABASE ADD STANDBY
LOGFILE SIZE 100M;</p>



<p>ALTER DATABASE ADD STANDBY
LOGFILE SIZE 100M;</p>



<p>ALTER DATABASE ADD STANDBY
LOGFILE SIZE 100M;</p>



<p>ALTER DATABASE ADD STANDBY
LOGFILE SIZE 100M;</p>



<p>Se
voce que usar a feature flashback database, ative no servidor primário agora, e
ele será ativo no standby também. Eu sempre uso em meus
ambientes.</p>



<p>ALTER DATABASE FLASHBACK ON;</p>



<p>Initialization
Parameters</p>



<p>Verifique a configuração dos parâmetros DB_UNIQUE_NAME e
DB_NAME . Nesse caso, eles são definidos como &#8220;duts&#8221; no banco de
dados primário.</p>



<p>SQL&gt; show parameter db_name</p>



<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VALUE</p>



<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>



<p>db_name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp; 
duts</p>



<p>SQL&gt; show parameter
db_unique_name</p>



<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VALUE</p>



<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>



<p>db_unique_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp; 
duts</p>



<p>SQL&gt;</p>



<p>O&nbsp;DB_NAME&nbsp;do
standby database será o mesmo que o da primário, mas deve ser &nbsp;diferente o valor do &nbsp;DB_UNIQUE_NAME. Para este exemplo, o banco de dados
standby terá o valor &nbsp;&#8220;duts_stby&#8221;.</p>



<p>Verifique
se o parâmetro STANDBY_FILE_MANAGEMENT está definido.</p>



<p>ALTER SYSTEM SET
STANDBY_FILE_MANAGEMENT=AUTO;</p>



<p>Service
Setup</p>



<p>As entradas para os bancos de dados
primário e em standby são necessárias no &#8220;$ORACLE_HOME/network/admin/tnsnames.ora&#8221;
&nbsp;em ambos servidores.</p>



<p>Você pode criá-los usando o utilitário
de configuração de rede (netca) ou manualmente.</p>



<p>As seguintes entradas foram usadas
durante esta configuração. Observe o uso do&nbsp;SID, em vez do&nbsp;SERVICE_NAME&nbsp;nas
entradas. Isto é importante quando o broker for se conectar a os bancos de
dados quando eles estão em shutdown, porque os serviços não estarão ativos.</p>



<p>duts =</p>



<p>&nbsp; (DESCRIPTION =</p>



<p>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg1)(PORT
= 1521))</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp;&nbsp;&nbsp; (CONNECT_DATA =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID = duts)</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>duts_stby =</p>



<p>&nbsp; (DESCRIPTION =</p>



<p>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg2)(PORT
= 1521))</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp;&nbsp;&nbsp; (CONNECT_DATA =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID = duts)</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>O arquivo
&#8220;$ORACLE_HOME/network/admin/listener.ora&#8221; no servidor primário contém
a seguinte configuração.</p>



<p>LISTENER =</p>



<p>&nbsp; (DESCRIPTION_LIST =</p>



<p>&nbsp;&nbsp;&nbsp; (DESCRIPTION =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg1)(PORT
= 1521))</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY =
EXTPROC1521))</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>SID_LIST_LISTENER =</p>



<p>&nbsp; (SID_LIST =</p>



<p>&nbsp;&nbsp;&nbsp; (SID_DESC =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (GLOBAL_DBNAME = duts_DGMGRL)</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ORACLE_HOME =
/u01/app/oracle/product/19.0.0/db_1)</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID_NAME = duts)</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>ADR_BASE_LISTENER
= /u01/app/oracle</p>



<p>O arquivo &#8220;$ORACLE_HOME/network/admin/listener.ora&#8221;
no servidor standby contém a seguinte configuração.</p>



<p>Uma vez que o broker
será necessário se conectar ao banco de dados quando estiver
em shutdown. Não podemos confiar no registro automático
com o listener, Portanto, uma a entrada explícita para o banco de dados.</p>



<p>LISTENER =</p>



<p>&nbsp; (DESCRIPTION_LIST =</p>



<p>&nbsp;&nbsp;&nbsp; (DESCRIPTION =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg2)(PORT
= 1521))</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY =
EXTPROC1521))</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>SID_LIST_LISTENER =</p>



<p>&nbsp; (SID_LIST =</p>



<p>&nbsp;&nbsp;&nbsp; (SID_DESC =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (GLOBAL_DBNAME = duts_stby_DGMGRL)</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ORACLE_HOME =
/u01/app/oracle/product/19.0.0/db_1)</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID_NAME = duts)</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>ADR_BASE_LISTENER
= /u01/app/oracle</p>



<p>Uma
vez que o listener.ora &nbsp;estiver ok, reinicie o listener em ambos os
servers.</p>



<p>lsnrctl stop</p>



<p>lsnrctl start</p>



<p>Configuração do Servidor Standby</p>



<p>Preparando o Duplicate</p>



<p>Crie
um arquivo de parâmetros &#8220;/tmp/initduts_stby.ora&#8221; &nbsp;para o standby database com os seguintes
conteúdos.</p>



<p>*.db_name=&#8217;duts&#8217;</p>



<p>Crie
os diretórios necessários no servidor standby </p>



<p>mkdir -p /u02/data/duts/pdbseed</p>



<p>mkdir -p /u02/data/duts/pdb1</p>



<p>mkdir -p /u02/app/oracle/fast_recovery_area/duts</p>



<p>mkdir -p
/u02/app/oracle/admin/duts/adump</p>



<p>Criar um arquivo de senha,
com a mesma senha do SYS usado no banco de dados primário.</p>



<p>$ orapwd
file=/u01/app/oracle/product/19.0.0/db_1/dbs/orapwduts password=oracle
entries=10</p>



<p>Criando o Standby usando o DUPLICATE</p>



<p>Inicie
a instancia auxiliar no servidor standby com o arquivo de parâmetros gerados.</p>



<p>$ export ORACLE_SID=duts</p>



<p>$ sqlplus / as sysdba</p>



<p>SQL&gt; STARTUP NOMOUNT
PFILE=&#8217;/tmp/initduts_stby.ora&#8217;;</p>



<p>Conecte-se ao RMAN, especificando a
string completa para o TARGET e AUXILIARY. Não tente usar a autenticação do
sistema operacional.</p>



<p>$ rman TARGET sys/oracle@duts
AUXILIARY sys/oracle@duts_stby</p>



<p>Agora emita o seguinte comando
DUPLICATE.</p>



<p>DUPLICATE TARGET DATABASE</p>



<p>&nbsp; FOR STANDBY</p>



<p>&nbsp; FROM ACTIVE DATABASE</p>



<p>&nbsp; DORECOVER</p>



<p>&nbsp; SPFILE</p>



<p>&nbsp;&nbsp;&nbsp; SET db_unique_name=&#8217;duts_stby&#8217; COMMENT &#8216;Is
standby 19c&#8217;</p>



<p>&nbsp; NOFILENAMECHECK;</p>



<p>Se você precisar converter locais de
arquivos, ou alterar quaisquer parâmetros de inicialização, você pode fazer
isso durante a duplicate usando o&nbsp;
comando Set.</p>



<p>DUPLICATE TARGET DATABASE</p>



<p>&nbsp; FOR STANDBY</p>



<p>&nbsp; FROM ACTIVE DATABASE</p>



<p>&nbsp; DORECOVER</p>



<p>&nbsp; SPFILE</p>



<p>&nbsp;&nbsp;&nbsp; SET db_unique_name=&#8217;duts_stby&#8217; COMMENT &#8216;Is
standby 19c&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET db_file_name_convert=&#8217;/u01/data/duts/&#8217;,&#8217;/u02/data/duts/&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET log_file_name_convert=&#8217;/u01/data/duts/&#8217;,&#8217;/u02/data/duts/&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET job_queue_processes=&#8217;0&#8242;</p>



<p>&nbsp; NOFILENAMECHECK;</p>



<p>Uma breve explicação das cláusulas
individuais é mostrada abaixo.</p>



<ul class="wp-block-list"><li>FOR STANDBY: Isto informa que o&nbsp;comando
     DUPLICATE&nbsp;deve ser utilizado para um standby, por isso não vai forçar
     uma troca do DBID.</li><li>FROM ACTIVE DATABASE: O&nbsp;DUPLICATE&nbsp;será
     criado diretamente a partir dos DataFiles de origem, sem nehum backup
     adicional.</li><li>DORECOVER: O&nbsp;DUPLICATE&nbsp;incluirá a etapa de recuperação, trazendo
     o standby até o ponto atual no tempo.</li><li>SPFILE: Nos permite redefinir valores no SPFile quando ele é
     copiado do servidor de origem.</li><li>NOFILENAMECHECK: Locais de arquivo de destino não são verificados.</li></ul>



<p>Uma vez que o DUPLICATE está completo,
podemos começar a usar o broker.</p>



<p>Ativando
Broker</p>



<p>Neste ponto, temos o banco de dados
primário e o standby database, então agora precisamos começar a usar o Data
Guard Broker para gerenciá-los. Faça a conexão em
ambos databases (primário e standby) e emitir o seguinte comando.</p>



<p>ALTER SYSTEM SET
dg_broker_start=true;</p>



<p>No servidor primário, emita o seguinte
comando para registrar o servidor primário com o Broker.</p>



<p>$ <strong>dgmgrl sys/oracle@duts</strong></p>



<p>DGMGRL for Linux: Release
19.0.0.0.0 &#8211; Production on Tue May 11 14:39:33 2019</p>



<p>Version 19.2.0.0.0</p>



<p>Copyright (c) 1982, 2019,
Oracle and/or its affiliates.&nbsp; All rights
reserved.</p>



<p>Welcome to DGMGRL, type
&#8220;help&#8221; for information.</p>



<p>Connected as SYSDBA.</p>



<p>DGMGRL&gt; <strong>CREATE
CONFIGURATION dg_config AS PRIMARY DATABASE IS duts CONNECT IDENTIFIER IS duts;</strong></p>



<p>Configuration
&#8220;dg_config&#8221; created with primary database &#8220;duts&#8221;</p>



<p>DGMGRL&gt;</p>



<p>Agora adicione o banco de dados standby.</p>



<p>DGMGRL&gt; <strong>ADD DATABASE duts_stby
AS CONNECT IDENTIFIER IS duts_stby MAINTAINED AS PHYSICAL;</strong></p>



<p>Database &#8220;duts_stby&#8221;
added</p>



<p>DGMGRL&gt;</p>



<p>Agora vamos ativar a nova configuração.</p>



<p>DGMGRL&gt; <strong>ENABLE
CONFIGURATION;</strong></p>



<p>Enabled.</p>



<p>DGMGRL&gt;</p>



<p>Os comandos a seguir mostram como
verificar a configuração e o status dos bancos de dados do Broker.</p>



<p>DGMGRL&gt; <strong>SHOW
CONFIGURATION;</strong></p>



<p>Configuration &#8211; dg_config</p>



<p>&nbsp; Protection Mode: MaxPerformance</p>



<p>&nbsp; Members:</p>



<p>&nbsp; duts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&#8211; Primary database</p>



<p>&nbsp;&nbsp;&nbsp; duts_stby &#8211; Physical standby database</p>



<p>Fast-Start Failover: DISABLED</p>



<p>Configuration Status:</p>



<p>SUCCESS&nbsp;&nbsp; (status updated 26 seconds ago)</p>



<p>DGMGRL&gt; <strong>SHOW DATABASE duts;</strong></p>



<p>Database &#8211; duts</p>



<p>&nbsp; Role:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIMARY</p>



<p>&nbsp; Intended State:&nbsp;&nbsp;&nbsp;&nbsp; TRANSPORT-ON</p>



<p>&nbsp; Instance(s):</p>



<p>&nbsp;&nbsp;&nbsp; duts</p>



<p>Database Status:</p>



<p>SUCCESS</p>



<p>DGMGRL&gt; <strong>SHOW DATABASE duts_stby;</strong></p>



<p>Database &#8211; duts_stby</p>



<p>&nbsp; Role:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PHYSICAL STANDBY</p>



<p>&nbsp; Intended State:&nbsp;&nbsp;&nbsp;&nbsp; APPLY-ON</p>



<p>&nbsp; Transport Lag:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 seconds (computed 1 second ago)</p>



<p>&nbsp; Apply Lag:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 seconds (computed 1 second ago)</p>



<p>&nbsp; Average Apply Rate: 5.00 KByte/s</p>



<p>&nbsp; Real Time Query:&nbsp;&nbsp;&nbsp; OFF</p>



<p>&nbsp; Instance(s):</p>



<p>&nbsp;&nbsp;&nbsp; duts</p>



<p>Database Status:</p>



<p>SUCCESS</p>



<p>DGMGRL&gt;</p>



<p>Database Switchover</p>



<p>Um banco de dados pode estar em um dos
dois modos mutuamente exclusivos (Primário ou standby). Essas funções podem ser
alteradas em tempo de execução sem perda de dados ou reset dos
redo logs. Este processo é conhecido como um Switchover e podem ser executadas
usando os seguintes comandos. Conecte-se ao banco de dados primário (duts) e
faça o switchover para o banco de dados standby (duts_stby).</p>



<p>$ <strong>dgmgrl sys/oracle@duts</strong></p>



<p>DGMGRL for Linux: Release
19.0.0.0.0 &#8211; Production on Tue May 11 14:55:33 2019</p>



<p>Version 19.2.0.0.0</p>



<p>Copyright (c) 1982, 2019,
Oracle and/or its affiliates.&nbsp; All rights
reserved.</p>



<p>Welcome to DGMGRL, type
&#8220;help&#8221; for information.</p>



<p>Connected as SYSDBA.</p>



<p>DGMGRL&gt; <strong>SWITCHOVER TO duts_stby;</strong></p>



<p>Performing switchover NOW,
please wait&#8230;</p>



<p>Operation requires a connection
to instance &#8220;duts&#8221; on database &#8220;duts_stby&#8221;</p>



<p>Connecting to instance &#8220;duts&#8221;&#8230;</p>



<p>Connected as SYSDBA.</p>



<p>New primary database &#8220;duts_stby&#8221;
is opening&#8230;</p>



<p>Operation requires start up of
instance &#8220;duts&#8221; on database &#8220;duts&#8221;</p>



<p>Starting instance &#8220;duts&#8221;&#8230;</p>



<p>ORACLE instance started.</p>



<p>Database mounted.</p>



<p>Switchover succeeded, new
primary is &#8220;duts_stby&#8221;</p>



<p>DGMGRL&gt;</p>



<p>Vamos mudar de volta para o primário
original. Conecte-se ao novo primário (duts_stby) e faça o switchover para o
novo banco de dados standby (duts).</p>



<p>$ <strong>dgmgrl sys/oracle@duts_stby</strong></p>



<p>DGMGRL for Linux: Release
19.0.0.0.0 &#8211; Production on Tue May 11 14:57:20 2019</p>



<p>Version 19.2.0.0.0</p>



<p>Copyright (c) 1982, 2019,
Oracle and/or its affiliates.&nbsp; All rights
reserved.</p>



<p>Welcome to DGMGRL, type
&#8220;help&#8221; for information.</p>



<p>Connected as SYSDBA.</p>



<p>DGMGRL&gt; <strong>SWITCHOVER TO duts;</strong></p>



<p>Performing switchover NOW,
please wait&#8230;</p>



<p>Operation requires a connection
to instance &#8220;duts&#8221; on database &#8220;duts&#8221;</p>



<p>Connecting to instance &#8220;duts&#8221;&#8230;</p>



<p>Connected as SYSDBA.</p>



<p>New primary database &#8220;duts&#8221;
is opening&#8230;</p>



<p>Operation requires start up of
instance &#8220;duts&#8221; on database &#8220;duts_stby&#8221;</p>



<p>Starting instance &#8220;duts&#8221;&#8230;</p>



<p>ORACLE instance started.</p>



<p>Database mounted.</p>



<p>Switchover succeeded, new
primary is &#8220;duts&#8221;</p>



<p>DGMGRL&gt;</p>



<p>Database Failover</p>



<p>Se o banco de dados primário não estiver
disponível, o banco de dados standby poderá ser ativado como um banco de dados
primário usando as instruções a seguir. Conecte-se ao banco de dados standby
(duts_stby) e ao failover.</p>



<p>$ <strong>dgmgrl sys/oracle@duts_stby</strong></p>



<p>DGMGRL for Linux: Release
19.0.0.0.0 &#8211; Production on Tue May 11 15:00:20 2019</p>



<p>Version 19.2.0.0.0</p>



<p>Copyright (c) 1982, 2019,
Oracle and/or its affiliates.&nbsp; All rights
reserved.</p>



<p>Welcome to DGMGRL, type
&#8220;help&#8221; for information.</p>



<p>Connected as SYSDBA.</p>



<p>DGMGRL&gt; <strong>FAILOVER TO duts_stby;</strong></p>



<p>Performing failover NOW, please
wait&#8230;</p>



<p>Failover succeeded, new primary
is &#8220;duts_stby&#8221;</p>



<p>DGMGRL&gt;</p>



<p>Uma vez que o &nbsp;banco de dados standby é agora o banco de
dados primário, &nbsp;deve ser feito um backup
imediatamente do mesmo. </p>



<p>O banco de dados primário original agora
pode ser configurado como um standby. Se o flashback database foi habilitado no
banco de dados primário, então isso pode ser feito relativamente facil com o
seguinte comando.</p>



<p>DGMGRL&gt; <strong>REINSTATE
DATABASE duts;</strong></p>



<p>Reinstating database &#8220;duts&#8221;,
please wait&#8230;</p>



<p>Operation requires shut down of
instance &#8220;duts&#8221; on database &#8220;duts&#8221;</p>



<p>Shutting down instance &#8220;duts&#8221;&#8230;</p>



<p>ORACLE instance shut down.</p>



<p>Operation requires start up of
instance &#8220;duts&#8221; on database &#8220;duts&#8221;</p>



<p>Starting instance &#8220;duts&#8221;&#8230;</p>



<p>ORACLE instance started.</p>



<p>Database mounted.</p>



<p>Continuing to reinstate
database &#8220;duts&#8221; &#8230;</p>



<p>Reinstatement of database
&#8220;duts&#8221; succeeded</p>



<p>DGMGRL&gt;</p>



<p>Se flashback database não estiver ativado,
você terá que recriar manualmente duts como um standby. O processo basicamente
o inverso do que você fez anteriormente.</p>



<p># 1) Cleanup the old instance.</p>



<p>sqlplus / as sysdba &lt;&lt;EOF</p>



<p>SHUTDOWN IMMEDIATE;</p>



<p>EXIT;</p>



<p>EOF</p>



<p>rm -Rf /u01/data/duts/*</p>



<p>rm -Rf /u01/app/oracle/fast_recovery_area/duts</p>



<p>rm -Rf /u01/app/oracle/fast_recovery_area/duts_stby</p>



<p>rm -Rf /u01/app/oracle/admin/duts</p>



<p>mkdir -p /u01/app/oracle/fast_recovery_area/duts</p>



<p>mkdir -p
/u01/app/oracle/admin/duts/adump</p>



<p>mkdir -p
/u01/data/duts/pdbseed</p>



<p>mkdir -p
/u01/data/duts/pdb1</p>



<p>rm $ORACLE_HOME/dbs/spfileduts.ora</p>



<p>export ORACLE_SID=duts</p>



<p>sqlplus / as sysdba &lt;&lt;EOF</p>



<p>STARTUP NOMOUNT
PFILE=&#8217;/tmp/initduts_stby.ora&#8217;;</p>



<p>EXIT;</p>



<p>EOF</p>



<p># 2) Connect to RMAN.</p>



<p>$ rman TARGET sys/oracle@duts_stby
AUXILIARY sys/oracle@duts</p>



<p># 3) Duplicate the database.</p>



<p>DUPLICATE TARGET DATABASE</p>



<p>&nbsp; FOR STANDBY</p>



<p>&nbsp; FROM ACTIVE DATABASE</p>



<p>&nbsp; DORECOVER</p>



<p>&nbsp; SPFILE</p>



<p>&nbsp;&nbsp;&nbsp; SET db_unique_name=&#8217;duts&#8217; COMMENT &#8216;Is
standby 19c&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET db_file_name_convert=&#8217;/u02/data/duts/&#8217;,&#8217;/u01/data/duts/&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET log_file_name_convert=&#8217;/u02/data/duts/&#8217;,&#8217;/u01/data/duts/&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET job_queue_processes=&#8217;0&#8242;</p>



<p>&nbsp; NOFILENAMECHECK;</p>



<p># 4) Connect to DGMDRL on the
current primary.</p>



<p>$ dgmgrl sys/oracle@duts_stby</p>



<p># 5) Enable the new standby.</p>



<p>DGMGRL&gt; ENABLE DATABASE duts;</p>



<p>Flashback
Database</p>



<p>Ele já foi mencionado na seção anterior,
mas vale a pena chamar sua atenção para Flashback Database&nbsp;mais uma vez. Embora
um switchover/switchback é seguro para ambos o banco de dados primário e standby,
a failover transforma o banco de dados primário inútil para converter para um
banco de dados em standby. Se flashback database não estiver ativo, o banco de
dados primário original deve ser desfeito e recriado como um banco de dados em
standby.</p>



<p>Uma alternativa é habilitar flashback
database no banco de dados primário (e o standby se
desejado)
assim, no caso de um failover, o primário pode ser feito um flashed back para o um
ponto antes do failover e rapidamente convertido em um banco de dados standby,
como mostrado acima.</p>



<p>&nbsp;<a>Criação de</a> application services</p>



<p>Para facilitar a
administração de conexões de cliente, e para tornar as operações SWITCHOVER
mais transparentes para os clientes, é recomendável criar serviços no banco de
dados.</p>



<p>Exemplo,
definição de serviço «&nbsp;DUTSS »&nbsp;:</p>



<p>begin
DBMS_SERVICE.CREATE_SERVICE ( service_name =&gt; &#8216;DUTSS&#8217;, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
network_name =&gt; &#8216; DUTSS &#8216;, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
failover_method =&gt; &#8216;BASIC&#8217;, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
failover_type =&gt; &#8216;SELECT&#8217;, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
failover_retries =&gt; 180, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
failover_delay =&gt; 1);</p>



<p>end;</p>



<p>/</p>



<p>Neste caso, há 180 tentativas e um delay
de 1 segundo(Então, basicamente 3 minutos antes do switching).&nbsp; Isto deve ser adaptado dependendo de suas
necessidades e exigências.</p>



<p>Este é o serviço que devem ser usados
pelo client.</p>



<p>Criando
trigger de Startup </p>



<p>Para gerenciar o início automático dos
serviços, em especial no caso de uma transição de função, a seguinte TRIGGER deve
ser criado (exemplo para o serviço DUTS). A trigger deve ser criado no SYS:</p>



<p>Connect SYS as SYSDBA</p>



<p>CREATE OR REPLACE TRIGGER
manage_app_services</p>



<p>&nbsp;&nbsp; AFTER STARTUP</p>



<p>&nbsp;&nbsp; ON DATABASE</p>



<p>DECLARE</p>



<p>&nbsp;&nbsp; role&nbsp;&nbsp;
VARCHAR (30);</p>



<p>BEGIN</p>



<p>&nbsp;&nbsp; SELECT&nbsp;&nbsp;
DATABASE_ROLE INTO role FROM V$DATABASE;</p>



<p>&nbsp;&nbsp; IF role = &#8216;PRIMARY&#8217;</p>



<p>&nbsp;&nbsp; THEN</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_SERVICE.START_SERVICE (&#8216;DUTSS&#8217;);</p>



<p>&nbsp;&nbsp; END IF;</p>



<p>END;</p>



<p>/</p>



<p>Em seguida, reiniciamos o banco de dados
primário para verificar se o serviço foi iniciado:</p>



<p>sqlplus / as sysdba</p>



<p>shutdown immediate&nbsp;;</p>



<p>startup</p>



<p>Conexões
de cliente</p>



<p>Para fazer as transições de função (como
resultado de um SWITCHOVER ou FAILOVER)&nbsp;&nbsp;
transparente para os usuários do banco de dados a connection string precisa
ser configurado com um failover connection string.</p>



<p>Isso pode ser configurado no TNSNAMES.ORA,
configurando dois endereços ou duas descrições para o mesmo alias.</p>



<p>Exemplo de um alias definido para DUTS:</p>



<p>DUTS = </p>



<p>&nbsp; (DESCRIPTION = </p>



<p>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST = </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg1)(PORT
= 1521)) </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg2)(PORT
= 1521)) </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) </p>



<p>&nbsp;&nbsp;&nbsp; (CONNECT_DATA = (SERVICE_NAME = DUTSS)) </p>



<p>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp; </p>



<p>Com esse método, os
clientes tentarão primeiro se conectar ao primeiro endereço (correspondente ao servidor
primário). Se estiver operacional, a conexão é estabelecida com esta base.</p>



<p>Se este primeiro endereço não responde (servidor
primário indisponível ou serviços parados), em seguida, o cliente tenta se
conectar ao segundo endereço (apontando para o servidor standby). Se estiver
operacional (que será o caso apenas depois de um SWITCHOVER ou um FAILOVER), em
seguida, o cliente se conectará à base de emergência de forma transparente e
automática.</p>



<p></p>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="https://www.dbadutra.com/wp-content/uploads/2018/01/us_flag-150x150.jpeg" alt="" class="wp-image-5130" width="52" height="52"/></figure>



<p><strong>Environments</strong></p>



<ul class="wp-block-list"><li>You
     have two servers (VMs or physical) with an operating system and Oracle
     installed on them. My environment I&#8217;ve used Oracle Linux 7.6 and Oracle
     Database 19c.</li><li>The primary server (duts-dg1)
     has a running instance.</li><li>The standby server (duts-dg2)
     has a software only installation.</li><li>There is nothing blocking
     communication between the machines over the listener ports. </li></ul>



<p><strong>Primary Server Setup</strong></p>



<p><strong>Logging</strong></p>



<p>Check that the primary
database is in archivelog mode.</p>



<p><strong>SELECT log_mode FROM v$database;</strong></p>



<p>LOG_MODE</p>



<p>&#8212;&#8212;&#8212;&#8212;</p>



<p>NOARCHIVELOG</p>



<p>SQL&gt;</p>



<p>If it is noarchivelog
mode, switch is to archivelog mode.</p>



<p><strong>SHUTDOWN IMMEDIATE;</strong></p>



<p><strong>STARTUP MOUNT;</strong></p>



<p><strong>ALTER DATABASE ARCHIVELOG;</strong></p>



<p><strong>ALTER DATABASE OPEN;</strong></p>



<p>Enabled forced logging
by issuing the following command.</p>



<p><strong>ALTER DATABASE FORCE LOGGING;</strong></p>



<p>&#8212; Make sure at least one
logfile is present.</p>



<p><strong>ALTER SYSTEM SWITCH LOGFILE;</strong></p>



<p>Create
standby redo logs on the primary database (in case of switchovers). The standby
redo logs should be at least as big as the largest online redo log and there
should be one extra group per thread compared the online redo logs. In my case,
the following standby redo logs must be created on both servers.</p>



<p>&#8212; If Oracle Managed Files
(OMF) is not used.</p>



<p><strong>ALTER DATABASE ADD STANDBY LOGFILE (&#8216;/u01/data/duts/std_redo01.log&#8217;) SIZE 100M;</strong></p>



<p><strong>ALTER DATABASE ADD STANDBY LOGFILE (&#8216;/u01/data/duts/std_redo02.log&#8217;) SIZE 100M;</strong></p>



<p><strong>ALTER DATABASE ADD STANDBY LOGFILE (&#8216;/u01/data/duts/std_redo03.log&#8217;) SIZE 100M;</strong></p>



<p><strong>ALTER DATABASE ADD STANDBY LOGFILE (&#8216;/u01/data/duts/std_redo04.log&#8217;) SIZE 100M;</strong></p>



<p>&#8212; If Oracle Managed Files
(OMF) is used.</p>



<p><strong>ALTER DATABASE ADD STANDBY LOGFILE SIZE 100M;</strong></p>



<p><strong>ALTER DATABASE ADD STANDBY LOGFILE SIZE 100M;</strong></p>



<p><strong>ALTER DATABASE ADD STANDBY LOGFILE SIZE 100M;</strong></p>



<p><strong>ALTER DATABASE ADD STANDBY LOGFILE SIZE 100M;</strong></p>



<p>If you want to user
flashback database, enable it on the primary now, so it will be enabled on the
standby also. I always use it in my environments.</p>



<p><strong>ALTER DATABASE FLASHBACK ON;</strong></p>



<p><strong>Initialization Parameters</strong></p>



<p>Check the setting for
the&nbsp;DB_NAME&nbsp;and&nbsp;DB_UNIQUE_NAME&nbsp;parameters. In this case they are both
set to &#8220;duts&#8221; on the primary database.</p>



<p>SQL&gt; <strong>show parameter db_name</strong></p>



<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VALUE</p>



<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>



<p>db_name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp; 
duts</p>



<p>SQL&gt; <strong>show parameter db_unique_name</strong></p>



<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  VALUE</p>



<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>



<p>db_unique_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp; 
duts</p>



<p>SQL&gt;</p>



<p>The&nbsp;DB_NAME&nbsp;of the standby database will be the same
as that of the primary, but it must have a different&nbsp;DB_UNIQUE_NAME&nbsp;value. For this example, the standby
database will have the value &#8220;duts_stby&#8221;.</p>



<p>Make sure the&nbsp;STANDBY_FILE_MANAGEMENT&nbsp;parameter is set.</p>



<p><strong>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;</strong></p>



<p>Service
Setup</p>



<p>Entries
for the primary and standby databases are needed in the
&#8220;$ORACLE_HOME/network/admin/tnsnames.ora&#8221; files on both servers.</p>



<p>You
can create these using the Network Configuration Utility (netca) or manually.</p>



<p>The
following entries were used during this setup. Notice the use of the&nbsp;SID, rather than the&nbsp;SERVICE_NAME&nbsp;in the entries. This is important as the
broker will need to connect to the databases when they are down, so the
services will not be present.</p>



<p>duts =</p>



<p>&nbsp; (DESCRIPTION =</p>



<p>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg1)(PORT
= 1521))</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp;&nbsp;&nbsp; (CONNECT_DATA =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID = duts)</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>duts_stby =</p>



<p>&nbsp; (DESCRIPTION =</p>



<p>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg2)(PORT
= 1521))</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp;&nbsp;&nbsp; (CONNECT_DATA =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID = duts)</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>The &#8220;<strong>$ORACLE_HOME/network/admin/listener.ora</strong>&#8221; file on the primary server contains the following configuration.</p>



<p>LISTENER =</p>



<p>&nbsp; (DESCRIPTION_LIST =</p>



<p>&nbsp;&nbsp;&nbsp; (DESCRIPTION =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg1)(PORT
= 1521))</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY =
EXTPROC1521))</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>SID_LIST_LISTENER =</p>



<p>&nbsp; (SID_LIST =</p>



<p>&nbsp;&nbsp;&nbsp; (SID_DESC =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (GLOBAL_DBNAME = duts_DGMGRL)</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ORACLE_HOME =
/u01/app/oracle/product/19.0.0/db_1)</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID_NAME = duts)</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>ADR_BASE_LISTENER
= /u01/app/oracle</p>



<p>The &#8220;<strong>$ORACLE_HOME/network/admin/listener.ora</strong>&#8221; file on the standby server contains the following configuration. </p>



<p>Since
the broker will need to connect to the database when it&#8217;s down, we can&#8217;t rely
on auto-registration with the listener, hence the explicit entry for the
database.</p>



<p>LISTENER =</p>



<p>&nbsp; (DESCRIPTION_LIST =</p>



<p>&nbsp;&nbsp;&nbsp; (DESCRIPTION =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg2)(PORT
= 1521))</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY =
EXTPROC1521))</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>SID_LIST_LISTENER =</p>



<p>&nbsp; (SID_LIST =</p>



<p>&nbsp;&nbsp;&nbsp; (SID_DESC =</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (GLOBAL_DBNAME = duts_stby_DGMGRL)</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ORACLE_HOME =
/u01/app/oracle/product/19.0.0/db_1)</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID_NAME = duts)</p>



<p>&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp; )</p>



<p>ADR_BASE_LISTENER
= /u01/app/oracle</p>



<p>Once the listener.ora
changes are in place, restart the listener on both servers.</p>



<p><strong>lsnrctl stop</strong></p>



<p><strong>lsnrctl start</strong></p>



<p><strong>Standby Server Setup</strong></p>



<p><strong>Prepare for Duplicate</strong></p>



<p>Create a parameter file for the standby database called <strong>&#8220;/tmp/initduts_stby.ora&#8221;</strong> with the following contents.</p>



<p><strong>*.db_name=&#8217;duts&#8217;</strong></p>



<p>Create the necessary
directories on the standby server.</p>



<p><strong>mkdir -p /u02/data/duts/pdbseed</strong></p>



<p><strong>mkdir -p /u02/data/duts/pdb1</strong></p>



<p><strong>mkdir -p /u02/app/oracle/fast_recovery_area/duts</strong></p>



<p><strong>mkdir -p /u02/app/oracle/admin/duts/adump</strong></p>



<p>Create a password
file, with the SYS password matching that of the primary database.</p>



<p>$ <strong>orapwd file=/u01/app/oracle/product/19.0.0/db_1/dbs/orapwduts password=oracle entries=10</strong></p>



<p><strong>Create Standby Using DUPLICATE</strong></p>



<p>Start the auxiliary
instance on the standby server by starting it using the temporary
&#8220;init.ora&#8221; file.</p>



<p>$ <strong>export ORACLE_SID=duts</strong></p>



<p>$ <strong>sqlplus / as sysdba</strong></p>



<p>SQL&gt; <strong>STARTUP NOMOUNT PFILE=&#8217;/tmp/initduts_stby.ora&#8217;;</strong></p>



<p>Connect
to RMAN, specifying a full connect string for both the TARGET and AUXILIARY
instances. Do not attempt to use OS authentication.</p>



<p>$ <strong>rman TARGET sys/oracle@duts AUXILIARY sys/oracle@duts_stby</strong></p>



<p>Now issue the
following DUPLICATE command.</p>



<p><strong>DUPLICATE TARGET DATABASE</strong></p>



<p>&nbsp; <strong>FOR STANDBY</strong></p>



<p><strong>&nbsp; FROM ACTIVE DATABASE</strong></p>



<p><strong>&nbsp; DORECOVER</strong></p>



<p><strong>&nbsp; SPFILE</strong></p>



<p><strong>&nbsp;&nbsp;&nbsp; SET db_unique_name=&#8217;duts_stby&#8217; COMMENT &#8216;Is standby 19c&#8217;</strong></p>



<p>&nbsp; <strong>NOFILENAMECHECK</strong>;</p>



<p>If you need to convert
file locations, or alter any initialization parameters, you can do this during
the&nbsp;DUPLICATE&nbsp;using the&nbsp;SET&nbsp;command.</p>



<p><strong>DUPLICATE TARGET DATABASE</strong></p>



<p>&nbsp; <strong>FOR STANDBY</strong></p>



<p><strong>&nbsp; FROM ACTIVE DATABASE</strong></p>



<p>&nbsp; <strong>DORECOVER</strong></p>



<p>&nbsp; <strong>SPFILE</strong></p>



<p><strong>&nbsp;&nbsp;&nbsp; SET db_unique_name=&#8217;duts_stby&#8217; COMMENT &#8216;Is standby 19c&#8217;</strong></p>



<p><strong>&nbsp;&nbsp;&nbsp; SET db_file_name_convert=&#8217;/u01/data/duts/&#8217;,&#8217;/u02/data/duts/&#8217;</strong></p>



<p><strong>&nbsp;&nbsp;&nbsp; SET log_file_name_convert=&#8217;/u01/data/duts/&#8217;,&#8217;/u02/data/duts/&#8217;</strong></p>



<p><strong>&nbsp;&nbsp;&nbsp; SET job_queue_processes=&#8217;0&#8242;</strong></p>



<p>&nbsp; <strong>NOFILENAMECHECK</strong>;</p>



<p>A brief explanation of
the individual clauses is shown below.</p>



<ul class="wp-block-list"><li><strong>FOR STANDBY</strong>: This      tells the&nbsp;DUPLICATE&nbsp;command      is to be used for a standby, so it will not force a DBID change.</li></ul>



<p></p>



<ul class="wp-block-list"><li><strong>FROM ACTIVE DATABASE</strong>:      The&nbsp;DUPLICATE&nbsp;will      be created directly from the source datafiles, without an additional      backup step.</li></ul>



<p></p>



<ul class="wp-block-list"><li><strong>DORECOVER:</strong>      The&nbsp;DUPLICATE&nbsp;will      include the recovery step, bringing the standby up to the current point in      time.</li></ul>



<p></p>



<ul class="wp-block-list"><li><strong>SPFILE:</strong> Allows us to reset values in      the spfile when it is copied from the source server.</li></ul>



<p></p>



<ul class="wp-block-list"><li><strong>NOFILENAMECHECK</strong>:      Destination file locations are not checked.</li></ul>



<p>Once the command is
complete, we can start using the broker.</p>



<p><strong>Enable Broker</strong></p>



<p>At
this point we have a primary database and a standby database, so now we need to
start using the Data Guard Broker to manage them. Connect to both databases
(primary and standby) and issue the following command.</p>



<p><strong>ALTER SYSTEM SET dg_broker_start=true;</strong></p>



<p>On the primary server,
issue the following command to register the primary server with the broker.</p>



<p>$ <strong>dgmgrl sys/oracle@duts</strong></p>



<p>DGMGRL for Linux: Release
19.0.0.0.0 &#8211; Production on Tue May 11 14:39:33 2019</p>



<p>Version 19.2.0.0.0</p>



<p>Copyright (c) 1982, 2019,
Oracle and/or its affiliates.&nbsp; All rights
reserved.</p>



<p>Welcome to DGMGRL, type
&#8220;help&#8221; for information.</p>



<p>Connected as SYSDBA.</p>



<p>DGMGRL&gt; <strong>CREATE
CONFIGURATION dg_config AS PRIMARY DATABASE IS duts CONNECT IDENTIFIER IS duts;</strong></p>



<p>Configuration
&#8220;dg_config&#8221; created with primary database &#8220;duts&#8221;</p>



<p>DGMGRL&gt;</p>



<p>Now add the standby
database.</p>



<p>DGMGRL&gt; <strong>ADD DATABASE duts_stby
AS CONNECT IDENTIFIER IS duts_stby MAINTAINED AS PHYSICAL;</strong></p>



<p>Database &#8220;duts_stby&#8221;
added</p>



<p>DGMGRL&gt;</p>



<p>Now we enable the new
configuration.</p>



<p>DGMGRL&gt; <strong>ENABLE
CONFIGURATION;</strong></p>



<p>Enabled.</p>



<p>DGMGRL&gt;</p>



<p>The following commands
show how to check the configuration and status of the databases from the
broker.</p>



<p>DGMGRL&gt; <strong>SHOW
CONFIGURATION;</strong></p>



<p>Configuration &#8211; dg_config</p>



<p>&nbsp; Protection Mode: MaxPerformance</p>



<p>&nbsp; Members:</p>



<p>&nbsp; duts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&#8211; Primary database</p>



<p>&nbsp;&nbsp;&nbsp; duts_stby &#8211; Physical standby database</p>



<p>Fast-Start Failover: DISABLED</p>



<p>Configuration Status:</p>



<p>SUCCESS&nbsp;&nbsp; (status updated 26 seconds ago)</p>



<p>DGMGRL&gt; <strong>SHOW DATABASE duts;</strong></p>



<p>Database &#8211; duts</p>



<p>&nbsp; Role:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIMARY</p>



<p>&nbsp; Intended State:&nbsp;&nbsp;&nbsp;&nbsp; TRANSPORT-ON</p>



<p>&nbsp; Instance(s):</p>



<p>&nbsp;&nbsp;&nbsp; duts</p>



<p>Database Status:</p>



<p>SUCCESS</p>



<p>DGMGRL&gt; <strong>SHOW DATABASE duts_stby;</strong></p>



<p>Database &#8211; duts_stby</p>



<p>&nbsp; Role:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PHYSICAL STANDBY</p>



<p>&nbsp; Intended State:&nbsp;&nbsp;&nbsp;&nbsp; APPLY-ON</p>



<p>&nbsp; Transport Lag:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 seconds (computed 1 second ago)</p>



<p>&nbsp; Apply Lag:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 seconds (computed 1 second ago)</p>



<p>&nbsp; Average Apply Rate: 5.00 KByte/s</p>



<p>&nbsp; Real Time Query:&nbsp;&nbsp;&nbsp; OFF</p>



<p>&nbsp; Instance(s):</p>



<p>&nbsp;&nbsp;&nbsp; duts</p>



<p>Database Status:</p>



<p>SUCCESS</p>



<p>DGMGRL&gt;</p>



<p><strong>Database Switchover</strong></p>



<p>A
database can be in one of two mutually exclusive modes (primary or standby).
These roles can be altered at runtime without loss of data or resetting of redo
logs. This process is known as a Switchover and can be performed using the
following commands. Connect to the primary database (duts) and switchover to
the standby database (duts_stby).</p>



<p>$ <strong>dgmgrl sys/oracle@duts</strong></p>



<p>DGMGRL for Linux: Release
19.0.0.0.0 &#8211; Production on Tue May 11 14:55:33 2019</p>



<p>Version 19.2.0.0.0</p>



<p>Copyright (c) 1982, 2019,
Oracle and/or its affiliates.&nbsp; All rights
reserved.</p>



<p>Welcome to DGMGRL, type
&#8220;help&#8221; for information.</p>



<p>Connected as SYSDBA.</p>



<p>DGMGRL&gt; <strong>SWITCHOVER TO duts_stby;</strong></p>



<p>Performing switchover NOW,
please wait&#8230;</p>



<p>Operation requires a connection
to instance &#8220;duts&#8221; on database &#8220;duts_stby&#8221;</p>



<p>Connecting to instance &#8220;duts&#8221;&#8230;</p>



<p>Connected as SYSDBA.</p>



<p>New primary database &#8220;duts_stby&#8221;
is opening&#8230;</p>



<p>Operation requires start up of
instance &#8220;duts&#8221; on database &#8220;duts&#8221;</p>



<p>Starting instance &#8220;duts&#8221;&#8230;</p>



<p>ORACLE instance started.</p>



<p>Database mounted.</p>



<p>Switchover succeeded, new
primary is &#8220;duts_stby&#8221;</p>



<p>DGMGRL&gt;</p>



<p>Let&#8217;s switch back to
the original primary. Connect to the new primary (duts_stby) and switchover to
the new standby database (duts).</p>



<p>$ <strong>dgmgrl sys/oracle@duts_stby</strong></p>



<p>DGMGRL for Linux: Release
19.0.0.0.0 &#8211; Production on Tue May 11 14:57:20 2019</p>



<p>Version 19.2.0.0.0</p>



<p>Copyright (c) 1982, 2019,
Oracle and/or its affiliates. &nbsp;All rights
reserved.</p>



<p>Welcome to DGMGRL, type
&#8220;help&#8221; for information.</p>



<p>Connected as SYSDBA.</p>



<p>DGMGRL&gt; <strong>SWITCHOVER TO duts;</strong></p>



<p>Performing switchover NOW,
please wait&#8230;</p>



<p>Operation requires a connection
to instance &#8220;duts&#8221; on database &#8220;duts&#8221;</p>



<p>Connecting to instance &#8220;duts&#8221;&#8230;</p>



<p>Connected as SYSDBA.</p>



<p>New primary database &#8220;duts&#8221;
is opening&#8230;</p>



<p>Operation requires start up of
instance &#8220;duts&#8221; on database &#8220;duts_stby&#8221;</p>



<p>Starting instance &#8220;duts&#8221;&#8230;</p>



<p>ORACLE instance started.</p>



<p>Database mounted.</p>



<p>Switchover succeeded, new
primary is &#8220;duts&#8221;</p>



<p>DGMGRL&gt;</p>



<p><strong>Database Failover</strong></p>



<p>If
the primary database is not available the standby database can be activated as
a primary database using the following statements. Connect to the standby
database (duts_stby) and failover.</p>



<p>$ <strong>dgmgrl sys/oracle@duts_stby</strong></p>



<p>DGMGRL for Linux: Release
19.0.0.0.0 &#8211; Production on Tue May 11 15:00:20 2019</p>



<p>Version 19.2.0.0.0</p>



<p>Copyright (c) 1982, 2019,
Oracle and/or its affiliates.&nbsp; All rights
reserved.</p>



<p>Welcome to DGMGRL, type
&#8220;help&#8221; for information.</p>



<p>Connected as SYSDBA.</p>



<p>DGMGRL&gt; <strong>FAILOVER TO duts_stby;</strong></p>



<p>Performing failover NOW, please
wait&#8230;</p>



<p>Failover succeeded, new primary
is &#8220;duts_stby&#8221;</p>



<p>DGMGRL&gt;</p>



<p>Since
the standby database is now the primary database it should be backed up
immediately.</p>



<p>The
original primary database can now be configured as a standby. If flashback
database was enabled on the primary database, then this can be done relatively
easily with the following command.</p>



<p>DGMGRL&gt; <strong>REINSTATE
DATABASE duts;</strong></p>



<p>Reinstating database &#8220;duts&#8221;,
please wait&#8230;</p>



<p>Operation requires shut down of
instance &#8220;duts&#8221; on database &#8220;duts&#8221;</p>



<p>Shutting down instance &#8220;duts&#8221;&#8230;</p>



<p>ORACLE instance shut down.</p>



<p>Operation requires start up of
instance &#8220;duts&#8221; on database &#8220;duts&#8221;</p>



<p>Starting instance &#8220;duts&#8221;&#8230;</p>



<p>ORACLE instance started.</p>



<p>Database mounted.</p>



<p>Continuing to reinstate
database &#8220;duts&#8221; &#8230;</p>



<p>Reinstatement of database
&#8220;duts&#8221; succeeded</p>



<p>DGMGRL&gt;</p>



<p>If
flashback database is not enabled, you would have to manually recreate duts as
a standby. The basic process is the reverse of what you did previously.</p>



<p># 1) Cleanup the old instance.</p>



<p>sqlplus / as sysdba &lt;&lt;EOF</p>



<p>SHUTDOWN IMMEDIATE;</p>



<p>EXIT;</p>



<p>EOF</p>



<p>rm -Rf
/u01/data/duts/*</p>



<p>rm -Rf /u01/app/oracle/fast_recovery_area/duts</p>



<p>rm -Rf /u01/app/oracle/fast_recovery_area/duts_stby</p>



<p>rm -Rf /u01/app/oracle/admin/duts</p>



<p>mkdir -p /u01/app/oracle/fast_recovery_area/duts</p>



<p>mkdir -p
/u01/app/oracle/admin/duts/adump</p>



<p>mkdir -p
/u01/data/duts/pdbseed</p>



<p>mkdir -p
/u01/data/duts/pdb1</p>



<p>rm $ORACLE_HOME/dbs/spfileduts.ora</p>



<p>export ORACLE_SID=duts</p>



<p>sqlplus / as sysdba &lt;&lt;EOF</p>



<p>STARTUP NOMOUNT
PFILE=&#8217;/tmp/initduts_stby.ora&#8217;;</p>



<p>EXIT;</p>



<p>EOF</p>



<p># 2) Connect to RMAN.</p>



<p>$ rman TARGET sys/oracle@duts_stby
AUXILIARY sys/oracle@duts</p>



<p># 3) Duplicate the database.</p>



<p>DUPLICATE TARGET DATABASE</p>



<p>&nbsp; FOR STANDBY</p>



<p>&nbsp; FROM ACTIVE DATABASE</p>



<p>&nbsp; DORECOVER</p>



<p>&nbsp; SPFILE</p>



<p>&nbsp;&nbsp;&nbsp; SET db_unique_name=&#8217;duts&#8217; COMMENT &#8216;Is
standby 19c&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET db_file_name_convert=&#8217;/u02/data/duts/&#8217;,&#8217;/u01/data/duts/&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET log_file_name_convert=&#8217;/u02/data/duts/&#8217;,&#8217;/u01/data/duts/&#8217;</p>



<p>&nbsp;&nbsp;&nbsp; SET job_queue_processes=&#8217;0&#8242;</p>



<p>&nbsp; NOFILENAMECHECK;</p>



<p># 4) Connect to DGMDRL on the
current primary.</p>



<p>$ dgmgrl sys/oracle@duts_stby</p>



<p># 5) Enable the new standby.</p>



<p>DGMGRL&gt; ENABLE DATABASE duts;</p>



<p><strong>Flashback Database</strong></p>



<p>It
was already mentioned in the previous section, but it is worth drawing your
attention to&nbsp;Flashback Database&nbsp;once more. Although a switchover/switchback
is safe for both the primary and standby database, a failover renders the
original primary database useless for converting to a standby database. If
flashback database is not enabled, the original primary must be scrapped and
recreated as a standby database.</p>



<p>An
alternative is to enable flashback database on the primary (and the standby if
desired) so in the event of a failover, the primary can be flashed back to the
time before the failover and quickly converted to a standby database, as shown
above.</p>



<p><strong>Creation of application services</strong></p>



<p>To facilitate the administration of client
connections, and to make SWITCHOVER operations more transparent for clients, it
is recommended to create database SERVICES.</p>



<p>Example, service definition «&nbsp;DUTSS »&nbsp;:</p>



<p>begin
DBMS_SERVICE.CREATE_SERVICE ( service_name =&gt; &#8216;DUTSS&#8217;, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
network_name =&gt; &#8216; DUTSS &#8216;, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
failover_method =&gt; &#8216;BASIC&#8217;, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
failover_type =&gt; &#8216;SELECT&#8217;, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
failover_retries =&gt; 180, </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
failover_delay =&gt; 1);</p>



<p>end;</p>



<p>/</p>



<p>In
this case, there are 180 retries and a delay of 1 second (so basically 3
minutes before switching).&nbsp; This should
be adapted depending on your needs and requirements.</p>



<p>These
are the services that should be used by client application connections.</p>



<p><strong>Creating the Startup trigger</strong></p>



<p>To
manage the automatic start of the services, in particular in the event of a
role transition, the following TRIGGER must be created (example for the DUTS
service). The trigger must be created under SYS:</p>



<p>Connect SYS as SYSDBA</p>



<p>CREATE OR REPLACE TRIGGER manage_app_services</p>



<p>&nbsp;&nbsp; AFTER STARTUP</p>



<p>&nbsp;&nbsp; ON DATABASE</p>



<p>DECLARE</p>



<p>&nbsp;&nbsp; role&nbsp;&nbsp;
VARCHAR (30);</p>



<p>BEGIN</p>



<p>&nbsp;&nbsp; SELECT&nbsp;&nbsp;
DATABASE_ROLE INTO role FROM V$DATABASE;</p>



<p>&nbsp;&nbsp; IF role = &#8216;PRIMARY&#8217;</p>



<p>&nbsp;&nbsp; THEN</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_SERVICE.START_SERVICE (&#8216;DUTSS&#8217;);</p>



<p>&nbsp;&nbsp; END IF;</p>



<p>END;</p>



<p>/</p>



<p>Then
we restart the PRIMARY database to check that the service is started:</p>



<p>sqlplus / as sysdba</p>



<p>shutdown immediate&nbsp;;</p>



<p>startup</p>



<p><strong>Client connections</strong></p>



<p>To
make the role transitions (as a result of a SWITCHOVER or FAILOVER)&nbsp;&nbsp; transparent to users the client database
connection string needs to be configured with a failover connection string.</p>



<p>This
can be configured at the TNSNAMES.ORA file level by configuring two addresses
or two descriptions for the same alias.</p>



<p>Example
of an alias defined for DUTS:</p>



<p>DUTS = </p>



<p>&nbsp; (DESCRIPTION = </p>



<p>&nbsp;&nbsp;&nbsp; (ADDRESS_LIST = </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg1)(PORT
= 1521)) </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = duts-dg2)(PORT
= 1521)) </p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) </p>



<p>&nbsp;&nbsp;&nbsp; (CONNECT_DATA = (SERVICE_NAME = DUTSS)) </p>



<p>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp; </p>



<p>With
this method, clients will attempt to first connect to the first address
(corresponding to the primary server and database). If it is operational (which
should be the case in a nominal way), the connection is established with this
base.</p>



<p>If this first address does not respond (primary server unavailable or services stopped), then the client tries to connect to the second address (pointing to the standby server). If it is operational (which will be the case only after a SWITCHOVER or a FAILOVER), then the client will connect to the emergency base transparently and automatically.</p>



<p></p>



<h5 class="wp-block-heading">Hope this helps !!!</h5>



<h5 class="wp-block-heading">Soon we will have more articles on the Oracle 19c.</h5>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2019/05/data-guard-physical-setup-using-data-broker-in-oracle-database-19c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5489</post-id>	</item>
		<item>
		<title>Instalando Oracle Data Guard 12c</title>
		<link>https://www.dbadutra.com/2015/10/instalando-oracle-data-guard-12c/</link>
					<comments>https://www.dbadutra.com/2015/10/instalando-oracle-data-guard-12c/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Mon, 05 Oct 2015 18:19:35 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Dataguard]]></category>
		<category><![CDATA[Oracle 12c]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=4994</guid>

					<description><![CDATA[Do que se trata o artigo: Neste artigo vamos realizar a instalação do Oracle Data Guard 12c. &#160; Em que situação o tema é útil: Montagem de ambiente Contingência com Oracle Data Guard &#160; Olá amigos, hoje vamos a um desafio bem grande montar um Oracle Data Guard 12c Como laboratório vamos estar usando as [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong><em>Do que se trata o artigo:</em></strong></p>
<p>Neste artigo vamos realizar a instalação do Oracle Data Guard 12c.</p>
<p>&nbsp;</p>
<p><strong><em>Em que situação o tema é útil:</em></strong></p>
<p>Montagem de ambiente Contingência com Oracle Data Guard</p>
<p>&nbsp;</p>
<p>Olá amigos, hoje vamos a um desafio bem grande montar um Oracle Data Guard 12c</p>
<p>Como laboratório vamos estar usando as mídias do Oracle Database 12c e do virtualbox que se encontram nos links abaixo:</p>
<p>&nbsp;</p>
<p><strong> </strong>    Vamos precisar das seguintes mídias para realizar a instalação do ambiente:</p>
<p>&nbsp;</p>
<ul>
<li><a href="http://edelivery.oracle.com/linux">Oracle Linux</a>:   Realizar o download das mídias do Oracle Linux 6 Update 5 – 64 Bits.</li>
</ul>
<p>&nbsp;</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/midias01.jpg"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-4996" src="https://www.dbadutra.com/wp-content/uploads/2015/10/midias01-300x139.jpg" alt="midias01" width="300" height="139" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/midias01-300x139.jpg 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/midias01.jpg 700w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<ul>
<li><a href="http://www.virtualbox.org/wiki/Downloads">VirtualBox</a>: Realizar da última versão estável.</li>
<li><a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html">Oracle Database 12c Release 1 (12.1.0.1.0)</a>:  Realizar da última versão do Oracle 12c para Linux &#8211; X86_64.</li>
</ul>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/midias02.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-4997" src="https://www.dbadutra.com/wp-content/uploads/2015/10/midias02-300x175.png" alt="midias02" width="300" height="175" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/midias02-300x175.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/midias02.png 574w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Bem agora que já fizemos toda parte de download do material para montar este ambiente vamos iniciar as instalações. </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Primeiramente vamos criar as maquinas para o ambiente do Data Guard, conforme os procedimentos abaixo. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM01.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-4998" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM01-300x227.png" alt="VM01" width="300" height="227" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM01-300x227.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM01-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM01.png 630w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Nesta tela definimos o tipo de SO e a versão do mesmo, vamos utilizar o Oracle Linux 6 Update 5 em 64 Bits e vamos nomear este equipamento de DG1.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM02.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-4999" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM02-300x180.png" alt="VM02" width="300" height="180" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM02-300x180.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM02-1024x616.png 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Nesta tela vamos definir o tamanho da memória do node neste caso vamos ter 2048 MB.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM03.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5001" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM03-300x254.png" alt="VM03" width="300" height="254" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM03-300x254.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM03.png 520w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Nesta tela vamos selecionar a criação do drive que vai receber o sistema operacional do NODE1, selecione a opção <strong>“Create a virtual hard drive now”, </strong> e depois clique em NEXT.</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM04.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-5002" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM04-300x246.png" alt="VM04" width="300" height="246" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM04-300x246.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM04.png 605w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p>Nesta tela vamos selecionar o tipo de arquivo do disco virtual no caso vamos utilizar o VDI, depois de selecionar clique em NEXT.</p>
<p>&nbsp;</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM05.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5003" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM05-300x249.png" alt="VM05" width="300" height="249" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM05-300x249.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM05.png 603w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Nesta tela vamos selecionar o tipo de alocação do disco, selecione a opção <strong>“Dynamically allocated”,</strong> e depois clique em NEXT.</p>
<p>&nbsp;</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM06.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5004" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM06-300x245.png" alt="VM06" width="300" height="245" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM06-300x245.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM06.png 603w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Nesta tela vamos definir o tamanho do disco para instalar o SO e os binários do Oracle Database, estamos usando 20 GB.</span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Após criamos a máquina vamos agora habilitar 1 placa de redes que ser utilizado na rede do Data Guard.</span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Para chegar na tela a seguir, selecione a máquina que você criou e clique no botão settings do Virtualbox e depois que abrir a janela selecione a opção Network.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM07.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5005" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM07-300x245.png" alt="VM07" width="300" height="245" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM07-300x245.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM07-1024x835.png 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Nesta tela vamos definir na primeira placa de rede que a mesma vai funcionar na rede Host-only do virtualbox. </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Depois de selecionar a opção clique no OK e vamos instalar o Sistema Operacional Oracle Linux 6. Para isso clique no item Storage e selecione a mídia do Oracle Linux 6.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM08.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5006" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM08-300x239.png" alt="VM08" width="300" height="239" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM08-300x239.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM08-1024x817.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM08-45x35.png 45w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Depois de um Start na máquina Virtual DG1 e vamos iniciar a instalação do S.O. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM09.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5007" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM09-300x262.png" alt="VM09" width="300" height="262" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM09-300x262.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM09.png 659w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Bem nesta tela selecione a opção <strong>“Install or Upgrade an existing system”,</strong> e depois de um ENTER.</p>
<p>&nbsp;</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM11.png"><br />
</a><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM10.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5008" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM10-300x200.png" alt="VM10" width="300" height="200" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM10-300x200.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM10-90x60.png 90w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM10-180x120.png 180w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM10-95x64.png 95w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM10.png 738w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Nesta tela selecione a opção SKIP, pois não é necessário a validação da mídia, após selecionado de um ENTER. </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Continue com a instalação do Oracle Linux como você faria para um servidor normal. Nas próximas três telas selecionar Language, teclado e dispositivos de armazenamento do tipo básico. </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Confirmar para descartar quaisquer dados.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM11.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5009" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM11-300x238.png" alt="VM11" width="300" height="238" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM11-300x238.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM11-1024x812.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM11-45x35.png 45w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Defina &#8220;Hostname&#8221; para db01dg e pressione &#8220;Configure Network&#8221;.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM12.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5011" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM12-300x244.png" alt="VM12" width="300" height="244" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM12-300x244.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM12.png 405w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Na tela de conexões de rede, selecione &#8220;System eth0&#8221;, que será usada para a rede pública, e pressione &#8220;Edit&#8221;</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM13.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5012" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM13-245x300.png" alt="VM13" width="245" height="300" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM13-245x300.png 245w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM13.png 441w" sizes="(max-width: 245px) 100vw, 245px" /></a></p>
<p class="DevCorpo">Certifique-se de que &#8220;Conectar automaticamente&#8221; está marcada. Selecione a aba &#8220;Configurações IPv4&#8221;; alterar o método para &#8220;Manual&#8221;;</p>
<p class="DevCorpo">Pressione o botão &#8220;Add&#8221; e preencha Endereço: 192.168.56.71; Máscara de rede: 255.255.255.0; Gateway: 0.0.0.0.</p>
<p>&nbsp;</p>
<p>Pressione o botão &#8220;Apply&#8221;.</p>
<p>&nbsp;</p>
<p>Fechar tela Conexões de rede e vá para a tela de configuração seguinte.</p>
<p>&nbsp;</p>
<p>Selecione o fuso horário.</p>
<p>&nbsp;</p>
<p>Digite a senha do Root, coloquei como oracle.<br />
<a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM14.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5014" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM14-300x205.png" alt="VM14" width="300" height="205" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM14-300x205.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM14-95x64.png 95w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM14.png 968w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Selecione &#8220;Use All Space&#8221; para o tipo de preparação do disco e marque a opção &#8220;Review and modify partitioning layout&#8221;, clique em NEXT.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Clique em NEXT e confirme através de avisos e criar partições. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Manter padrões de tela do carregador de inicialização. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Na tela de instalação do tipo de software, selecione &#8220;Database Server&#8221; e verifique o botão &#8220;Personalizar agora&#8221;. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Pressione Next.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM15.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5015" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM15-300x233.png" alt="VM15" width="300" height="233" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM15-300x233.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM15-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM15.png 651w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Na tela Personalização selecione &#8220;Databases&#8221; e desmarque todos os itens.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Selecione &#8220;Desktops&#8221; e marque &#8220;Ferramentas gráficas de administração&#8221; &#8220;Desktop&#8221; e em seguida, pressione Next e aguarde até o final da instalação e depois Reinicie o Sistema Operacional. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Quando ele volta, não haverá mais telas de configuração para lidar com óbvias. Não crie conta &#8216;Oracle&#8217;, isso será feito mais tarde. Você pode ignorar as configurações Kdump. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Parabéns! O Linux foi instalado. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Bem após ter instalado o Linux, abra um terminal no Linux para que possamos dar continuidade as atividades.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM16.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5016" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM16-300x197.png" alt="VM16" width="300" height="197" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM16-300x197.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM16-90x60.png 90w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM16.png 567w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Instalação do Oracle Database – Pré requisitos. </strong></p>
<p>&nbsp;</p>
<p>Bem após ter instalado o Linux, abra um terminal no Linux para que possamos dar continuidade as atividades.</p>
<p>&nbsp;</p>
<p>Todas as ações nesta seção devem ser executados pelo usuário root e devem ser executadas nos dois nodes.</p>
<p>&nbsp;</p>
<p>Instalar pacote <strong>“oracle-rdbms-server-12cR1-preinstall”</strong>. Este pacote realiza pré-requisitos do kernel incluindo mudança de parâmetros e criação de conta Oracle Linux.</p>
<p>&nbsp;</p>
<p>Execute no terminal o comando abaixo:</p>
<p>&nbsp;</p>
<p><strong>yum install oracle-rdbms-server-12cR1-preinstall</strong></p>
<p>&nbsp;</p>
<p>Aguarde até o mesmo fazer download da internet deste pacote e realizar a instalação do mesmo.</p>
<p>&nbsp;</p>
<p>Vamos agora desabilitar o SELINUX do sistema operacional.</p>
<p><strong>        vi /etc/selinux/config </strong></p>
<p>Dentro do arquivo trocar o SELINUX que estiver setado para a opção abaixo.</p>
<p><strong>         SELINUX=disabled</strong></p>
<p>&nbsp;</p>
<p>Salve o arquivo e saia do mesmo :wq no editor.</p>
<p>&nbsp;</p>
<p>Após feito este passo, vamos configurar a parte de network para comunicação das máquinas.</p>
<p>&nbsp;</p>
<p>Edite o arquivo hosts localizado no /etc:</p>
<p>&nbsp;</p>
<p class="DevCorpo" style="text-indent: 36.0pt;">         <strong>vi /etc/hosts</strong></p>
<p>&nbsp;</p>
<p>Limpe todas as configurações do arquivo e adicione a seguintes entradas:</p>
<p>&nbsp;</p>
<p><strong>192.168.56.71    db01dg        db01dg192.168.56.72    db02dg        db02dg </strong></p>
<p>&nbsp;</p>
<p>Após feito isso salve o arquivo e saia com o comando :wq</p>
<p>&nbsp;</p>
<p>Desabilite o Firewall do Linux da seguinte forma:</p>
<p><strong>service iptables stop</strong></p>
<p><strong>       service ip6tables stop</strong><strong> </strong></p>
<p><strong>       chkconfig iptables off</strong></p>
<p><strong> </strong><strong>      chkconfig ip6tables off</strong></p>
<p>&nbsp;</p>
<p>Após feito isso vamos clonar o equipamento para criar o DG2.</p>
<p>&nbsp;</p>
<p class="DevIntertitulo"><strong><span style="font-family: 'Verdana','sans-serif';">Instalando Oracle Database 12C.</span></strong></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Faça o login no &#8220;db01dg&#8221; como usuário oracle para iniciarmos a instalação do binário do Oracle Database 12c.</span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';"><br />
$ cd /media/database</span></p>
<p class="DevCorpo" style="text-indent: 0cm;"><span style="font-family: 'Verdana','sans-serif';">$ ./runInstaller</span></p>
<p class="DevCorpo" style="text-indent: 0cm;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM17.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5018" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM17-300x224.png" alt="VM17" width="300" height="224" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM17-300x224.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM17-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM17.png 804w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Desmarque a opção &#8220;I wish to receive security update via My Oracle Support&#8221; e pressione o botão &#8220;Next&#8221;.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM18.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5019" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM18-300x225.png" alt="VM18" width="300" height="225" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM18-300x225.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM18-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM18.png 800w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Selecione &#8220;Skip software updates&#8221;, e clique em &#8220;NEXT&#8221;.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM19.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5020" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM19-300x226.png" alt="VM19" width="300" height="226" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM19-300x226.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM19-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM19.png 796w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Selecione a opção “Install database software Only”, e clique em “NEXT”.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM20.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5021" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM20-300x215.png" alt="VM20" width="300" height="215" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM20-300x215.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM20-475x342.png 475w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM20.png 796w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Selecione a opção “Single Instance database installation” e clique em “NEXT”.</span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Na tela de Languages, clique em Next. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM21.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5022" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM21-300x225.png" alt="VM21" width="300" height="225" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM21-300x225.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM21-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM21.png 799w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Na tela de “Database Edition”, selecione a opção Enterprise Edition e clique em “NEXT”.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM22.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5023" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM22-300x225.png" alt="VM22" width="300" height="225" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM22-300x225.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM22-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM22.png 801w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Na tela de “Installation Location”, recomendamos seguir a sugestão padrão, caso seja necessário altere o caminho, e após isso clique em “NEXT”. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM23.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5024" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM23-300x224.png" alt="VM23" width="300" height="224" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM23-300x224.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM23-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM23.png 802w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo">Mantenha os padrões em &#8220;Operating Systems Groups&#8221; e pressione &#8220;Next&#8221;. Ignorar aviso na tela seguinte.</p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM24.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5025" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM24-300x224.png" alt="VM24" width="300" height="224" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM24-300x224.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM24-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM24.png 804w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">No item Prerequisite Checks, na minha instalação passou sem grandes problemas, caso apresente algo a vocês verifiquem os alertas, solucione os problemas antes da instalação. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Após tudo OK clique em Install. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VM25.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5026" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VM25-300x224.png" alt="VM25" width="300" height="224" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VM25-300x224.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM25-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VM25.png 799w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Após o termino da instalação irá apresentar uma tela para execução de um script que deve ser executado.</p>
<p>&nbsp;</p>
<p>Após isso vamos fazer a configuração do bash_profile do usuário oracle no DG1.</p>
<p>&nbsp;</p>
<p>Edite o arquivo hosts localizado no /home/oracle/:</p>
<p>&nbsp;</p>
<p class="DevCorpo">      <strong>   vi /home/oracle/.bash_profie </strong></p>
<p>Adicione as seguintes configurações:</p>
<p>&nbsp;</p>
<p class="DevCorpo"><strong># Oracle Settings</strong></p>
<p class="DevCorpo"><strong>export <span style="line-height: 1.5;">TMP=/tmp</span></strong></p>
<p class="DevCorpo"><strong><span style="line-height: 1.5;">export</span> TMPDIR=$TMP  </strong></p>
<p class="DevCorpo"><strong> export ORACLE_HOSTNAME=db01dg</strong></p>
<p class="DevCorpo"><strong>export ORACLE_BASE=/oracle</strong></p>
<p class="DevCorpo"><strong>export ORACLE_HOME=$ORACLE_BASE/12.1.0</strong></p>
<p class="DevCorpo"><strong>export ORACLE_SID=DG1</strong></p>
<p class="DevCorpo"><strong>export ORACLE_TERM=xterm</strong></p>
<p class="DevCorpo"><strong>export PATH=/usr/sbin:$ORACLE_HOME/bin:$PATH</strong></p>
<p class="DevCorpo"><strong>export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib</strong></p>
<p class="DevCorpo"><strong>export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib </strong></p>
<p>Após feito isso salve o arquivo e saia com o comando :wq</p>
<p>&nbsp;</p>
<p>Após a clonagem, teremos os seguintes ambientes para os testes de Data Guard:</p>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td width="127"><strong>TIPO</strong></td>
<td width="127"><strong>VM</strong></td>
<td width="127"><strong>HOSTNAME</strong></td>
<td width="127"><strong>IP</strong></td>
<td width="127"><strong>SID</strong></td>
</tr>
<tr>
<td width="127">PRIMARY</td>
<td width="127">DG1</td>
<td width="127">DB01DG</td>
<td width="127">192.168.56.71</td>
<td width="127">DG1</td>
</tr>
<tr>
<td width="127">STANDBY</td>
<td width="127">DG2</td>
<td width="127">DB02DG</td>
<td width="127">192.168.56.72</td>
<td width="127">DG2ST</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><strong> </strong></p>
<p><strong>Clone equipamento para criação do DG2. </strong></p>
<p>&nbsp;</p>
<p>De um shutdown na sua máquina DG1 para que possamos iniciar o clone do ambiente.</p>
<p>&nbsp;</p>
<p class="DevCorpo">No menu do VirtualBox “MACHINE” selecione a opção clone.</p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC01.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5028" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC01-300x207.png" alt="VMC01" width="300" height="207" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC01-300x207.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC01.png 606w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Digite &#8220;DG2&#8221; para o nome da nova máquina.</p>
<p>&nbsp;</p>
<p>Certifique-se de que <strong>&#8220;Reinitialize the MAC address of all network cards&#8221; </strong>não está marcada.  Em seguida, pressione &#8220;Next&#8221;:</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC02.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5029" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC02-300x208.png" alt="VMC02" width="300" height="208" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC02-300x208.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC02.png 601w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Mantenha a opção &#8220;Full Clone&#8221; selecionado e pressione &#8220;Clone&#8221; para iniciar o clone do ambiente.</p>
<p>&nbsp;</p>
<p>Após finalizar o clone com a máquina DG1 ainda em shutdown inicie a máquina DG2 e conecte como ROOT.</p>
<p>&nbsp;</p>
<p>Após feito isso vamos configurar alguns itens para que não apresente problemas nas máquinas.</p>
<p>&nbsp;</p>
<p>Primeiro vamos alterar o hostname do equipamento conforme instrução abaixo:</p>
<p>&nbsp;</p>
<p><strong>        vi /etc/sysconfig/network    </strong></p>
<p>Quando abrir o arquivo altere o item HOSTNAME que esta configurado com o nome do DG2 para o item abaixo</p>
<p><strong>HOSTNAME=db02dg </strong></p>
<p>Após isso precisamos realizar a edição dos ip´s da placa de rede eth0 da máquina clonada.</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC03.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5030" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC03-300x198.png" alt="VMC03" width="300" height="198" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC03-300x198.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC03-1024x675.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC03-90x60.png 90w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC03-180x120.png 180w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC03-95x64.png 95w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC03.png 1232w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Clique com o botão direito no ícone que demonstra 2 computadores para habilitar a edição das conexões de rede.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC04.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5031" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC04-300x244.png" alt="VMC04" width="300" height="244" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC04-300x244.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC04.png 405w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Edite a placa eth0, com o ip conforme imagem. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC05.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5032" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC05-259x300.png" alt="VMC05" width="259" height="300" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC05-259x300.png 259w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC05-885x1024.png 885w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC05.png 1828w" sizes="(max-width: 259px) 100vw, 259px" /></a></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';">Após feito o altere o MAC adresses de cada placa estamos trocando somente o final para 00 de todas as placas.</span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC06.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5033" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC06-257x300.png" alt="VMC06" width="257" height="300" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC06-257x300.png 257w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC06-877x1024.png 877w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC06.png 1816w" sizes="(max-width: 257px) 100vw, 257px" /></a></p>
<p>Após isso vamos fazer a configuração do bash_profile do usuário oracle no DG2.</p>
<p>&nbsp;</p>
<p>Edite o arquivo hosts localizado no /home/oracle/:</p>
<p>&nbsp;</p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left">   <strong>      vi /home/oracle/.bash_profie </strong></p>
<p>Adicione as seguintes configurações:</p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong># Oracle Settings</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export TMP=/tmp</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export TMPDIR=$TMP  </strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong> export ORACLE_HOSTNAME=db02dg</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export ORACLE_BASE=/oracle</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export ORACLE_HOME=$ORACLE_BASE/12.1.0</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export ORACLE_SID=DG2ST</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export ORACLE_TERM=xterm</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export PATH=/usr/sbin:$ORACLE_HOME/bin:$PATH</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib</strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><strong>export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib</strong></p>
<p>  Após feito isso salve o arquivo e saia com o comando :wq</p>
<p>Após feito isso de um shutdown no equipamento e altere o MAC adresses também no VirtualBox.</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC07.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5034" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC07-300x243.png" alt="VMC07" width="300" height="243" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC07-300x243.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC07-1024x829.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC07-45x35.png 45w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p>Após feito isso vamos iniciar a criação dos database.</p>
<p>&nbsp;</p>
<p class="DevIntertitulo"><strong><span style="font-family: 'Verdana','sans-serif';">Criando Database Oracle 12C.</span></strong></p>
<p class="DevCorpo" style="text-indent: 0cm;"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Faça o login no DG1 como usuário oracle para criação do banco de dados.</span></p>
<p class="DevCorpo" style="text-indent: 0cm;"><strong><span style="font-family: 'Verdana','sans-serif';">$ dbca</span></strong></p>
<p class="DevCorpo" style="text-indent: 0cm;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC08.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5035" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC08-300x271.png" alt="VMC08" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC08-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC08-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC08.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo" style="text-indent: 0cm;">Neste item selecione a opção “Create Database” e clique em NEXT.</p>
<p class="DevCorpo" style="text-indent: 0cm;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC09.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5036" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC09-300x271.png" alt="VMC09" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC09-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC09-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC09.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item selecione a opção “Advanced Mode” para que possamos realizar uma instalação customizada e clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC10.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5037" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC10-300x271.png" alt="VMC10" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC10-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC10-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC10.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item selecione a “Template General Purpose or Transaction Processing” como modelo de banco de dados e clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC11.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5038" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC11-300x271.png" alt="VMC11" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC11-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC11-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC11.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item digite o “Global Database Name” e o “SID” neste caso estamos usando DG1, após feito isso clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC12.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5039" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC12-300x271.png" alt="VMC12" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC12-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC12-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC12.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item selecione a opção de “Configure Enterprise Manager(EM) Database Express”, após feito isso clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC13.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5040" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC13-300x271.png" alt="VMC13" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC13-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC13-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC13.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item selecione a opção “Use the Same Administrative Password for All Accounts” para que possamos usar uma única senha lembrando que isso é um laboratório e como boas práticas, devemos sempre ter senhas com complexidade e diferentes para todos os usuários. Após feito isso clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC14.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5041" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC14-300x271.png" alt="VMC14" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC14-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC14-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC14.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item selecione a opção “Select” depois digite LISTENER e digite 1521 no item “PORT”,após feito isso clique em NEXT.</span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC15.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5042" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC15-300x271.png" alt="VMC15" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC15-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC15-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC15.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item selecione a opção “File System” em “Database Files” depois selecione “Use Database File Locations from Template”. </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Após feito isso selecione a opção “File System” em “Storage Type do Recovery Related Files” e selecione as opções “Specify Fast Recovery Area” e “Enable Archiving”, após feito isso clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC16.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5043" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC16-300x271.png" alt="VMC16" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC16-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC16-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC16.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item não marque nada e clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC17.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5044" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC17-300x271.png" alt="VMC17" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC17-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC17-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC17.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item como estamos montando um laboratório, deixe as opções já selecionadas e após feito isso clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC18.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5045" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC18-300x271.png" alt="VMC18" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC18-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC18-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC18.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Neste item selecione a opção “Create Dtabase”, após feito isso clique em NEXT. </span></p>
<p class="DevCorpo"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC19.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5046" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC19-300x271.png" alt="VMC19" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC19-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC19-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC19.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Neste item será exibido uma resumo do que você configurou, após fazer a analise clique em FINISH.</p>
<p>&nbsp;</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC20.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5047" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC20-300x271.png" alt="VMC20" width="300" height="271" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC20-300x271.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC20-1024x924.png 1024w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC20.png 1646w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p class="DevCorpo"><span style="font-family: 'Verdana','sans-serif';">Aguarde o final da instalação e clique em CLOSE. </span></p>
<p class="DevIntertitulo"><strong><span style="font-family: 'Verdana','sans-serif';">Criando e configurando Oracle Data Guard 12C.</span></strong></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Após feito toda parte de infraestrutura, vamos iniciar a criação do Data Guard.</span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">No banco dados primário no DG1, vamos habilitar o archivelog mode.</span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Para você pode checar o modo de arquivamento do se o seu banco, através da seguinte consulta:</span></p>
<p>SQL&gt; SELECT LOG_MODE FROM V$DATABASE;</p>
<p><span style="font-size: 8pt;">LOG_MODE</span></p>
<p><span style="font-size: 8pt;">&#8212;&#8212;&#8212;&#8212;</span></p>
<p><span style="font-size: 8pt;">NOARCHIVELOG</span></p>
<p>&nbsp;</p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';">Antes de ativar o arquivamento do banco de dados, vamos certificar o status do nosso listener e do próprio banco de dados.</span></p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC21.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5049" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC21-300x225.png" alt="VMC21" width="300" height="225" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC21-300x225.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC21-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC21.png 673w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt;"><strong> [oracle@db01dg ~]$ sqlplus / as sysdba </strong></span></p>
<p><span style="font-size: 10pt;">SQL*Plus: Version 12.1.0.1.0 &#8211; Production on 25-SEP-2015 14:35:22 </span></p>
<p><span style="font-size: 10pt;">Copyright (c) 1991, 2013, Oracle.  All rights reserved. Connected to an idle instance. </span></p>
<p><strong><span style="font-size: 10pt;">SQL&gt; startup</span></strong></p>
<p><span style="font-size: 10pt;">ORACLE instance started. </span></p>
<p><span style="font-size: 10pt;">Total System Global Area 1853947904 bytes</span></p>
<p><span style="font-size: 10pt;">Fixed Size                 2229384 bytes </span></p>
<p><span style="font-size: 10pt;">Variable Size            452987768 bytes</span></p>
<p><span style="font-size: 10pt;">Database Buffers       1392508928 bytes</span></p>
<p><span style="font-size: 10pt;">Redo Buffers               6221824 bytes</span></p>
<p><span style="font-size: 10pt;">Database mounted.</span></p>
<p><span style="font-size: 10pt;">Database opened.</span></p>
<p><span style="font-size: 10pt;">SQL&gt; </span></p>
<p>&nbsp;</p>
<p>Com o database primário iniciado, vamos criar o diretório para onde os archives logs gerados pelo banco será salvo.</p>
<p>&nbsp;</p>
<p><strong>SQL&gt; !mkdir -p /oracle/arch</strong></p>
<p>&nbsp;</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Precisamos agora, definir o formato que será gravado o nosso arquivo de log no disco e a sua localização, temos para isso dois parâmetros: o log_archive_format e log_archive_dest_1.  </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;"><strong>SQL&gt; alter system set log_archive_format=&#8217;orcl_%t_%s_%r.arc&#8217; scope=spfile; </strong></span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;"><strong>System altered. </strong></span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;"><strong>SQL&gt; alter system set log_archive_dest_1=&#8217;LOCATION=/oracle/arch&#8217; scope=spfile; </strong></span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;"><strong>System altered.</strong></span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Com todas as configurações feitas, vamos agora ativar o modo de ARCHIVELOG. Para que isso é necessário baixar e subir a instância do banco Oracle.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong><span style="font-size: 10pt;">SQL&gt; shut immediate</span></strong></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Database closed.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Database dismounted.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">ORACLE instance shut down.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;"> SQL&gt; startup mount</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">ORACLE instance started.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Total System Global Area 1853947904 bytes</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Fixed Size                 2229384 bytes</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Variable Size            452987768 bytes</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Database Buffers       1392508928 bytes</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Redo Buffers               6221824 bytes</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Database mounted. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong><span style="font-size: 10pt;">SQL&gt; alter database archivelog;</span></strong></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;"> Database altered. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong><span style="font-size: 10pt;">SQL&gt; alter database open; </span></strong></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Database altered. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">SQL&gt; archive log list</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Database log mode Archive Mode</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Automatic archival            Enabled</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Archive destination           /oracle/arch</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Oldest online log sequence     1</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Next log sequence to archive   3</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">Current log sequence           3</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Agora precisamos habilitar o modo de FORCE LOGGING no banco de dados Oracle, todas as mudanças que ocorrem no banco de dados são gerados logs, exceto para as tabelas e tablespaces temporários. Isso é fundamental para o Oracle Data Guard, pois assegura que toda transação efetivada (commit) pode ser capturada através dos arquivos de log do Oracle (redo ou archive).</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 12pt;">Podemos ativar o modo de FORCE LOGGING da seguinte maneira:</span></p>
<p><span style="font-size: 10pt;"><strong>alter database force logging;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>select force_logging from v$database;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>SQL&gt; select force_logging from v$database;</strong></span></p>
<p><span style="font-size: 10pt;">FOR</span><br />
<span style="font-size: 10pt;">&#8212;</span><br />
<span style="font-size: 10pt;">YES</span></p>
<p>Agora precisamos criar os arquivos de STANDBY REDO para o ambiente,  o Oracle Data Guard pode recuperar e aplicar mais dados do Standby Redo Log do que no convencional Redo Log, por isso a criação de SRL se faz necessária quando estamos montando um Oracle Data Guard.</p>
<p>&nbsp;</p>
<p>Com a formula seguinte, é possível determinar o número apropriado dos SRL:</p>
<p>(maximum number of logfiles for each thread + 1) * maximum number of threads</p>
<p>Para o nosso caso: (3 + 1) * 1 = 4</p>
<p>&nbsp;</p>
<p>É necessário também que o tamanho do SRL seja exatamente igual ao do Redo Log presente no seu banco, que no nosso ambiente é 100M.</p>
<p>&nbsp;</p>
<p>Vamos então adicionar os 4 SRL para o database primário:</p>
<p><strong><span style="font-size: 10pt;">alter database add standby logfile group 4 &#8216;/oracle/oradata/DG1/redo_st04.log&#8217; size 100M;  </span></strong></p>
<p><strong><span style="font-size: 10pt;">alter database add standby logfile group 5 &#8216;/oracle/oradata/DG1/redo_st05.log&#8217; size 100M; </span></strong></p>
<p><strong><span style="font-size: 10pt;">alter database add standby logfile group 6 &#8216;/oracle/oradata/DG1/redo_st06.log&#8217; size 100M; </span></strong></p>
<p><strong><span style="font-size: 10pt;">alter database add standby logfile group 7  &#8216;/oracle/oradata/DG1/redo_st07.log&#8217; size 100M; </span></strong></p>
<p><strong><span style="font-size: 10pt;">select group#, sequence#, archived, status from v$standby_log;</span></strong></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC23.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5053" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC23-300x95.png" alt="VMC23" width="300" height="95" /></a></p>
<p class="DevCorpo" style="text-indent: 36.0pt;">Agora vamos configurar os parâmetros de inicialização do ambiente no DG1.</p>
<p>Para uma configuração simples de Oracle Data Guard, basicamente precisamos mudar os 8 parâmetros de inicialização abaixo:<br />
<span style="font-size: 10pt;"><strong>alter system set LOG_ARCHIVE_CONFIG=&#8217;DG_CONFIG=(DG1,DG2ST)&#8217;;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>alter system set LOG_ARCHIVE_DEST_1=&#8217;LOCATION=/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DG1&#8242;;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>alter system set LOG_ARCHIVE_DEST_2=&#8217;SERVICE=DG2ST LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DG2ST&#8217;;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>alter system set FAL_SERVER=DG2ST;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>alter system set FAL_CLIENT=DG1;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>alter system set DB_FILE_NAME_CONVERT=&#8217;/oracle/oradata/DG2ST&#8217;,&#8217;/oracle/oradata/DG1&#8242; scope=spfile;</strong></span></p>
<p><span style="font-size: 10pt;"><strong>alter system set LOG_FILE_NAME_CONVERT=&#8217;/oracle/oradata/DG2ST&#8217;,&#8217;/oracle/oradata/DG1&#8242; scope=spfile;</strong></span></p>
<p>Segue a explicação de cada um deles:</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong> </strong><strong>LOG_ARCHIVE_CONFIG</strong>: Habita ou desabilita o comportamento de enviar as mensagens do redo log para o destino. Com a opção DG_CONFIG, podemos definir um range de até 9 destinos, definindo através do DB_UNIQUE_NAME de cada um deles.</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong>LOG_ARCHIVE_DEST_1</strong>: Especifica o caminho do primeiro destino de archive do banco de dados. No nosso caso ele será gravado no caminho “/oracle/arch” do servidor do banco primário. A opção VALID_FOR define como será gravado os dados.</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong>LOG_ARCHIVE_DEST_2:</strong> Esse parâmetro, defini o segundo destino de archive. Nesse parâmetro que concentra a mágica do Oracle Data Guard, diferente com o que fizemos no primeiro destino (LOG_ARCHIVE_DEST_1), vamos fazer com que o segundo destino de archive do banco primário seja gravado no primeiro destino de archive do banco standby. Veja que é exatamente o que definimos nesse parâmetro, pedidos para o LGWR escrever os dados de log através do serviço chamado “DG2ST” para o banco de dados “DG2ST”.</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"> <strong>LOG_ARCHIVE_DEST_STATE_1:</strong> Com esse parâmetro, apenas definimos que o primeiro destino de archive está habitado. Por enquanto o segundo destino de archive (LOG_ARCHIVE_DEST_STATE_2) que levará os dados de log para o Data Guard, matemos desativado.</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong>FAL_SERVER e FAL_CLIENT</strong>: São parâmetros de inicialização usados para o FAL (fetch archive log), ou seja é utilizado para a detecção e resolução dos destinos do Data Guard. Basicamente, o no banco primário o FAL_SERVER será o TNS service name do banco standby e vice-versa.</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong>DB_FILE_NAME_CONVERT: </strong>Ele não é mandatório para o Data Guard, na verdade sua função não é nem para o Data Guard, ele é apenas utilizado no momento do recovery. Esse parâmetro como o nome diz converte o nome do datafile e tempfile do primário database para o correspondente caminho no standby database, é utíl muito útil no momento do recover, pois assim podemos renomear os datafiles facilmente. No nosso caso, vamos converter todos os datafiles que estão no caminho “/oracle/oradata/DG1” no primário database para o novo caminho “/oracle/oradata/DG2ST” no standby database.<strong> </strong></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong>LOG_FILE_NAME_CONVERT: </strong>O parâmetro LOG_FILE_NAME_CONVERT faz exatamente o que o DB_FILE_NAME_CONVERT faz, porém apenas com redo logs.<strong>  </strong>Agora vamos fazer o backup do banco de dados no DG1. Com todas as configurações feitas, precisamos agora realizar um backup do banco primário. O backup será feito através do RMAN no seguinte caminho: “/oracle/backup/”</p>
<p class="DevCorpo" style="text-indent: 36.0pt;">Siga os passos abaixo:</p>
<p><span style="font-size: 8pt;"><strong>[oracle@db01dg ~]$ mkdir -p /oracle/backup/</strong></span><br />
<span style="font-size: 8pt;"><strong>[oracle@db01dg ~]$ rman target /</strong></span></p>
<p><span style="font-size: 8pt;"><strong>Recovery Manager: Release 12.1.0.1.0 &#8211; Production on Fri Sep 25 14:59:17 2015</strong></span></p>
<p><span style="font-size: 8pt;"><strong>Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.</strong></span></p>
<p><span style="font-size: 8pt;"><strong>connected to target database: DG1 (DBID=1872722065)</strong></span></p>
<p><span style="font-size: 8pt;"><strong>RMAN&gt; run { </strong></span><br />
<span style="font-size: 8pt;"><strong>2&gt; allocate channel c1 type disk;</strong></span><br />
<span style="font-size: 8pt;"><strong>3&gt; allocate channel c2 type disk; </strong></span><br />
<span style="font-size: 8pt;"><strong>4&gt; backup database format &#8216;/oracle/backup/%d_%s_%p_%U.bkp&#8217;; </strong></span><br />
<span style="font-size: 8pt;"><strong>5&gt; backup archivelog all format &#8216;/oracle/backup/ARCH_%d_%s_%p_%U.bkp&#8217;;</strong></span><br />
<span style="font-size: 8pt;"><strong>6&gt; backup current controlfile for standby format &#8216;/oracle/backup/control_%d_%U.bkp&#8217;;</strong></span><br />
<span style="font-size: 8pt;"><strong>7&gt; }</strong></span></p>
<p><span style="font-size: 8pt;"><strong>using target database control file instead of recovery catalog</strong></span><br />
<span style="font-size: 8pt;"><strong>allocated channel: c1 </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: SID=47 device type=DISK</strong></span></p>
<p><span style="font-size: 8pt;"><strong>allocated channel: c2</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: SID=43 device type=DISK</strong></span></p>
<p><span style="font-size: 8pt;"><strong>Starting backup at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: starting full datafile backup set</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: specifying datafile(s) in backup set</strong></span><br />
<span style="font-size: 8pt;"><strong>input datafile file number=00001 name=/oracle/oradata/DG1/system01.dbf</strong></span><br />
<span style="font-size: 8pt;"><strong>input datafile file number=00006 name=/oracle/oradata/DG1/users01.dbf </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: starting piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: starting full datafile backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: specifying datafile(s) in backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>input datafile file number=00003 name=/oracle/oradata/DG1/sysaux01.dbf</strong></span><br />
<span style="font-size: 8pt;"><strong>input datafile file number=00004 name=/oracle/oradata/DG1/undotbs01.dbf</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: starting piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: finished piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>piece handle=/oracle/backup/DG1_1_1_01qi21dp_1_1.bkp tag=TAG20150925T150321 comment=NONE</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: backup set complete, elapsed time: 00:01:55 </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: starting full datafile backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: specifying datafile(s) in backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: finished piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>piece handle=/oracle/backup/DG1_2_1_02qi21dq_1_1.bkp tag=TAG20150925T150321 comment=NONE</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: backup set complete, elapsed time: 00:01:55 </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: starting full datafile backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: specifying datafile(s) in backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>including current SPFILE in backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: starting piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>including current control file in backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: starting piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: finished piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>piece handle=/oracle/backup/DG1_4_1_04qi21hd_1_1.bkp tag=TAG20150925T150321 comment=NONE</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: backup set complete, elapsed time: 00:00:01 </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: finished piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>piece handle=/oracle/backup/DG1_3_1_03qi21hd_1_1.bkp tag=TAG20150925T150321 comment=NONE</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: backup set complete, elapsed time: 00:00:01 </strong></span><br />
<span style="font-size: 8pt;"><strong>Finished backup at 25-SEP-15</strong></span></p>
<p><span style="font-size: 8pt;"><strong>Starting backup at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>current log archived </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: starting archived log backup set</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: specifying archived log(s) in backup set</strong></span><br />
<span style="font-size: 8pt;"><strong>input archived log thread=1 sequence=2 RECID=1 STAMP=891354582</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: starting piece 1 at 25-SEP-15 </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: starting archived log backup set </strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: specifying archived log(s) in backup set</strong></span><br />
<span style="font-size: 8pt;"><strong>input archived log thread=1 sequence=3 RECID=2 STAMP=891356064</strong></span><br />
<span style="font-size: 8pt;"><strong>input archived log thread=1 sequence=4 RECID=3 STAMP=891356721</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: starting piece 1 at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: finished piece 1 at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>piece handle=/oracle/backup/ARCH_DG1_5_1_05qi21hi_1_1.bkp tag=TAG20150925T150522 comment=NONE</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: backup set complete, elapsed time: 00:00:15</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: finished piece 1 at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>piece handle=/oracle/backup/ARCH_DG1_6_1_06qi21hi_1_1.bkp tag=TAG20150925T150522 comment=NONE</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c2: backup set complete, elapsed time: 00:00:15</strong></span><br />
<span style="font-size: 8pt;"><strong>Finished backup at 25-SEP-15</strong></span></p>
<p><span style="font-size: 8pt;"><strong>Starting backup at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: starting full datafile backup set</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: specifying datafile(s) in backup set</strong></span><br />
<span style="font-size: 8pt;"><strong>including standby control file in backup set</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: starting piece 1 at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: finished piece 1 at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>piece handle=/oracle/backup/control_DG1_07qi21i2_1_1.bkp tag=TAG20150925T150538 comment=NONE</strong></span><br />
<span style="font-size: 8pt;"><strong>channel c1: backup set complete, elapsed time: 00:00:01</strong></span><br />
<span style="font-size: 8pt;"><strong>Finished backup at 25-SEP-15</strong></span><br />
<span style="font-size: 8pt;"><strong>released channel: c1</strong></span><br />
<span style="font-size: 8pt;"><strong>released channel: c2</strong></span></p>
<p><span style="font-size: 8pt;"><strong>RMAN&gt;</strong></span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;">Agora devemos criar uma cópia do arquivo de inicialização do nosso banco primário, a cópia deve ser feita no mesmo caminho do backup que acabamos de fazer, isso porque iremos mover toda essa pasta para o servidor do banco DG2.</p>
<p><strong><span style="font-size: 10pt;">[oracle@db01dg ~]$ sqlplus / as sysdba</span></strong></p>
<p><span style="font-size: 10pt;">SQL*Plus: Version 12.1.0.1.0 &#8211; Production on 25-SEP-2015 14:35:22</span></p>
<p><span style="font-size: 10pt;">Copyright (c) 1991, 2013, Oracle. All rights reserved.</span></p>
<p><strong><span style="font-size: 10pt;">SQL&gt; create pfile=&#8217;/oracle/backup/initDG2.ora&#8217; from spfile;</span></strong></p>
<p><span style="font-size: 10pt;">File created.</span></p>
<p>&nbsp;</p>
<p>Agora devemos realizar a cópia do arquivo de senha para o servidor DG2.</p>
<p><strong><span style="font-size: 10pt;">cd $ORACLE_HOME/dbs</span></strong><br />
<span style="font-size: 10pt;">[oracle@db01dg ~]$<strong> scp orapwDG1 db02dg:/oracle/12.1.0/dbs/orapwDG2</strong></span><br />
<span style="font-size: 10pt;">oracle@db02dg password: ******* orapwDG1                          100% 96KB 96.0KB/s 00:00</span></p>
<p>&nbsp;</p>
<p>O Oracle Data Guard é totalmente configurado para ser executado em cima do Oracle NET. Toda sua comunicação com os bancos de DG1 e DG2 é feito através do serviços configurados no TNS. No nosso caso, assim como foi configurado os parâmetros  acima, precisamos ter os serviços “DG1” e “DG2” em ambas as máquinas.</p>
<p><span style="font-size: 10pt;">[oracle@db01dg ~]<strong> cd $ORACLE_HOME/network/admin</strong></span><br />
<span style="font-size: 10pt;">[oracle@db01dg admin]$ <strong>vi tnsnames.ora</strong></span></p>
<p>Inclua estas entradas no arquivo do TNSNAMES<br />
<strong><span style="font-size: 10pt;">DG1 =</span></strong><br />
<strong><span style="font-size: 10pt;"> (DESCRIPTION =</span></strong><br />
<strong><span style="font-size: 10pt;"> (ADDRESS = (PROTOCOL = TCP)(HOST = db01dg)(PORT = 1521))</span></strong><br />
<strong><span style="font-size: 10pt;"> (CONNECT_DATA =</span></strong><br />
<strong><span style="font-size: 10pt;"> (SERVER = DEDICATED)</span></strong><br />
<strong><span style="font-size: 10pt;"> (SERVICE_NAME = DG1)</span></strong><br />
<strong><span style="font-size: 10pt;"> )</span></strong><br />
<strong><span style="font-size: 10pt;"> )</span></strong><br />
<strong><span style="font-size: 10pt;">DG2ST =</span></strong><br />
<strong><span style="font-size: 10pt;"> (DESCRIPTION =</span></strong><br />
<strong><span style="font-size: 10pt;"> (ADDRESS = (PROTOCOL = TCP)(HOST = db02dg)(PORT = 1521))</span></strong><br />
<strong><span style="font-size: 10pt;"> (CONNECT_DATA =</span></strong><br />
<strong><span style="font-size: 10pt;"> (SERVER = DEDICATED)</span></strong><br />
<strong><span style="font-size: 10pt;"> (SERVICE_NAME = DG2ST)</span></strong><br />
<strong><span style="font-size: 10pt;"> )</span></strong><br />
)</p>
<p>&nbsp;</p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';">Após feito isso salve o arquivo e saia com o comando :wq</span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';">Agora vamos realizar um teste de conectividade. </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt;">[oracle@db01dg admin]$ <strong>tnsping DG1</strong></span></p>
<p><span style="font-size: 10pt;">TNS Ping Utility for Linux: Version 12.1.0.1.0 &#8211; Production on 25-SEP-2015 14:33:22</span></p>
<p><span style="font-size: 10pt;">Copyright (c) 1991, 2013, Oracle. All rights reserved.</span></p>
<p><span style="font-size: 10pt;">Used parameter files:</span></p>
<p><span style="font-size: 10pt;">Used TNSNAMES adapter to resolve the alias</span><br />
<span style="font-size: 10pt;">Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db01dg)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DG1)))</span></p>
<p><span style="font-size: 10pt;">[oracle@db01dg admin]$ <strong>tnsping DG2ST</strong></span></p>
<p><span style="font-size: 10pt;">TNS Ping Utility for Linux: Version 12.1.0.1.0 &#8211; Production on 25-SEP-2015 14:33:29</span></p>
<p><span style="font-size: 10pt;">Copyright (c) 1991, 2013, Oracle. All rights reserved.</span></p>
<p><span style="font-size: 10pt;">Used parameter files:</span></p>
<p><span style="font-size: 10pt;">Used TNSNAMES adapter to resolve the alias</span><br />
<span style="font-size: 10pt;">Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db02dg)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DG2ST)))</span></p>
<p>&nbsp;</p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';">Lembrando que na máquina DG2 o serviço do LISTENER deve estar iniciado.</span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Agora temos agora o nosso banco primário DG1 todo configurado e pronto para iniciar o standby, precisamos apenas mover o backup e o arquivo de inicialização que estão no nosso servidor primário para o banco standby DG2.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><strong>[oracle@db01dg admin]$ cd /oracle/backup</strong></p>
<p class="DevCorpo" style="text-indent: 36.0pt;">[oracle@db01dg backup]$ <strong>ls -ltr</strong><br />
total 1383856<br />
-rw-r&#8212;&#8211;. 1 oracle oinstall 607723520 Sep 25 15:05 DG1_2_1_02qi21dq_1_1.bkp<br />
-rw-r&#8212;&#8211;. 1 oracle oinstall 685727744 Sep 25 15:05 DG1_1_1_01qi21dp_1_1.bkp<br />
-rw-r&#8212;&#8211;. 1 oracle oinstall 98304 Sep 25 15:05 DG1_4_1_04qi21hd_1_1.bkp<br />
-rw-r&#8212;&#8211;. 1 oracle oinstall 10092544 Sep 25 15:05 DG1_3_1_03qi21hd_1_1.bkp<br />
-rw-r&#8212;&#8211;. 1 oracle oinstall 51418112 Sep 25 15:05 ARCH_DG1_6_1_06qi21hi_1_1.bkp<br />
-rw-r&#8212;&#8211;. 1 oracle oinstall 51900416 Sep 25 15:05 ARCH_DG1_5_1_05qi21hi_1_1.bkp<br />
-rw-r&#8212;&#8211;. 1 oracle oinstall 10092544 Sep 25 15:05 control_DG1_07qi21i2_1_1.bkp<br />
-rw-r&#8211;r&#8211;. 1 oracle oinstall 1379 Sep 25 15:11 initDG2ST.ora<br />
[oracle@db01dg backup]$</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Para que a restauração seja mais fácil, sem a necessidade de catalogar os backup, vamos criar o mesmo diretório no servidor DG2.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">[oracle@db01dg backup]$ <strong>ssh oracle@db02dg mkdir -p /oracle/backup</strong></span><br />
<span style="font-size: 10pt;">                oracle@db02dg&#8217;s password: *****</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Com o diretório criado, vamos mover todos os arquivos da pasta /oracle/backup/ para o servidor DG2.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">[oracle@db01dg backup]$ <strong>scp * db02dg:`pwd`</strong></span><br />
<span style="font-size: 10pt;">oracle@db02dg&#8217;s password: *******</span><br />
<span style="font-size: 10pt;">ARCH_DG1_5_1_05qi21hi_1_1.bkp 100% 49MB 49.5MB/s 00:00</span><br />
<span style="font-size: 10pt;">ARCH_DG1_6_1_06qi21hi_1_1.bkp 100% 49MB 49.0MB/s 00:01</span><br />
<span style="font-size: 10pt;">control_DG1_07qi21i2_1_1.bkp 100% 9856KB 9.6MB/s 00:00</span><br />
<span style="font-size: 10pt;">DG1_1_1_01qi21dp_1_1.bkp 100% 654MB 19.2MB/s 00:34</span><br />
<span style="font-size: 10pt;">DG1_2_1_02qi21dq_1_1.bkp 100% 580MB 17.1MB/s 00:34</span><br />
<span style="font-size: 10pt;">DG1_3_1_03qi21hd_1_1.bkp 100% 9856KB 9.6MB/s 00:01</span><br />
<span style="font-size: 10pt;">DG1_4_1_04qi21hd_1_1.bkp 100% 96KB 96.0KB/s 00:00</span><br />
<span style="font-size: 10pt;">initDG2ST.ora 100% 1379 1.4KB/s 00:00</span><br />
<span style="font-size: 10pt;">[oracle@db01dg backup]$</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Agora que finalizamos toda configuração no DG1 vamos fazer a configuração do DG2 – Standby. </span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Vamos editar o arquivo initDG2.ora para acrescentarmos alguns parâmetros necessários do Oracle Data Guard.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';"> </span><span style="font-family: 'Verdana','sans-serif';">Para isso, conecte na máquina de standby DG2 e faça as alterações como abaixo, observe que os parâmetros em negrito, são os parâmetros necessários para o Data Guard.</span></p>
<p><span style="font-size: 10pt;">[oracle@db02dg~] $ <strong>cd /oracle/backup</strong></span><br />
<span style="font-size: 10pt;">[oracle@db02dg backup]$ <strong>ls -ltr</strong></span><br />
<span style="font-size: 10pt;">total 1383856</span><br />
<span style="font-size: 10pt;">-rw-r&#8212;&#8211;. 1 oracle oinstall 607723520 Sep 25 15:05 DG1_2_1_02qi21dq_1_1.bkp</span><br />
<span style="font-size: 10pt;">-rw-r&#8212;&#8211;. 1 oracle oinstall 685727744 Sep 25 15:05 DG1_1_1_01qi21dp_1_1.bkp</span><br />
<span style="font-size: 10pt;">-rw-r&#8212;&#8211;. 1 oracle oinstall 98304 Sep 25 15:05 DG1_4_1_04qi21hd_1_1.bkp</span><br />
<span style="font-size: 10pt;">-rw-r&#8212;&#8211;. 1 oracle oinstall 10092544 Sep 25 15:05 DG1_3_1_03qi21hd_1_1.bkp</span><br />
<span style="font-size: 10pt;">-rw-r&#8212;&#8211;. 1 oracle oinstall 51418112 Sep 25 15:05 ARCH_DG1_6_1_06qi21hi_1_1.bkp</span><br />
<span style="font-size: 10pt;">-rw-r&#8212;&#8211;. 1 oracle oinstall 51900416 Sep 25 15:05 ARCH_DG1_5_1_05qi21hi_1_1.bkp</span><br />
<span style="font-size: 10pt;">-rw-r&#8212;&#8211;. 1 oracle oinstall 10092544 Sep 25 15:05 control_DG1_07qi21i2_1_1.bkp</span><br />
<span style="font-size: 10pt;">-rw-r&#8211;r&#8211;. 1 oracle oinstall 1379 Sep 25 15:11 initDG2ST.ora</span></p>
<p><span style="font-size: 10pt;">[oracle@db01dg backup]$ vi initstdby.ora</span></p>
<p><span style="font-size: 10pt;">*.audit_file_dest=&#8217;/oracle/admin/DG2ST/adump&#8217;</span><br />
<span style="font-size: 10pt;">*.compatible=&#8217;12.1.0.0.0&#8242;</span><br />
<span style="font-size: 10pt;">*.control_files=&#8217;/oracle/oradata/DG2ST/control01.ctl&#8217;,&#8217;/oracle/oradata/DG2ST/control02.ctl&#8217;</span><br />
<span style="font-size: 10pt;">*.db_block_size=8192</span><br />
<span style="font-size: 10pt;">*.diagnostic_dest=&#8217;/oracle&#8217;</span><br />
<span style="font-size: 10pt;">*.log_archive_format=&#8217;orcl_%t_%s_%r.arc&#8217;</span><br />
<span style="font-size: 10pt;">*.open_cursors=300</span><br />
<span style="font-size: 10pt;">*.pga_aggregate_target=616562688</span><br />
<span style="font-size: 10pt;">*.sga_target=1849688064</span><br />
<span style="font-size: 10pt;">*.undo_tablespace=&#8217;UNDOTBS1&#8242;</span><br />
<strong><span style="font-size: 10pt;">*.db_name=DG1</span></strong><br />
<strong><span style="font-size: 10pt;">*.db_unique_name=DG2ST</span></strong><br />
<strong><span style="font-size: 10pt;">*.db_file_name_convert=&#8217;/oracle/oradata/DG1&#8242;,&#8217;/oracle/oradata/DG2ST&#8217;</span></strong><br />
<strong><span style="font-size: 10pt;">*.log_file_name_convert=&#8217;/oracle/oradata/DG1&#8242;,&#8217;/oracle/oradata/DG2ST&#8217;</span></strong><br />
<strong><span style="font-size: 10pt;">*.log_archive_config=&#8217;DG_CONFIG=(DG1,DG2ST)&#8217;</span></strong><br />
<strong><span style="font-size: 10pt;">*.log_archive_dest_1=&#8217;LOCATION=/oracle/archive/DG2ST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DG2ST&#8217;</span></strong><br />
<strong><span style="font-size: 10pt;">*.log_archive_dest_2=&#8217;SERVICE=DG1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DG1&#8242;</span></strong><br />
<strong><span style="font-size: 10pt;">*.log_archive_dest_state_1=&#8217;ENABLE&#8217;</span></strong><br />
<strong><span style="font-size: 10pt;">*.fal_client=&#8217;DG2ST&#8217;</span></strong><br />
<strong><span style="font-size: 10pt;">*.fal_server=&#8217;DG1&#8242;</span></strong><br />
<strong><span style="font-size: 10pt;">*.remote_login_passwordfile=&#8217;EXCLUSIVE&#8217;</span></strong><br />
<strong><span style="font-size: 10pt;">*.standby_file_management=auto</span></strong></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Assim como fizemos na máquina DG1 (servidor primário), temos que configurar da mesma maneira no servidor DG2 o TNSNAMES.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;"><span style="font-family: 'Verdana','sans-serif';"> </span>[oracle@db02dg ~] <strong>cd $ORACLE_HOME/network/admin</strong></span><br />
<span style="font-size: 10pt;">[oracle@db02dg admin]$<strong> vi tnsnames.ora</strong></span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;">Inclua estas entradas no arquivo do TNSNAMES</p>
<p><span style="font-size: 10pt;"><strong>DG1 =</strong></span><br />
<span style="font-size: 10pt;"><strong> (DESCRIPTION =</strong></span><br />
<span style="font-size: 10pt;"><strong> (ADDRESS = (PROTOCOL = TCP)(HOST = db01dg)(PORT = 1521))</strong></span><br />
<span style="font-size: 10pt;"><strong> (CONNECT_DATA =</strong></span><br />
<span style="font-size: 10pt;"><strong> (SERVER = DEDICATED)</strong></span><br />
<span style="font-size: 10pt;"><strong> (SERVICE_NAME = DG1)</strong></span><br />
<span style="font-size: 10pt;"><strong> )</strong></span><br />
<span style="font-size: 10pt;"><strong> )</strong></span><br />
<span style="font-size: 10pt;"><strong>DG2ST =</strong></span><br />
<span style="font-size: 10pt;"><strong> (DESCRIPTION =</strong></span><br />
<span style="font-size: 10pt;"><strong> (ADDRESS = (PROTOCOL = TCP)(HOST = db02dg)(PORT = 1521))</strong></span><br />
<span style="font-size: 10pt;"><strong> (CONNECT_DATA =</strong></span><br />
<span style="font-size: 10pt;"><strong> (SERVER = DEDICATED)</strong></span><br />
<span style="font-size: 10pt;"><strong> (SERVICE_NAME = DG2ST)</strong></span><br />
<span style="font-size: 10pt;"><strong> )</strong></span><br />
<span style="font-size: 10pt;"><strong> )</strong></span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';">Após feito isso salve o arquivo e saia com o comando :wq</span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';"> </span></p>
<p class="DevCorpo" style="text-align: left; text-indent: 36.0pt;" align="left"><span style="font-family: 'Verdana','sans-serif';">Agora vamos realizar um teste de conectividade. </span></p>
<p><span style="font-size: 10pt;">[oracle@db02dg admin]$ <strong>tnsping DG1</strong></span></p>
<p><span style="font-size: 10pt;">TNS Ping Utility for Linux: Version 12.1.0.1.0 &#8211; Production on 25-SEP-2015 14:33:22</span></p>
<p><span style="font-size: 10pt;">Copyright (c) 1991, 2013, Oracle. All rights reserved.</span></p>
<p><span style="font-size: 10pt;">Used parameter files:</span></p>
<p><span style="font-size: 10pt;">Used TNSNAMES adapter to resolve the alias</span><br />
<span style="font-size: 10pt;">Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db01dg)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DG1)))</span></p>
<p><span style="font-size: 10pt;">[oracle@db02dg admin]$ <strong>tnsping DG2ST</strong></span></p>
<p><span style="font-size: 10pt;">TNS Ping Utility for Linux: Version 12.1.0.1.0 &#8211; Production on 25-SEP-2015 14:33:29</span></p>
<p><span style="font-size: 10pt;">Copyright (c) 1991, 2013, Oracle. All rights reserved.</span></p>
<p><span style="font-size: 10pt;">Used parameter files:</span></p>
<p><span style="font-size: 10pt;">Used TNSNAMES adapter to resolve the alias</span><br />
<span style="font-size: 10pt;">Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db02dg)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DG2ST)))</span></p>
<p>&nbsp;</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Lembrando que na máquina DG2 o serviço do LISTENER deve estar iniciado.</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Agora para Para iniciar a instância DG2ST, precisamos dos seguintes diretórios criados:</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;">[oracle@db02dg ~]$ <strong>mkdir -p /oracle/admin/DG2ST/adump</strong></span></p>
<p class="DevCorpo" style="text-indent: 36pt;"><span style="font-size: 10pt;">[oracle@db02dg ~]$<strong> mkdir -p /oracle/oradata/DG2ST</strong></span></p>
<p class="DevCorpo" style="text-indent: 36pt;"><span style="font-size: 10pt;">[oracle@dg02dg ~]$ <strong>mkdir -p /oracle/arch</strong></span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Agora os passos necessários para iniciar a instância DG2ST em estado nomount. Primeiro, vamos criar o spfile através do arquivo pfile “/oracle/backup/initDG2ST.ora”.</span></p>
<p><span style="font-size: 10pt;">[oracle@dg02dg ~]$ <strong>echo $ORACLE_SID</strong></span><br />
<span style="font-size: 10pt;">D2GST</span></p>
<p><span style="font-size: 10pt;">[oracle@dg02dg ~]$<strong> sqlplus / as sysdba</strong></span></p>
<p><span style="font-size: 10pt;">SQL*Plus: Version 12.1.0.1.0 &#8211; Production on 25-SEP-2015 14:35:22</span></p>
<p><span style="font-size: 10pt;">Copyright (c) 1991, 2013, Oracle. All rights reserved.</span></p>
<p><span style="font-size: 10pt;">SQL&gt; <strong>create spfile from pfile=&#8217;/oracle/backup/initDG2ST.ora&#8217;;</strong></span></p>
<p><span style="font-size: 10pt;">File created.</span></p>
<p><span style="font-size: 10pt;">SQL&gt; <strong>startup nomount</strong></span><br />
<span style="font-size: 10pt;">ORACLE instance started.</span></p>
<p><span style="font-size: 10pt;">Total System Global Area 1853947904 bytes</span><br />
<span style="font-size: 10pt;">Fixed Size 2229384 bytes</span><br />
<span style="font-size: 10pt;">Variable Size 452987768 bytes</span><br />
<span style="font-size: 10pt;">Database Buffers 1392508928 bytes</span><br />
<span style="font-size: 10pt;">Redo Buffers 6221824 bytes</span></p>
<p>&nbsp;</p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-family: 'Verdana','sans-serif';">Com todas as configurações acima realizadas, vamos agora a restauração do banco DG1 para o standby DG2ST. A restauração será feita através do comando duplicate do RMAN, para isso precisamos estar conectados em ambos os bancos de dados (DG1 e DG2ST), isso é feito da seguinte maneira:</span></p>
<p class="DevCorpo" style="text-indent: 36.0pt;"><span style="font-size: 10pt;"><strong>$ rman target sys/oracle@DG1 auxiliary /</strong></span></p>
<p>Onde:</p>
<p><strong>target -&gt;</strong> Representa o nosso banco de dados destino, que no caso é o banco DG1 (database primário). A conexão será feita com o usuário com o usuário sys e senha oracle através do TNSNAME DG1.</p>
<p><strong>auxiliary -&gt;</strong> Representa o banco na máquina que estamos conectado, que no caso é a instância DG2ST, definido pela variável de ambiente ORACLE_SID. A conexão será feita pelo sistema operacional &#8220;/&#8221;.</p>
<p><span style="font-size: 10pt;">Recovery Manager: Release 12.1.0.1.0 &#8211; Production on Fri Sep 25 14:59:17 2015</span></p>
<p><span style="font-size: 10pt;">Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.</span></p>
<p><span style="font-size: 10pt;">connected to target database: DG1 (DBID=1872722065)</span><br />
<span style="font-size: 10pt;">connected to auxiliary database: DG2ST (not mounted)</span></p>
<p><span style="font-size: 10pt;">RMAN&gt; duplicate target database for standby;</span></p>
<p><span style="font-size: 10pt;">Starting Duplicate Db at 25-SEP-15</span><br />
<span style="font-size: 10pt;">using target database control file instead of recovery catalog</span><br />
<span style="font-size: 10pt;">allocated channel: ORA_AUX_DISK_1</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: SID=111 device type=DISK</span></p>
<p><span style="font-size: 10pt;">contents of Memory Script:</span><br />
<span style="font-size: 10pt;">{</span><br />
<span style="font-size: 10pt;"> restore clone standby controlfile;</span><br />
<span style="font-size: 10pt;">}</span><br />
<span style="font-size: 10pt;">executing Memory Script</span></p>
<p><span style="font-size: 10pt;">Starting restore at at 25-SEP-15</span><br />
<span style="font-size: 10pt;">using channel ORA_AUX_DISK_1</span></p>
<p><span style="font-size: 10pt;">channel ORA_AUX_DISK_1: starting datafile backup set restore</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restoring control file</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: reading from backup piece /oracle/backup/control_DG1_07o6ou86_1_1.bkp</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: piece handle=/oracle/backup/control_DG1_07o6ou86_1_1.bkp tag=TAG20130410T225358</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restored backup piece 1</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01</span><br />
<span style="font-size: 10pt;">output file name=/oracle/oradata/DG2ST/control01.ctl</span><br />
<span style="font-size: 10pt;">output file name=/oracle/oradata/DG2ST/control02.ctl</span><br />
<span style="font-size: 10pt;">Finished restore at at 25-SEP-15</span></p>
<p><span style="font-size: 10pt;">contents of Memory Script:</span><br />
<span style="font-size: 10pt;">{</span><br />
<span style="font-size: 10pt;"> sql clone &#8216;alter database mount standby database&#8217;;</span><br />
<span style="font-size: 10pt;">}</span><br />
<span style="font-size: 10pt;">executing Memory Script</span></p>
<p><span style="font-size: 10pt;">sql statement: alter database mount standby database</span></p>
<p><span style="font-size: 10pt;">contents of Memory Script:</span><br />
<span style="font-size: 10pt;">{</span><br />
<span style="font-size: 10pt;"> set newname for tempfile 1 to </span><br />
<span style="font-size: 10pt;"> &#8220;/oracle/oradata/DG2ST /temp01.dbf&#8221;;</span><br />
<span style="font-size: 10pt;"> switch clone tempfile all;</span><br />
<span style="font-size: 10pt;"> set newname for datafile 1 to </span><br />
<span style="font-size: 10pt;"> &#8220;/oracle/oradata/DG2ST /system01.dbf&#8221;;</span><br />
<span style="font-size: 10pt;"> set newname for datafile 2 to </span><br />
<span style="font-size: 10pt;"> &#8220;/oracle/oradata/DG2ST/sysaux01.dbf&#8221;;</span><br />
<span style="font-size: 10pt;"> set newname for datafile 3 to </span><br />
<span style="font-size: 10pt;"> &#8220;/oracle/oradata/DG2ST/undotbs01.dbf&#8221;;</span><br />
<span style="font-size: 10pt;"> set newname for datafile 4 to </span><br />
<span style="font-size: 10pt;"> &#8220;/oracle/oradata/DG2ST/users01.dbf&#8221;;</span><br />
<span style="font-size: 10pt;"> set newname for datafile 5 to </span><br />
<span style="font-size: 10pt;"> &#8220;/oracle/oradata/DG2ST/example01.dbf&#8221;;</span><br />
<span style="font-size: 10pt;"> restore</span><br />
<span style="font-size: 10pt;"> clone database</span><br />
<span style="font-size: 10pt;"> ;</span><br />
<span style="font-size: 10pt;">}</span><br />
<span style="font-size: 10pt;">executing Memory Script</span></p>
<p><span style="font-size: 10pt;">executing command: SET NEWNAME</span></p>
<p><span style="font-size: 10pt;">renamed tempfile 1 to /oracle/oradata/DG2ST/temp01.dbf in control file</span></p>
<p><span style="font-size: 10pt;">executing command: SET NEWNAME</span></p>
<p><span style="font-size: 10pt;">executing command: SET NEWNAME</span></p>
<p><span style="font-size: 10pt;">executing command: SET NEWNAME</span></p>
<p><span style="font-size: 10pt;">executing command: SET NEWNAME</span></p>
<p><span style="font-size: 10pt;">executing command: SET NEWNAME</span></p>
<p><span style="font-size: 10pt;">Starting restore at 25-SEP-15</span><br />
<span style="font-size: 10pt;">using channel ORA_AUX_DISK_1</span></p>
<p><span style="font-size: 10pt;">channel ORA_AUX_DISK_1: starting datafile backup set restore</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restoring datafile 00002 to /oracle/oradata/DG2ST/sysaux01.dbf</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restoring datafile 00003 to /oracle/oradata/DG2ST/undotbs01.dbf</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restoring datafile 00004 to /oracle/oradata/DG2ST/users01.dbf</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: reading from backup piece /oracle/backup/DG_1_2_1_02o6ou56_1_1.bkp</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: piece handle=/oracle/backup/DG1_2_1_02o6ou56_1_1.bkp tag=TAG20130410T225222</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restored backup piece 1</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:25</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: starting datafile backup set restore</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restoring datafile 00001 to /oracle/oradata/DG2ST/system01.dbf</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restoring datafile 00005 to /oracle/oradata/DG2ST/example01.dbf</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: reading from backup piece /oracle/backup/DG1_1_1_01o6ou56_1_1.bkp</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: piece handle=/oracle/backup/DG1_1_1_01o6ou56_1_1.bkp tag=TAG20130410T225222</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restored backup piece 1</span><br />
<span style="font-size: 10pt;">channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:55</span><br />
<span style="font-size: 10pt;">Finished restore at 25-SEP-15</span></p>
<p><span style="font-size: 10pt;">contents of Memory Script:</span><br />
<span style="font-size: 10pt;">{</span><br />
<span style="font-size: 10pt;"> switch clone datafile all;</span><br />
<span style="font-size: 10pt;">}</span><br />
<span style="font-size: 10pt;">executing Memory Script</span></p>
<p><span style="font-size: 10pt;">datafile 1 switched to datafile copy</span><br />
<span style="font-size: 10pt;">input datafile copy RECID=2 STAMP=812419999 file name=/oracle/oradata/DG2ST/system01.dbf</span><br />
<span style="font-size: 10pt;">datafile 2 switched to datafile copy</span><br />
<span style="font-size: 10pt;">input datafile copy RECID=3 STAMP=812419999 file name=/oracle/oradata/DG2ST/sysaux01.dbf</span><br />
<span style="font-size: 10pt;">datafile 3 switched to datafile copy</span><br />
<span style="font-size: 10pt;">input datafile copy RECID=4 STAMP=812419999 file name=/oracle/oradata/DG2ST/undotbs01.dbf</span><br />
<span style="font-size: 10pt;">datafile 4 switched to datafile copy</span><br />
<span style="font-size: 10pt;">input datafile copy RECID=5 STAMP=812419999 file name=/oracle/oradata/DG2ST/users01.dbf</span><br />
<span style="font-size: 10pt;">datafile 5 switched to datafile copy</span><br />
<span style="font-size: 10pt;">input datafile copy RECID=6 STAMP=812419999 file name=/oracle/oradata/DG2ST/example01.dbf</span><br />
<span style="font-size: 10pt;">Finished Duplicate Db at 25-SEP-15</span></p>
<p><span style="font-size: 10pt;">RMAN&gt;</span></p>
<p>&nbsp;</p>
<p>Restore finalizado com sucesso.</p>
<p>Vamos realmente conferir se o banco DG2ST restaurado está no modo STANDBY:</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt;">SQL&gt; select name, db_unique_name, database_role from v$database;</span></p>
<p><span style="font-size: 10pt;">NAME DB_UNIQUE_NAME DATABASE_ROLE</span><br />
<span style="font-size: 10pt;">&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;-</span><br />
<span style="font-size: 10pt;">DG1 DG2ST PHYSICAL STANDBY</span></p>
<p>&nbsp;</p>
<p>Show, nosso banco DG2ST está definido como PHYSICAL STANDBY.</p>
<p>Agora com a restauração completa do banco de dados DG2ST, temos agora que informar ao database primário (DG1) para começar a enviar os logs das alterações feitas para o banco DG2ST.</p>
<p>Isso é feito conforme o parâmetro log_archive_dest_state_2.</p>
<p>Agora, através desse segundo destino de archive habilitado, todas as alterações feitas no DG1 será automaticamente enviada para o banco DG2ST (database standby).</p>
<p>Com os logs sendo encaminhado no banco DG2ST, vamos informar ao Oracle Data Guard para que o banco DG2ST comece a trabalhar com esses logs que estão sendo encaminhado do banco DG1.</p>
<p>Ao executar os comandos abaixo, estamos solicitando para que o Data Guard inicie os processos background para que  automaticamente sejam restaurados os logs.</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt;">SQL&gt; show parameter instance_name</span></p>
<p><span style="font-size: 10pt;">NAME TYPE VALUE</span><br />
<span style="font-size: 10pt;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span><br />
<span style="font-size: 10pt;">instance_name string stdby</span></p>
<p><span style="font-size: 10pt;">SQL&gt; alter database recover managed standby database disconnect;</span></p>
<p><span style="font-size: 10pt;">Database altered.</span></p>
<p><span style="font-size: 10pt;">SQL&gt;</span></p>
<p>&nbsp;</p>
<p>Agora que fizemos isso, temos o nosso Data Guard pronto e habilitado.</p>
<p>Agora para finalizar vamos verificar o sincronismo do Data Guard está funcionando. Para isso, temos que checar se o destino de log 1 está na mesma sequência do destino de log 2, ou seja, cada sequência gerada no destino 1 (destino do banco DG1l) deverá gerar a mesma sequência no destino 2 (destino do banco DG2ST), garantindo assim que ambas estão sincronizadas.</p>
<p>Essa forma de monitorar, funciona apenas para o tipo do Data Guard que estamos criando, o tipo ASYNC. Existe a forma SYNC, que muda a forma de como monitorar também, mais isso fica para um próximo artigo, por enquanto basta saber que o Data Guard ASYNC deve gerar a mesma sequência no destino 1 como no destino 2.</p>
<p>Vamos verificar através da view v$archived_log, conforme query abaixo:</p>
<p>Deve ser rodado está query no DG1.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC23.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5056" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC23-300x203.png" alt="VMC23" width="300" height="203" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC23-300x203.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC23-90x60.png 90w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC23-95x64.png 95w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC23.png 658w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p>Observe que a partir da sequência 5, o Oracle está gerando a mesma sequência tanto no destino 1 como no destino 2. Isso se repete até o sequência 12, que é a última sequência gerada para o banco DG1.</p>
<p>Para validar a sincronização, podemos forçar a geração de uma nova sequência, execute o comando abaixo.</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt;"><strong>SQL&gt; alter system switch logfile;</strong></span></p>
<p>&nbsp;</p>
<p>Agora após feito isso, checamos novamente com a consulta acima, para verificar se a sequência 13 foi gerada no destino 1 e destino 2.</p>
<p>&nbsp;</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC24.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5057" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC24-300x215.png" alt="VMC24" width="300" height="215" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC24-300x215.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC24-475x342.png 475w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC24.png 672w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Olhe e veja a sequência 13 foi gerada em ambos os destino.</p>
<p>Agora repita o comando do switch do redo e veja como ficou a sequência 14:</p>
<p>&nbsp;</p>
<p><a href="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC25.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-5058" src="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC25-300x232.png" alt="VMC25" width="300" height="232" srcset="https://www.dbadutra.com/wp-content/uploads/2015/10/VMC25-300x232.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC25-45x35.png 45w, https://www.dbadutra.com/wp-content/uploads/2015/10/VMC25.png 662w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p>Uma outra de analisar e verificar a sincronia do seu Data Guard é através do arquivo de log do seu banco de dados, veja no banco DG1 a seguinte mensagem:</p>
<p>LNS: Standby redo logfile selected for thread 1 sequence 14 for destination LOG_ARCHIVE_DEST_2</p>
<p>Isso confirma que o processo LNS do banco DG1, capturou a sequência 14 da tread 1 e enviou para o destino LOG_ARCHIVE_DEST_2.</p>
<p>De um more no alert.log, para verificar a transação.</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt;">Thu Sep 25 00:17:30 2015</span><br />
<span style="font-size: 10pt;">Thread 1 advanced to log sequence 14 (LGWR switch)</span><br />
<span style="font-size: 10pt;"> Current log# 2 seq# 14 mem# 0: /oracle/oradata/DG1/redo02.log</span><br />
<span style="font-size: 10pt;">Thu Sep 25 00:17:30 2015</span><br />
<span style="font-size: 10pt;">Archived Log entry 20 added for thread 1 sequence 13 ID 0x4f860f89 dest 1:</span><br />
<span style="font-size: 10pt;">Thu Sep 25 00:17:30 2015</span><br />
<span style="font-size: 10pt;">LNS: Standby redo logfile selected for thread 1 sequence 14 for destination LOG_ARCHIVE_DEST_2</span></p>
<p>&nbsp;</p>
<p>Com o envio da sequência 14, confirmada pelo alert.log do banco DG1, temos no alert.log do DG2ST que o processo RFS capturou a sequência 14 aplicou com sucesso no banco DG2ST.</p>
<p><span style="font-size: 10pt;">Thu Sep 25 00:17:58 2015</span><br />
<span style="font-size: 10pt;">RFS[4]: Selected log 5 for thread 1 sequence 14 dbid 1334188681 branch 806407947</span><br />
<span style="font-size: 10pt;">Thu Sep 25 00:17:58 2015</span><br />
<span style="font-size: 10pt;">Archived Log entry 9 added for thread 1 sequence 14 ID 0x4f860f89 dest 1:</span><br />
<span style="font-size: 10pt;">Thu Sep 25 00:17:58 2015</span><br />
<span style="font-size: 10pt;">Media Recovery Log /oracle/arch/DG1_1_14_806407947.arc</span><br />
<span style="font-size: 10pt;">Media Recovery Waiting for thread 1 sequence 15</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 12pt;"><strong>Conclusões</strong></span></p>
<p><span style="font-size: 12pt;">        Bem amigos vimos a criação de um laboratório para Oracle Data Guard 12c, está é uma das formas de trabalhar com o Data Guard, se vocês quiserem apreender mais recomendo estudar as outras formas de configurar o Data Guard, como por exemplo a SYNC, Snapshot Data Guard e Active Data Guard.</span></p>
<p><span style="font-size: 12pt;">É muito importante também aprender os outros tipos de proteção (Maximum Availability. Maximum Performance e Maximum Protection) entender o que o Redo Transport Services pode ajudar na melhoria do seu Data Guard, assim como aprender a administrar melhor o seu Data Guard.</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 12pt;">Até a próxima!</span></p>
<p>André</p>
<p>BLOG DBADUTRA</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2015/10/instalando-oracle-data-guard-12c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4994</post-id>	</item>
	</channel>
</rss>
