<?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>Oracle &#8211; Blog DBA Dutra</title>
	<atom:link href="https://www.dbadutra.com/tag/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbadutra.com</link>
	<description></description>
	<lastBuildDate>Mon, 17 Jun 2019 19:59:00 +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>Interconnect Oracle Cloud and Microsoft Azure</title>
		<link>https://www.dbadutra.com/2019/06/interconnect-oracle-cloud-and-microsoft-azure/</link>
					<comments>https://www.dbadutra.com/2019/06/interconnect-oracle-cloud-and-microsoft-azure/#comments</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Thu, 13 Jun 2019 14:54:18 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Interconnect]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OCI]]></category>
		<category><![CDATA[Oracle]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=5590</guid>

					<description><![CDATA[Na semana passada, foi anunciado que a Oracle e a Microsoft criaram uma conexão nuvem-nuvem entre o Oracle Cloud Infrastructure e o Microsoft Azure em determinadas regiões. Essa conexão permite que você configure cargas de trabalho entre nuvens sem tráfego entre as nuvens que passam pela Internet. Serviços de Interconexão OCI e Azure: Limitada à [&#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="50" height="50"/></figure>



<p>Na
semana passada, foi anunciado que a Oracle e a Microsoft criaram uma conexão
nuvem-nuvem entre o Oracle Cloud Infrastructure e o Microsoft Azure em
determinadas regiões.</p>



<p>Essa
conexão permite que você configure cargas de trabalho entre nuvens sem tráfego
entre as nuvens que passam pela Internet.</p>



<p>Serviços
de Interconexão OCI e Azure:</p>



<p>Limitada
à região do Azure Leste dos EUA (eastus) e à região OCI Ashburn (us-ashburn-1) .</p>



<p>O
local de peering ExpressRoute está próximo ou no mesmo local de peering que o
OCI FastConnect.</p>



<p>O
lado da identidade é sua integração comum e bem conhecida entre o IDCS e o
Microsoft Active Directory.</p>



<p>Fornece
baixa latência e alta conectividade entre nuvens</p>



<p>Network
Peering possível entre o Azure e o OCI.</p>



<p>Aplicativo
de várias camadas pode ser particionado para executar o banco de dados no OCI e
no aplicativo no Azure</p>



<p>Cross-Connect
pode ser estabelecido circuito ExpressRoute no Azure e Fastconnect em OCI.</p>



<p>Tráfego
entre os dois provedores em uma rede privada.</p>



<p>O
tráfego de rede pode ser controlado usando a Lista de Segurança (OCI) e os
Grupos de Segurança de Rede (Azure)</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="61" height="61"/></figure>



<p>Last week, it was announced that Oracle
and Microsoft have created a cloud-to-cloud connection between Oracle Cloud
Infrastructure and Microsoft Azure in certain regions.</p>



<p>This connection allows you to configure
workloads between clouds without traffic between the clouds that pass through
the Internet.</p>



<p>OCI and Azure Interconnect services:</p>



<p>Limited to Azure East US (eastus)
region and the OCI Ashburn (us-ashburn-1) region as of now.</p>



<p>ExpressRoute peering location is in
proximity to or in the same peering location as the OCI FastConnect.</p>



<p>Identity
side its common and well known integration between IDCS and Microsoft Active
Directory.</p>



<p>Provides low latency and high
throughput cross-cloud connectivity</p>



<p>Network Peering possible between Azure
and OCI.</p>



<p>Multi-tier application can be
partitioned to run DB on OCI and Application on Azure</p>



<p>Cross-Connect can be established
ExpressRoute circuit in Azure and Fastconnect on OCI.</p>



<p>Traffic between the 2 providers over a
private network.</p>



<p>Network traffic can be controlled using
Security List (OCI) and Network Security Groups (Azure)</p>



<p></p>



<div class="wp-block-image"><figure class="aligncenter"><img fetchpriority="high" decoding="async" width="641" height="377" src="https://www.dbadutra.com/wp-content/uploads/2019/06/Process.png" alt="" class="wp-image-5592" srcset="https://www.dbadutra.com/wp-content/uploads/2019/06/Process.png 641w, https://www.dbadutra.com/wp-content/uploads/2019/06/Process-300x176.png 300w" sizes="(max-width: 641px) 100vw, 641px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="676" height="341" src="https://www.dbadutra.com/wp-content/uploads/2019/06/Interconnec_Azure_OCI.png" alt="" class="wp-image-5591" srcset="https://www.dbadutra.com/wp-content/uploads/2019/06/Interconnec_Azure_OCI.png 676w, https://www.dbadutra.com/wp-content/uploads/2019/06/Interconnec_Azure_OCI-300x151.png 300w" sizes="(max-width: 676px) 100vw, 676px" /></figure></div>



<p></p>



<h6 class="wp-block-heading">Link about official documentation:</h6>



<h6 class="wp-block-heading"><a href="https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/azure.htm">https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/azure.htm</a></h6>



<p></p>



<p></p>



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



<h5 class="wp-block-heading">André&nbsp; Ontalba</h5>



<p></p>



<p>&nbsp;</p>



<p><strong>Disclaimer:</strong>&nbsp;“The postings on this site are my own and don’t necessarily represent may actual employer positions, strategies or opinions. The information here was edited to be useful for general purpose, specific data and identifications was removed to allow reach generic audience and to be useful.”</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2019/06/interconnect-oracle-cloud-and-microsoft-azure/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5590</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>Suporte a produtos Oracle</title>
		<link>https://www.dbadutra.com/2015/04/suporte-a-produtos-oracle/</link>
					<comments>https://www.dbadutra.com/2015/04/suporte-a-produtos-oracle/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Thu, 23 Apr 2015 18:11:07 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Suporte]]></category>
		<guid isPermaLink="false">http://dbadutra.com.br/?p=36</guid>

					<description><![CDATA[Do que se trata o artigo: Neste artigo serão apresentadas as formas de suporte aos produtos oracle. &#160; Em que situação o tema é útil: Quando precisamos saber se um produto Oracle tem ainda suporte para solução de problemas. &#160; Life time Support &#8211; Oracle &#160; A Oracle oferece aos seus clientes um conjunto de [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong><em>Do que se trata o artigo:</em></strong></p>
<p>Neste artigo serão apresentadas as formas de suporte aos produtos oracle.</p>
<p>&nbsp;</p>
<p><strong><em>Em que situação o tema é útil:</em></strong></p>
<p>Quando precisamos saber se um produto Oracle tem ainda suporte para solução de problemas.</p>
<p>&nbsp;</p>
<p><strong>Life time Support &#8211; Oracle</strong></p>
<p>&nbsp;</p>
<p>A Oracle oferece aos seus clientes um conjunto de serviços como o My Oracle Support (https://support.oracle.com). Onde é além da base de conhecimento que é imensa e sobre todos os produtos por ela oferecida ao Mercado.</p>
<p>&nbsp;</p>
<p>Alem disso temos uma ferramenta que é a Service Request que serve para realizar as aberturas de chamados para os produtos Oracle.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Premier Support</strong>: Fornece suporte e manutenção de seu banco de dados Oracle, middleware e aplicações para cinco anos a contar da data de disponibilidade geral. Você se beneficia de produto principal e lançamentos de tecnologia; atualizações, correções, alertas e de segurança; fiscais, atualizações legais, e regulamentares; scripts de atualização e certificação de novos produtos de terceiros e versões.</p>
<p>&nbsp;</p>
<p><strong>Extended Support</strong>: Permite-lhe manter-se competitivo, com a liberdade de atualizar em seu calendário. Ele fornece um extra de três anos de suporte para versões específicas do Oracle.</p>
<p>&nbsp;</p>
<p><strong>Sustaining Support</strong>: Coloca você no controle total de sua estratégia de atualização. Quando você licenciar seus produtos Oracle, você receberá o acesso ao produto principal e lançamentos de tecnologia e suporte técnico, incluindo o acesso às ferramentas de suporte on-line, base de conhecimento e especialistas de suporte técnico.</p>
<p>&nbsp;</p>
<p>Tabela com Life Time Support para Oracle Database.</p>
<p style="text-align: center;"><a href="https://www.dbadutra.com/wp-content/uploads/2015/04/Suporte.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-4876" src="https://www.dbadutra.com/wp-content/uploads/2015/04/Suporte-300x162.png" alt="Suporte" width="300" height="162" srcset="https://www.dbadutra.com/wp-content/uploads/2015/04/Suporte-300x162.png 300w, https://www.dbadutra.com/wp-content/uploads/2015/04/Suporte.png 802w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<p><strong>Conclusões</strong></p>
<p>&nbsp;</p>
<p>Com estas informações conseguimos saber quando um produto perde seu suporte e além disso conseguimos orientar as empresas que damos suporte ou nossos clientes sobre a necessidade da migração do produto.</p>
<p>&nbsp;</p>
<p><strong> </strong></p>
<p><strong> </strong><strong>Referências</strong></p>
<p><strong> </strong></p>
<p><strong>Lifetime Support &#8211; Product Certifications Tab [ID 743176.1]</strong></p>
<p>&nbsp;</p>
<p><strong>http://www.oracle.com/us/support/lifetime-support/lifetime-support-software-342730.html</strong></p>
<p>&nbsp;</p>
<p>Até a próxima</p>
<p>André Luiz Dutra Ontalba</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2015/04/suporte-a-produtos-oracle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">36</post-id>	</item>
	</channel>
</rss>
