<?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>19c &#8211; Blog DBA Dutra</title>
	<atom:link href="https://www.dbadutra.com/tag/19c/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbadutra.com</link>
	<description></description>
	<lastBuildDate>Thu, 03 Jun 2021 16:34:28 +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>Oracle Restart Database Upgrade 12c a 19c usando Autoupgrade.</title>
		<link>https://www.dbadutra.com/2021/06/oracle-restart-database-upgrade-12c-a-19c-usando-autoupgrade/</link>
					<comments>https://www.dbadutra.com/2021/06/oracle-restart-database-upgrade-12c-a-19c-usando-autoupgrade/#comments</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Thu, 03 Jun 2021 16:34:24 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[19c]]></category>
		<category><![CDATA[AutoUpgrade]]></category>
		<category><![CDATA[migração]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=5907</guid>

					<description><![CDATA[Hoje veremos um passo a passo, como atualizar um Oracle restart Database 12c para 19c. 1. Downloads de software &#160;JDK 8:&#160;https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html Oracle 19.3 Database and Grid Infrastructure:&#160;&#160; https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c Atualização de versão do banco de dados 19.11: Patch 32545013 Atualização de versão 19.11 da infraestrutura de grade: Patch 32545008 Autoupgrade https://support.oracle.com/epmos/faces/DocumentDisplay?id=2485457.1 2.  Pré-requisitos do Grid Infrastructure [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Hoje veremos um passo a passo, como atualizar um Oracle restart Database 12c para 19c.</p>



<h3 class="wp-block-heading">1. Downloads de software</h3>



<p>&nbsp;JDK 8:&nbsp;<a href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html">https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html</a></p>



<p>Oracle 19.3 Database and Grid Infrastructure:&nbsp;<a href="https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c">&nbsp; https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c</a></p>



<p>Atualização de versão do banco de dados 19.11: Patch 32545013</p>



<p>Atualização de versão 19.11 da infraestrutura de grade: Patch 32545008</p>



<p>Autoupgrade https://support.oracle.com/epmos/faces/DocumentDisplay?id=2485457.1</p>



<p></p>



<h3 class="wp-block-heading">2.  Pré-requisitos do Grid Infrastructure </h3>



<p>De acordo com o <a href="https://support.oracle.com/knowledge/Oracle%20Database%20Products/2539751_1.html">documento Oracle 2539751.1</a> , você deve aplicar o patch para corrigir o bug 21255373 no diretório home da Grid 12.1.0.2. Verifique se este patch já está aplica ao seu ambiente:</p>



<pre class="wp-block-preformatted">opatch lsinventory | grep 21255373</pre>



<p></p>



<p class="has-text-align-justify">Se você não o instalou, o patch 29176115 do GI PSU 12.1.0.2.190416 contém a correção para esse bug.</p>



<p></p>



<h3 class="wp-block-heading">3. Atualizar o Grid para 19.11</h3>



<p>Crie um diretório no Oracle Grid</p>



<pre class="wp-block-preformatted">mkdir -p /u01/app/grid/product/19.3.0/grid</pre>



<p></p>



<p>Descompacte o software do Oracle Grid 19c :</p>



<pre class="wp-block-preformatted">cd /u01/app/grid/product/19.3.0/grid <br><br>unzip -q /tmp/binaries/LINUX.X64_193000_db_home.zip</pre>



<p></p>



<h3 class="wp-block-heading">3.1   Verificações de pré-requisitos</h3>



<p>De acordo com o&nbsp;&nbsp;<a href="https://support.oracle.com/knowledge/Oracle%20Database%20Products/1457357_1.html">documento Oracle 1457357.1</a>&nbsp;, o usuário proprietário do Grid precisa executar a ferramenta Orachk.</p>



<p>Certifique-se de baixar a versão mais recente do Orachk de  <a href="https://support.oracle.com/knowledge/Oracle%20Database%20Products/1457357_1.html">AHF </a> e execute os seguintes comandos:</p>



<pre class="wp-block-preformatted">cd /u01/app/grid/product/19.3.0/grid/suptools/orachk<br><br>export GRID_HOME= /u01/app/grid/product/19.3.0/grid<br><br>export RAT_PROMPT_WAIT_TIMEOUT=15<br><br>export RAT_ORACLE_HOME=/u01/app/grid/12.1.0<br><br>export RAT_DB=12.1.0.2.0<br><br>cd /u01/app/grid/product/19.3.0/grid/suptools/orachk<br><br>./orachk -u -o pre -profile clusterware,as</pre>



<p></p>



<p>Este processo gera um relatório HTML conforme mostrado na imagem a seguir:</p>



<p></p>



<figure class="wp-block-image"><img decoding="async" src="https://i1.wp.com/www.luxoug.org/wp-content/uploads/2021/06/ORACHK.png?fit=698%2C428&amp;ssl=1" alt=""/></figure>



<p><strong>Certifique-se de revisar o relatório para todas as verificações com falha, críticas e de advertência e resolva-as antes de passar para a próxima etapa.</strong></p>



<h3 class="wp-block-heading">3.3 Instale GI RU 19.11</h3>



<p>Você precisa aplicar o patch 32545008 no diretório home do Oracle Grid 19c.</p>



<pre class="wp-block-preformatted">cd /u01/app/grid/product/19.3.0/grid
./gridSetup.sh -silent -applyRU /tmp/binaries/p32545008_19000.zip</pre>



<p></p>



<p>No final ele pede para executar  <strong>root.sh</strong> . Não execute o script ainda porque você precisa executá-lo no final da atualização.</p>



<h3 class="wp-block-heading">3.4  Valide as configurações do Oracle GRID. </h3>



<p>Faça login como o usuário do Oracle Grid no sistema operacional e execute o utilitário de verificação de cluster com os seguintes comandos:</p>



<pre class="wp-block-preformatted">cd /u01/app/grid/product/19.3.0/grid/
./runcluvfy.sh stage -pre hacfg -fixup -verbose
Verifying node application existence ...PASSED
Verifying check incorrectly sized ASM disks ...PASSED
Verifying ASM disk group free space ...PASSED
Verifying network configuration consistency checks ...PASSED
Verifying file system mount options for path GI_HOME ...PASSED
Verifying /boot mount ...PASSED
Verifying OLR Integrity ...PASSED
Verifying Verify that the ASM instance was configured using an existing ASM parameter file. ...PASSED
Verifying User Equivalence ...PASSED
Verifying RPM Package Manager database ...INFORMATION (PRVG-11250)
Verifying Network interface bonding status of private interconnect network interfaces ...PASSED
Verifying /dev/shm mounted as temporary file system ...PASSED
Verifying file system mount options for path /var ...PASSED
Verifying DefaultTasksMax parameter ...PASSED
Verifying zeroconf check ...PASSED
Verifying ASM filter driver configuration ...PASSED
verifying Systemd login manager IPC parameter ...PASSED
Verifying Kernel retpoline support ...PASSED</pre>



<p></p>



<h3 class="wp-block-heading">3.5  Atualizando o Oracle Grid</h3>



<p>Antes de iniciar a atualização, execute o seguinte comando para desativar os serviços do grid e garantir que os serviços restantes estejam em execução no servidor. Certifique-se de que o status de upgrade do cluster esteja normal:</p>



<p></p>



<pre class="wp-block-preformatted">unset ORACLE_BASE
unset ORACLE_HOME
unset ORACLE_SID

cd /u01/app/grid/product/19.3.0/grid

./gridsetup.sh -silent -ignorePrerequisites -responseFile /u01/app/grid/product/19.3.0/grid/install/response/duts_upgrade.rsp</pre>



<p></p>



<p>Finalmente, ele pede para executar  <strong>root.sh</strong> . Execute o script para finalizar a atualização.</p>



<p></p>



<p>Nesse ponto, o processo atualizou o Oracle Grid para 19c e todos os serviços de cluster estão em execução. Rode o comando abaixo para validar a versão do HAS do Oracle Restart.</p>



<pre class="wp-block-preformatted">crsctl query has softwareversion </pre>



<p></p>



<h3 class="wp-block-heading">4. Upgrade Oracle Database 12c para 19.11</h3>



<h3 class="wp-block-heading">4.11  Instale o Oracle 19.3</h3>



<p>Crie um diretório para o binário do banco de dados Oracle</p>



<pre class="wp-block-preformatted">mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1</pre>



<p></p>



<p><strong>Descompacte o software de banco de dados Oracle 19c:</strong></p>



<pre class="wp-block-preformatted">cd /u01/app/oracle/product/19.3.0/dbhom_1&nbsp;&nbsp;&nbsp;&nbsp;<br><br>unzip -q /tmp/binaries/LINUX_X64_193000_db_home.zip</pre>



<p></p>



<h3 class="wp-block-heading">4.2  Aplicar Oracle Database RU &#8211; 19.11</h3>



<p>Você precisa aplicar o patch 31281355 no diretório inicial 19c.&nbsp;</p>



<pre class="wp-block-preformatted">cd /u01/app/oracle/product/19.3.0/dbhome_1 

./runInstaller -silent -applyRU /tmp/binaries/p32545013_19000.zip -responseFile /u01/app/oracle/product/19.3.0/oracle/install/response /duts_upgrade.rsp</pre>



<p></p>



<p>Finalmente, ele pede para executar  <strong>root.sh</strong> . Execute o script para finalizar a atualização.</p>



<p></p>



<h3 class="wp-block-heading">4.3 Upgrade de 12c para 19c usando Autoupgrade</h3>



<pre class="wp-block-preformatted">Crie um diretório no binário do banco de dados Oracle</pre>



<pre id="block-464f2ae3-c7be-4e0a-ad51-cb25727875b1" class="wp-block-preformatted">mkdir -p /u01/app/oracle/autoupgrade</pre>



<p></p>



<p>Copie a autoupgrade.jar para a pasta:</p>



<pre class="wp-block-preformatted">cd /u01/app/oracle/autoupgrade 

cp /tmp/binaries/<a href="https://www.oracle.com/database/technologies/oracle19c-solarisx86-downloads.html#license-lightbox">autoupgrade.jar</a> .</pre>



<p></p>



<p>Crie um arquivo de exemplo para configuração do autoupgrade:</p>



<p></p>



<pre class="wp-block-preformatted">$ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar autoupgrade.jar -create_sample_file config

mv sample_file.cfg 12c_19c.cfg

vi 12c_19c.cfg


#Global configurations
#Autoupgrade's global directory, non-job logs generated,
#temp files created and other autoupgrade files will be
#send here
global.autoupg_log_dir=/u01/app/oracle/autoupgrade   
#
# Database number 1
#
upg1.dbname=DUTS
upg1.start_time=NOW
upg1.source_home=/u01/app/oracle/product/12.1.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.3.0/dbhome_1
upg1.sid=DUTS</pre>



<p></p>



<p>Execute o autoupgrade in analyze mode:</p>



<pre class="wp-block-preformatted">cd /u01/app/oracle/autoupgrade

$ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar autoupgrade.jar -12c_19c.cfg -mode analyze</pre>



<p></p>



<p>Observe os arquivos de log que foram criados para o banco de dados &#8211; como só executamos o autoupgrade com a opção Analyze, o único diretório criado é o diretório de pré-verificação.</p>



<p>Para cada banco de dados que foi analisado, podemos revisar o arquivo HTML que lista os avisos e recomendações de pré-verificação.</p>



<p></p>



<p>Execute autoupgrade in fixups mode:</p>



<p></p>



<pre class="wp-block-preformatted">cd /u01/app/oracle/autoupgrade<br><br>$ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar autoupgrade.jar -12c_19c.cfg -mode fixups</pre>



<p></p>



<p>Execute autoupgrade in deploy mode:</p>



<p></p>



<pre class="wp-block-preformatted">cd /u01/app/oracle/autoupgrade

$ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar autoupgrade.jar -12c_19c.cfg -mode deploy</pre>



<p></p>



<p>Depois de finalizar a migração revise o arquivo HTML que lista os itens que foram atualizado atualização.</p>



<p>Altere o compatible do banco de dados.</p>



<pre class="wp-block-preformatted">alter system set compatible =’19.0.0.0’scope=spfile;</pre>



<p>Valide se o restore point foi removido pelo autoupgrade.</p>



<p></p>



<p>Espero que isso te ajude!!!</p>



<p><strong>Fique ligado, seguindo no twitter <a href="https://twitter.com/aontalba">@aontalba </a>e no <a href="https://www.linkedin.com/in/aontalba/">Linkedin</a></strong></p>



<p></p>



<p><strong>Disclaimer:&nbsp;“The postings on this site are my own and don’t necessarily represent my actual employer positions, strategies or opinions. The information here was edited to be useful for general purposes. Specific data and identifications were removed to allow reach generic audience and be useful.”</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2021/06/oracle-restart-database-upgrade-12c-a-19c-usando-autoupgrade/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5907</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 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 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>Nova Feature 19C &#8211; AutoUpgrade / New Feature 19C &#8211; AutoUpgrade</title>
		<link>https://www.dbadutra.com/2019/04/nova-feature-19c-autoupgrade-new-feature-19c-autoupgrade/</link>
					<comments>https://www.dbadutra.com/2019/04/nova-feature-19c-autoupgrade-new-feature-19c-autoupgrade/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Mon, 29 Apr 2019 14:34:06 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[19c]]></category>
		<category><![CDATA[AutoUpgrade]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=5158</guid>

					<description><![CDATA[E ai galera !!! O Oracle Database 19c está disponível para on premises e um dos principais recursos é o novo utilitário de atualização automática. O que é o AutoUpgrade? O utilitário AutoUpgrade é uma nova ferramenta que permite atualizar seus bancos de dados de maneira autônoma. A idéia da ferramenta é executar as pré-validações [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image is-resized"><img decoding="async" src="https://www.dbadutra.com/wp-content/uploads/2018/01/brazil_pt-150x150.jpg" alt="" class="wp-image-5129" width="43" height="43"/></figure>



<p>E ai galera !!!</p>



<p>O Oracle
Database 19c está disponível para on premises e um dos principais recursos é o novo utilitário de atualização
automática.</p>



<p><strong>O que é o AutoUpgrade?</strong></p>



<p>O
utilitário AutoUpgrade é uma nova ferramenta que permite atualizar seus bancos
de dados de maneira autônoma.</p>



<p>A idéia da ferramenta é executar as pré-validações em vários bancos de dados, corrigir possíveis problemas, definir um ponto de restauração caso algo dê errado e então, atualizar seus bancos de dados.</p>



<p>E não podendo esquecer, fazer o pós-upgrade, recompilação e ajuste de fuso horário.</p>



<p>A única
coisa que você precisa fornecer é um arquivo de configuração em formato de
texto.</p>



<p>Quais versões de banco de dados são suportadas pelo AutoUpgrade?</p>



<p>De acordo
com o <a href="https://support.oracle.com/epmos/faces/DocumentDisplay?id=2485457.1" target="_blank" rel="noreferrer noopener">MOS
Note: 2485457.1 – AutoUpgrade Tool</a> somente as versões abaixo são suportadas:</p>



<ul class="wp-block-list"><li>Oracle Database 19c (19.3)</li><li>Oracle Database 18c (18.5)</li><li>Oracle Database&nbsp;12c Release 2 (12.2 + DBJAN2019RU)</li></ul>



<ul class="wp-block-list"><li></li></ul>



<p>De onde você faz download do AutoUpgrade?</p>



<p>Você obtém quando instala o Oracle Database 19c (19.3) ou você faz o download da versão mais recente do <a rel="noreferrer noopener" href="https://support.oracle.com/epmos/faces/DocumentDisplay?id=2485457.1" target="_blank">MOS Note: 2485457.1 – AutoUpgrade Tool</a></p>



<p>Onde encontrar a documentação do AutoUpgrade?</p>



<p>Está tudo
aqui incluído no Guia de atualização do Oracle Database 19c:</p>



<p><a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/using-autoupgrade-oracle-database-upgrades.html#GUID-71883C8C-7A34-4E93-8955-040CB04F2109" target="_blank" rel="noreferrer noopener">Using AutoUpgrade for Oracle
Database Upgrades</a></p>



<p>Espero ter ajudado !!! </p>



<p>Logo teremos mais artigos sobre o Oracle 19c.</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="46" height="46"/></figure>



<p>Oracle Database 19c on premises is available and one of the new features is the <strong>AutoUpgrade utility</strong>. </p>



<p><strong>What is the
AutoUpgrade?</strong></p>



<p>The Oracle Database AutoUpgrade utility is a new tool which allows you to upgrade your databases in an unattended way. </p>



<p>The idea of the tool is to run
the prechecks against multiple databases, fix of the potential issues, set a
restore point in case something goes wrong and then upgrade your databases. </p>



<p> Of course, do the postupgrade, recompilation and time zone adjustment.</p>



<p>The only thing you need to provide is a config file in text
format.</p>



<p><strong>Which
database releases are supported?</strong></p>



<p>According to the MOS Note: 2485457.1 &#8211; AutoUpgrade Tool only
the versions below are supported:</p>



<p>Oracle Database 19.3.0 and newer</p>



<p>Oracle Database 18.5.0 and newer</p>



<p>Oracle Database 12.2.0.1 with Jan 2019 RU and newer</p>



<p><strong>Where do
you get the AutoUpgrade?</strong></p>



<p>You get it when you install Oracle Database 19c (19.3) or you
download the most recent version from&nbsp;<a href="https://support.oracle.com/epmos/faces/DocumentDisplay?id=2485457.1" target="_blank" rel="noreferrer noopener">MOS Note: 2485457.1 –
AutoUpgrade Tool</a>:</p>



<p><strong>Where do
you find the AutoUpgrade documentation?</strong></p>



<p>It is all here included in the Oracle Database 19c Upgrade
Guide:</p>



<p><a rel="noreferrer noopener" href="https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/using-autoupgrade-oracle-database-upgrades.html#GUID-71883C8C-7A34-4E93-8955-040CB04F2109" target="_blank">Using AutoUpgrade for Oracle Database Upgrades</a></p>



<p>Hope this helps !!!<br></p>



<p>Soon we will have more articles on the Oracle 19c.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2019/04/nova-feature-19c-autoupgrade-new-feature-19c-autoupgrade/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5158</post-id>	</item>
	</channel>
</rss>
