<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Diogo Fernandes]]></title><description><![CDATA[Diogo Fernandes]]></description><link>https://diogofernandes.com.br</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1735412063100/dd6651b1-c334-46f0-be0e-c3b3d9838f47.png</url><title>Diogo Fernandes</title><link>https://diogofernandes.com.br</link></image><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 20:29:39 GMT</lastBuildDate><atom:link href="https://diogofernandes.com.br/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Escolhendo o DBID]]></title><description><![CDATA[Alguns ERP’s têm o seu licenciamento vinculado ao DBID do banco Oracle, até aí tudo bem, até o dia em que o banco precisa ser migrado. Se for via Data Guard, tranquilo, mas há meios de upgrade, por exemplo, que podem mudar o DBID, e depois da migraçã...]]></description><link>https://diogofernandes.com.br/escolhendo-o-dbid</link><guid isPermaLink="true">https://diogofernandes.com.br/escolhendo-o-dbid</guid><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sun, 15 Feb 2026 20:16:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1771188111254/5a650f43-d873-412d-b15c-eac841b17677.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Alguns ERP’s têm o seu licenciamento vinculado ao DBID do banco Oracle, até aí tudo bem, até o dia em que o banco precisa ser migrado. Se for via Data Guard, tranquilo, mas há meios de upgrade, por exemplo, que podem mudar o DBID, e depois da migração isso vira um “problema”, principalmente em ERP’s que têm dezenas de arquivos com esse número de DBID para vincular o licenciamento, então é melhor trocar o DBID. Não vou entrar no mérito se é certo ou não, mas às vezes é o que temos que fazer.</p>
<p>Recordo-me de que a primeira vez que vi esse procedimento foi há 12 anos no blog <a target="_blank" href="https://oraclehome.com.br/2014/09/11/escolhendo-meu-dbid/">oraclehome.com.br</a>, inclusive, se você está iniciando a carreira no Oracle, sugiro ler todos os artigos que têm lá. E nesse mesmo artigo fui encaminhado para um artigo da <a target="_blank" href="https://www.pythian.com/blog/how-to-choose-your-oracle-database-id-dbid">Pythian</a> em 2009, ou seja, não espere encontrar uma nota aqui, isso aqui é literalmente pergaminho do Oracle rs.</p>
<h1 id="heading-nao-faca-isso-em-producao-sem-validar-500-vezes-na-sua-base-de-homologacaotestes"><mark>Não faça isso em produção sem validar 500 vezes na sua base de homologação/testes.</mark></h1>
<p>Avisos dados, vamos lá.</p>
<p>Primeiro, você tem que colocar a sua base em estado MOUNT.</p>
<pre><code class="lang-bash">Connected to:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run <span class="hljs-keyword">for</span> Free
Version 23.5.0.24.07

SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB<span class="hljs-variable">$SEED</span>                       READ ONLY  NO
         3 FREEPDB1                       READ WRITE NO
SQL&gt; select dbid from v<span class="hljs-variable">$database</span> ; 

      DBID
----------
1452480138

SQL&gt; shut immediate ; 
Database closed.
Database dismounted.
ORACLE instance shut down.
</code></pre>
<p>O shutdown tem que ser immediate, não rode esse procedimento com shutdown abort.</p>
<p>Como podemos ver, o DBID até o momento é 1452480138.</p>
<p>Agora vamos iniciar o banco em MOUNT.</p>
<pre><code class="lang-bash">SQL&gt; startup mount ; 
ORACLE instance started.

Total System Global Area 1603726640 bytes
Fixed Size                  5360944 bytes
Variable Size             436207616 bytes
Database Buffers         1157627904 bytes
Redo Buffers                4530176 bytes
Database mounted.
SQL&gt; 
SQL&gt; 
SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB<span class="hljs-variable">$SEED</span>                       MOUNTED
         3 FREEPDB1                       MOUNTED
</code></pre>
<p>Pronto, startup feito em mount. Agora vamos para mágica.</p>
<p>O script abaixo que devemos executar:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">set</span> serveroutput on

<span class="hljs-built_in">declare</span>
  v_chgdbid   binary_integer;
  v_chgdbname binary_integer;
  v_skipped   binary_integer;
  v_new_db_name varchar2(9);
  v_old_db_name varchar2(9);
  v_new_dbid    number;
  v_old_dbid    number;
  w_action      varchar2(255);


begin
     w_action:=<span class="hljs-string">'Recuperando DBID Atual.'</span> ;
     select dbid, name, name into v_old_dbid, v_new_db_name, v_old_db_name  from v<span class="hljs-variable">$database</span>;
     select TO_NUMBER(<span class="hljs-string">'&amp;NOVO_DBID'</span>) into v_new_dbid from dual;

     w_action:=<span class="hljs-string">'Executando a Procedure (dbms_backup_restore.nidbegin).'</span>;
     dbms_output.put_line(<span class="hljs-string">'New NAME='</span>||V_NEW_DB_NAME);
     dbms_output.put_line(<span class="hljs-string">'Old NAME='</span>||V_OLD_DB_NAME);
     dbms_output.put_line(<span class="hljs-string">'New DBID='</span>||V_NEW_DBID);
     dbms_output.put_line(<span class="hljs-string">'Old DBID='</span>||V_OLD_DBID);

     dbms_backup_restore.nidbegin(V_NEW_DB_NAME,V_OLD_DB_NAME,V_NEW_DBID,V_OLD_DBID,0,0,10);

     w_action:=<span class="hljs-string">'Executando a Procedure (dbms_backup_restore.nidprocesscf).'</span>;
     dbms_backup_restore.nidprocesscf( v_chgdbid,v_chgdbname);

     dbms_output.put_line(<span class="hljs-string">'ControlFile.......: '</span>);
     dbms_output.put_line(<span class="hljs-string">'  =&gt; Change Name..: '</span>  ||to_char(v_chgdbname));
     dbms_output.put_line(<span class="hljs-string">'  =&gt; Change DBID..: '</span>  ||to_char(v_chgdbid));

     w_action := <span class="hljs-string">'Alterando os Datafiles, procedure (dbms_backup_restore.nidprocessdf).'</span>;
     <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> (select file<span class="hljs-comment">#,name from v$datafile)</span>
     loop
        dbms_output.put_line(<span class="hljs-string">'DataFile..........: '</span>  ||i.name);
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Skipped......: '</span>  ||to_char(v_skipped));
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Change Name..: '</span>  ||to_char(v_chgdbname));
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Change DBID..: '</span>  ||to_char(v_chgdbid));
        dbms_backup_restore.nidprocessdf(i.file<span class="hljs-comment">#,0, v_skipped,v_chgdbid,v_chgdbname);</span>
     end loop;

     w_action := <span class="hljs-string">'Alterando os Tempfiles, procedure (dbms_backup_restore.nidprocessdf).'</span>;
     <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> (select file<span class="hljs-comment">#,name from v$tempfile)</span>
     loop
        dbms_output.put_line(<span class="hljs-string">'TempFile..........: '</span>  ||i.name);
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Skipped......: '</span>  ||to_char(v_skipped));
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Change Name..: '</span>  ||to_char(v_chgdbname));
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Change DBID..: '</span>  ||to_char(v_chgdbid));
        dbms_backup_restore.nidprocessdf(i.file<span class="hljs-comment">#,1,v_skipped,v_chgdbid,v_chgdbname);</span>
     end loop;
  dbms_backup_restore.nidend;
end;
/
</code></pre>
<p>Ao executar, ele vai pedir para digitar o DBID que você quer setar:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1771181899022/7857e48e-844b-4a2b-ac00-4c9a2295deb9.png" alt class="image--center mx-auto" /></p>
<pre><code class="lang-bash">Terminal rodando o script:

SQL&gt; <span class="hljs-built_in">set</span> serveroutput on

<span class="hljs-built_in">declare</span>
  v_chgdbid   binary_integer;
  v_chgdbname binary_integer;
  v_skipped   binary_integer;
  v_new_db_name varchar2(9);
  v_old_db_name varchar2(9);
  v_new_dbid    number;
  v_old_dbid    number;
  w_action      varchar2(255);


begin
     w_action:=<span class="hljs-string">'Recuperando DBID Atual.'</span> ;
     select dbid, name, name into v_old_dbid, v_new_db_name, v_old_db_name  from v<span class="hljs-variable">$database</span>;
     select TO_NUMBER(<span class="hljs-string">'&amp;NOVO_DBID'</span>) into v_new_dbid from dual;

     w_action:=<span class="hljs-string">'Executando a Procedure (dbms_backup_restore.nidbegin).'</span>;
     dbms_output.put_line(<span class="hljs-string">'New NAME='</span>||V_NEW_DB_NAME);
     dbms_output.put_line(<span class="hljs-string">'Old NAME='</span>||V_OLD_DB_NAME);
     dbms_output.put_line(<span class="hljs-string">'New DBID='</span>||V_NEW_DBID);
     dbms_output.put_line(<span class="hljs-string">'Old DBID='</span>||V_OLD_DBID);

     dbms_backup_restore.nidbegin(V_NEW_DB_NAME,V_OLD_DB_NAME,V_NEW_DBID,V_OLD_DBID,0,0,10);

     w_action:=<span class="hljs-string">'Executando a Procedure (dbms_backup_restore.nidprocesscf).'</span>;
     dbms_backup_restore.nidprocesscf( v_chgdbid,v_chgdbname);

     dbms_output.put_line(<span class="hljs-string">'ControlFile.......: '</span>);
     dbms_output.put_line(<span class="hljs-string">'  =&gt; Change Name..: '</span>  ||to_char(v_chgdbname));
     dbms_output.put_line(<span class="hljs-string">'  =&gt; Change DBID..: '</span>  ||to_char(v_chgdbid));

     w_action := <span class="hljs-string">'Alterando os Datafiles, procedure (dbms_backup_restore.nidprocessdf).'</span>;
     <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> (select file<span class="hljs-comment">#,name from v$datafile)</span>
     loop
        dbms_output.put_line(<span class="hljs-string">'DataFile..........: '</span>  ||i.name);
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Skipped......: '</span>  ||to_char(v_skipped));
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Change Name..: '</span>  ||to_char(v_chgdbname));
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Change DBID..: '</span>  ||to_char(v_chgdbid));
        dbms_backup_restore.nidprocessdf(i.file<span class="hljs-comment">#,0, v_skipped,v_chgdbid,v_chgdbname);</span>
     end loop;

     w_action := <span class="hljs-string">'Alterando os Tempfiles, procedure (dbms_backup_restore.nidprocessdf).'</span>;
     <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> (select file<span class="hljs-comment">#,name from v$tempfile)</span>
     loop
        dbms_output.put_line(<span class="hljs-string">'TempFile..........: '</span>  ||i.name);
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Skipped......: '</span>  ||to_char(v_skipped));
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Change Name..: '</span>  ||to_char(v_chgdbname));
        dbms_output.put_line(<span class="hljs-string">'  =&gt; Change DBID..: '</span>  ||to_char(v_chgdbid));
        dbms_backup_restore.nidprocessdf(i.file<span class="hljs-comment">#,1,v_skipped,v_chgdbid,v_chgdbname);</span>
     end loop;
  dbms_backup_restore.nidend;
end;
/SQL&gt; SQL&gt;   2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48   49   50   51   52   53  
Enter value <span class="hljs-keyword">for</span> novo_dbid: 777777
old  15:      select TO_NUMBER(<span class="hljs-string">'&amp;NOVO_DBID'</span>) into v_new_dbid from dual;
new  15:      select TO_NUMBER(<span class="hljs-string">'777777'</span>) into v_new_dbid from dual;
New NAME=FREE
Old NAME=FREE
New DBID=777777
Old DBID=1452480138
ControlFile.......:
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/system01.dbf
=&gt; Skipped......:
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/pdbseed/system01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/sysaux01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/pdbseed/sysaux01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/users01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/pdbseed/undotbs01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/undotbs01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/FREEPDB1/system01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/FREEPDB1/sysaux01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/FREEPDB1/undotbs01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
DataFile..........: /opt/oracle/oradata/FREE/FREEPDB1/users01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
TempFile..........: /opt/oracle/oradata/FREE/temp01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
TempFile..........: /opt/oracle/oradata/FREE/pdbseed/temp01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1
TempFile..........: /opt/oracle/oradata/FREE/FREEPDB1/temp01.dbf
=&gt; Skipped......: 0
=&gt; Change Name..: 0
=&gt; Change DBID..: 1

PL/SQL procedure successfully completed.
</code></pre>
<p>Após concluir, abra o banco com OPEN RESETLOGS.</p>
<pre><code class="lang-bash">SQL&gt; alter database open resetlogs ; 

Database altered.
</code></pre>
<p>Status do banco:</p>
<pre><code class="lang-bash">SQL&gt; alter database open resetlogs ; 

Database altered.

SQL&gt; show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB<span class="hljs-variable">$SEED</span>                       READ ONLY  NO
         3 FREEPDB1                       READ WRITE NO
SQL&gt; select dbid from v<span class="hljs-variable">$database</span> ; 

      DBID
----------
    777777
</code></pre>
<p>Pronto, agora o banco esta com o DBID de sua escolha.</p>
<p>Espero que este artigo possa te ajudar em migrações futuras. Qualquer coisa, só chamar no <a target="_blank" href="https://www.linkedin.com/in/diogo-fernandess/"><strong>linkedin</strong></a> 🙂</p>
<p><strong>PS: Em caso de DB produção, faça backup full imediatamente após a alteração.</strong></p>
<p><strong>Créditos:</strong></p>
<p><em>Artigo no</em> <a target="_blank" href="https://oraclehome.com.br/2014/09/11/escolhendo-meu-dbid/"><em>oraclehome.com.br</em></a> <em>escrito por</em> <a target="_blank" href="https://www.linkedin.com/in/andersongraf/"><em>Anderson Graf</em></a><em>. (2014)</em></p>
<p><em>Artigo da</em> <a target="_blank" href="https://www.pythian.com/blog/how-to-choose-your-oracle-database-id-dbid"><em>Pythian</em></a> <em>(2009)</em></p>
]]></content:encoded></item><item><title><![CDATA[Processo ASR consumindo 600% de CPU no ODA.]]></title><description><![CDATA[Esses dias, recebi um alerta no meu celular de um ODA de um cliente informando que o “load” estava mais alto do que o normal e, em seguida, outro alerta de “alta utilização de CPU”.
Meu primeiro pensamento foi: é algo no banco. Porém, ao abrir o orat...]]></description><link>https://diogofernandes.com.br/processo-asr-consumindo-600-de-cpu-no-oda</link><guid isPermaLink="true">https://diogofernandes.com.br/processo-asr-consumindo-600-de-cpu-no-oda</guid><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Mon, 22 Dec 2025 19:16:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766430845582/e27e7faa-0c92-44ff-802e-81b73cb79f34.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Esses dias, recebi um alerta no meu celular de um ODA de um cliente informando que o “load” estava mais alto do que o normal e, em seguida, outro alerta de “alta utilização de CPU”.</p>
<p>Meu primeiro pensamento foi: é algo no banco. Porém, ao abrir o oratop, não vi nada além do normal. Então, fui para o Linux e, ao executar o comando top, me deparei com a seguinte situação:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1766404544668/38702c65-7a7e-4fd8-b8ae-603396a1c6d7.png" alt class="image--center mx-auto" /></p>
<p>Peguei o pid e foi ver de que processo se tratava…</p>
<pre><code class="lang-bash">root      4023     1  0 Aug20 ?        1-04:30:36 /opt/oracle/dcs/java/1.8.0_261/bin/java -Xms512m -Xmx1536m -Dlog4j.configurationFile=/opt/asrmanager/configuration/log4j2.xml -Dasr.log.level=info -Dasr.log.filecount=5 -Dauditlog.days=30 -cp /opt/asrmanager/felix-framework/bin/felix.jar org.apache.felix.main.Main /opt/asrmanager/bundle-cache/ -b /opt/asrmanager/lib/asrstart
</code></pre>
<p>Ali! ASR Manager…</p>
<p>Para quem não sabe, o ASR Manager abre chamados automaticamente com a Oracle em caso de alguma falha de hardware e também notifica o e-mail do administrador sobre a falha.</p>
<p>Este é um problema antigo no ODA: esse processo causa alta utilização de CPU, mas, na verdade, isso é um efeito colateral de outros problemas. No início, eu achava que era alguma falha da Oracle no momento de configurar o ASR, e até pode ser, mas, em 90% das vezes, isso é apenas um sintoma de outra coisa, e podem ser duas situações.</p>
<p>1 - O seu ODA não está conseguindo sair para os endereços da Oracle para onde as informações são enviadas. O endereço é <a target="_blank" href="http://transport.oracle.com">transport.oracle.com</a>, e existem algumas portas que precisam ser liberadas, conforme o link abaixo recomenda.</p>
<p><a target="_blank" href="https://docs.oracle.com/en/engineered-systems/oracle-database-appliance/19.23/daten/configuring-and-using-oracle-auto-service-request-asr1.html?utm_source=chatgpt.com#GUID-A1DA06C1-5EDE-4EDF-A6ED-9C1D749E6E3E">Doc ASR</a></p>
<p>2 - A outra possibilidade é o cliente estar sem suporte, e o ASR ficar tentando o tempo todo fazer a comunicação com a Oracle, mas, como está sem suporte, o handshake não é concluído com sucesso.</p>
<p>Felizmente, após alguns testes, descobri que o problema do cliente era que haviam bloqueado a saída para o endereço <a target="_blank" href="http://transport.oracle.com">transport.oracle.com</a> vinda do ODA. Então, nesse caso, eu matei o PID e reiniciei os serviços do ASR após a liberação do endereço/portas no firewall, e tudo deu certo.</p>
<pre><code class="lang-bash"><span class="hljs-built_in">kill</span> -9 4023
<span class="hljs-built_in">cd</span> /opt/asrmanager/bin
./asr restart
ASR Manager is stopped.
ASR Manager (pid 37354) is RUNNING.
</code></pre>
<p>Mas e se o seu caso for o 2?</p>
<p>O caso 2 é mais comum do que imaginamos, pois estamos falando de um hardware que foi modernizado com NVMe ali por volta de 2016/2017 e que até hoje continua em funcionamento. Em cerca de 80% dos casos, não houve um único aviso de falha de hardware. Com o passar do tempo, e devido à idade do equipamento, os clientes foram renovando seus parques e realocando esses appliances para bases de teste, ambientes de DR, BI para leitura, etc. (Sabemos como funciona na vida real…).</p>
<p>E, se o seu caso for esse, temos uma única opção: deletar a configuração.</p>
<pre><code class="lang-bash">odacli delete-asr
</code></pre>
<p>Pronto, assim você encerra o processo do ASR e não terá mais aquele problema de ele entrar em loop e tentar se conectar com a Oracle o tempo todo. (Só faça isso se seu oda não tiver mais suporte!!!)</p>
<p>Espero ter ajudado e qualquer coisa só me chamar no <a target="_blank" href="https://www.linkedin.com/in/diogo-fernandess/">linkedin</a> :)</p>
]]></content:encoded></item><item><title><![CDATA[Como resolver o erro bash: fork: retry: Resource temporarily unavailable durante o I O Calibrate]]></title><description><![CDATA[Durante a execução do I/O Calibrate no Oracle 19.25 com Oracle Enterprise Linux 9 (OEL9), obtive a seguinte mensagem após o procedimento ter sido executado por 12 minutos.
SET SERVEROUTPUT ON
DECLARE
lat  INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
DB...]]></description><link>https://diogofernandes.com.br/como-resolver-o-erro-bash-fork-retry-resource-temporarily-unavailable-durante-o-i-o-calibrate</link><guid isPermaLink="true">https://diogofernandes.com.br/como-resolver-o-erro-bash-fork-retry-resource-temporarily-unavailable-durante-o-i-o-calibrate</guid><category><![CDATA[-bash: fork: retry: Resource temporarily unavailable]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Wed, 29 Oct 2025 17:17:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1761758026501/9e87596c-73ff-4e3a-9294-9b429feea726.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Durante a execução do I/O Calibrate no Oracle 19.25 com Oracle Enterprise Linux 9 (OEL9), obtive a seguinte mensagem após o procedimento ter sido executado por 12 minutos.</p>
<pre><code class="lang-bash">SET SERVEROUTPUT ON
DECLARE
lat  INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (1, 10, iops, mbps, lat);
DBMS_OUTPUT.PUT_LINE (<span class="hljs-string">'max_iops = '</span> || iops);
DBMS_OUTPUT.PUT_LINE (<span class="hljs-string">'latency  = '</span> || lat);
DBMS_OUTPUT.PUT_LINE (<span class="hljs-string">'max_mbps = '</span> || mbps);
END;
/
</code></pre>
<p>Após aproximadamente 12 minutos, o erro abaixo passou a aparecer em qualquer comando executado no bash do Linux.</p>
<pre><code class="lang-bash">-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
</code></pre>
<p>Inicialmente, considerei a hipótese de que a quantidade de processos tivesse excedido os limites configurados, porém, ao executar o comando:</p>
<pre><code class="lang-bash">[oracle@node1 limits.d]$ ps -ef | grep oracle | wc -l 
2413
</code></pre>
<p>Ok, em processos Oracle so tenho 2413 ativos, porque esta acontecendo isso…????</p>
<p>Mas outra coisa me chamou atenção no vmstat durante a execução/problema.</p>
<pre><code class="lang-bash">root@node1 ~]<span class="hljs-comment"># vmstat 1 </span>
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   <span class="hljs-keyword">in</span>   cs us sy id wa st
 1 16449      0 418050816 226100 6115824    0    0  5457    16   58   56  1  1 60 37  0
 6 16446      0 418047904 226108 6116228    0    0 344089    89 132928 425784  3  2  0 95  0
 3 16454      0 418043136 226108 6116152    0    0 346177   634 119197 404523  2  2  0 95  0
 2 16455      0 418041888 226116 6116144    0    0 347153   236 82672 351030  0  2  0 98  0
 0 16442      0 418049952 226116 6116172    0    0 347193     2 82877 350616  0  2  0 98  0
 0 1293      0 418054656 226116 6116176    0    0 113793    13 64679 255913  0  2  0 98  0
 7 16440      0 417885696 226124 6116204    0    0 483856   622 149115 526313 11  4  2 83  0
 5 16443      0 417884416 226124 6116204    0    0 351673   633 140787 529131  6  3  0 91  0
 9 16441      0 417879456 226132 6116248    0    0 353833   322 141966 534006  6  3  0 91  0
 6 16448      0 417879200 226132 6116260    0    0 355265     2 142702 534330  6  3  0 90  0
 1 16451      0 417878208 226132 6116264    0    0 364186     2 147385 547224  7  3  0 90  0
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1761329820626/0c768d1b-d7b7-47a1-9133-d44655f161c1.png" alt class="image--center mx-auto" /></p>
<p>Na saída do comando vmstat, o campo b, localizado sob a seção procs, representa o número de processos ou threads bloqueados que estão aguardando a conclusão de operações de I/O. No caso em análise, esse comportamento foi observado durante a execução do I/O Calibrate do Oracle, que realiza testes intensivos de leitura e escrita no storage para medir desempenho.</p>
<p>Em determinado momento, o valor do campo b atingiu 16.451 threads bloqueadas, indicando que milhares de threads do Oracle estavam simultaneamente em espera por I/O. Após ultrapassar a marca de 16.000, o ambiente começou a apresentar falhas, evidenciando um possível gargalo no subsistema de I/O. Depois de uma análise detalhada, identifiquei a causa raiz do problema…</p>
<pre><code class="lang-bash"> cat /etc/security/limits.d/oracle-database-preinstall-19c.conf

<span class="hljs-comment"># oracle-database-preinstall-19c setting for nproc soft limit is 16384</span>
oracle   soft   nproc    16384

<span class="hljs-comment"># oracle-database-preinstall-19c setting for nproc hard limit is 16384</span>
oracle   hard   nproc    16384
</code></pre>
<p>Pronto, aí estava o problema. No arquivo oracle-database-preinstall-19c.conf, o valor padrão é 16384, e durante o processo foram alocados 16451, ocasionando o erro de “fork”.</p>
<p>Diante disso, alterei os limites soft e hard para 32384, e o problema não voltou a ocorrer durante a execução do I/O Calibrate.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># refer orabug15971421 for more info.</span>
oracle   soft   nproc    32384

<span class="hljs-comment"># oracle-database-preinstall-19c setting for nproc hard limit is 16384</span>
oracle   hard   nproc    32384
</code></pre>
<p>Pra garantir a aplicação eu reiniciei os hosts em modo rolling, apois o incremento dos valores o erro -bash: fork: retry: Resource temporarily unavailable nao ocorreu mais.</p>
<p>É isso pessoal, qualquer coisa só me chamar no <a target="_blank" href="https://www.linkedin.com/in/diogo-fernandess/"><strong>LinkedIn</strong></a> 🙂</p>
]]></content:encoded></item><item><title><![CDATA[Erro ao criar volume ACFS no Oracle linux 9.5]]></title><description><![CDATA[Durante a configuração de um ACFS (Oracle ASM Cluster File System) em um ambiente com Oracle Linux 9.5 com grid 19c, me deparei com um erro ao tentar formatar o volume ASM. O comando executado foi:
/sbin/mkfs -t acfs /dev/asm/volume-157

E o erro ret...]]></description><link>https://diogofernandes.com.br/erro-ao-criar-volume-acfs-no-oracle-linux-95</link><guid isPermaLink="true">https://diogofernandes.com.br/erro-ao-criar-volume-acfs-no-oracle-linux-95</guid><category><![CDATA[CLSU-00107]]></category><category><![CDATA[acfsoracle]]></category><category><![CDATA[Oracle]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Tue, 21 Oct 2025 18:39:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1761071895237/9501313d-805e-426d-b87e-9011034bcb39.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Durante a configuração de um ACFS (Oracle ASM Cluster File System) em um ambiente com Oracle Linux 9.5 com grid 19c, me deparei com um erro ao tentar formatar o volume ASM. O comando executado foi:</p>
<pre><code class="lang-bash">/sbin/mkfs -t acfs /dev/asm/volume-157
</code></pre>
<p>E o erro retornado foi o seguinte:</p>
<pre><code class="lang-bash">mkfs.acfs: CLSU-00107: operating system <span class="hljs-keyword">function</span>: <span class="hljs-built_in">read</span>; failed with error data: 5; at location: ORF_0
mkfs.acfs: CLSU-00101: operating system error message: Input/output error
mkfs.acfs: ACFS-00526: <span class="hljs-built_in">read</span> of volume disk header failed
mkfs.acfs: ACFS-01004: /dev/asm/volume-157 was not formatted.
</code></pre>
<p>Esse erro impedia a criação do sistema de arquivos e, inicialmente, parecia estar relacionado a permissões ou configuração incorreta do ASM. No entanto, após uma análise mais detalhada, identifiquei que se tratava de um bug conhecido documentado pela Oracle na nota ACFS Incompatibility With OEL8/9 UEK7 Kernel And ASMlib v3 (Doc ID 3076268.1).</p>
<h2 id="heading-e-qual-era-a-causa-disso">E qual era a causa disso?</h2>
<p>O problema está relacionado a uma incompatibilidade entre o <strong>kernel UEK7</strong> (usado nas versões mais recentes do Oracle Linux 8 e 9) e o driver <strong>ASMlib v3</strong>.</p>
<p>Essa incompatibilidade afeta diretamente o processo de leitura do cabeçalho do volume durante o mkfs.acfs.</p>
<p>De acordo com a nota 3076268.1, as versões afetadas do Oracle Database RU (DBRU) incluem:</p>
<ul>
<li><p>19.23.0.0.0 DBRU</p>
</li>
<li><p>19.24.0.0.0 DBRU</p>
</li>
<li><p>19.25.0.0.0 DBRU</p>
</li>
<li><p>19.26.0.0.0 DBRU</p>
</li>
<li><p>19.27.0.0.0 DBRU</p>
</li>
</ul>
<p>Ou seja, todas essas versões exigem a aplicação do patch para garantir compatibilidade plena do ACFS com o kernel mais recente do Oracle Linux.</p>
<h2 id="heading-solucao"><strong>Solução</strong></h2>
<p>A Oracle disponibilizou um patch corretivo (Patch 37405185) que resolve a incompatibilidade entre o ACFS, o kernel UEK7 e o ASMlib v3.</p>
<p>Antes da aplicação, é altamente recomendado realizar uma análise com o OPatchAuto:</p>
<pre><code class="lang-bash"><span class="hljs-variable">$ORACLE_HOME</span>/OPatch/opatchauto apply /tmp/37405185/  -oh /u01/app/19.0.0/grid -analyze
<span class="hljs-variable">$ORACLE_HOME</span>/OPatch/opatchauto apply /tmp/37405185/  -oh /u01/app/19.0.0/db -analyze
</code></pre>
<p>Se não houver conflitos, prossiga com a aplicação do patch. (Faça a análise para o grid_home e db_home.)</p>
<p>Em caso de RAC apliquem em todos os nós….</p>
<p>Aplicação do patch no Grid Infrastructure</p>
<pre><code class="lang-bash">[root@node1 tmp]<span class="hljs-comment"># $ORACLE_HOME/OPatch/opatchauto apply /tmp/37405185/ -oh /u01/app/19.0.0/grid</span>
</code></pre>
<p>Aplicação do patch no Oracle Database Home</p>
<pre><code class="lang-bash">[root@node1 tmp]<span class="hljs-comment"># $ORACLE_HOME/OPatch/opatchauto apply /tmp/37405185/ -oh /u01/app/19.0.0/db</span>
</code></pre>
<p>Apos a aplicação dos patches, a criação e montagem do ACFS foram concluídas normalmente no Oracle Linux 9.5, comprovando que o bug foi resolvido com a aplicação do patch 37405185.</p>
<pre><code class="lang-bash">/dev/asm/volume-157   30G  559M   30G   2% /VOLUME
</code></pre>
<h2 id="heading-conclusao"><strong>Conclusão</strong></h2>
<p>Esse caso reforça a importância de consultar a base de conhecimento da Oracle (MOS) sempre que um erro aparentemente genérico ocorre, principalmente em ambientes novos ou atualizados (como Oracle Linux 9.5 com UEK7).</p>
<p>Após aplicar o patch 37405185, o ACFS voltou a funcionar normalmente em ambiente Oracle 19.25.0.0.0 DBRU + Oracle Linux 9.5 (UEK7).</p>
<p>É isso pessoal, qualquer coisa só me chamar no <a target="_blank" href="https://www.linkedin.com/in/diogo-fernandess/"><strong>LinkedIn</strong></a> 🙂</p>
]]></content:encoded></item><item><title><![CDATA[Hot Backup de Máquinas Virtuais no ODA com KVM]]></title><description><![CDATA[(Safe Harbor) Antes de iniciarmos, informo que este procedimento não está documentado em nenhuma nota oficial da Oracle (MOS), embora eu mencione algumas referências ao longo do texto. Cheguei a este procedimento após conversar com vários profissiona...]]></description><link>https://diogofernandes.com.br/hot-backup-de-maquinas-virtuais-no-oda-com-kvm</link><guid isPermaLink="true">https://diogofernandes.com.br/hot-backup-de-maquinas-virtuais-no-oda-com-kvm</guid><category><![CDATA[KVM]]></category><category><![CDATA[Oracle]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Fri, 12 Sep 2025 13:00:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1757610058461/ece2667a-0a4a-4337-a6b3-4ec0abd588fb.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>(Safe Harbor) Antes de iniciarmos, informo que este procedimento <strong>não</strong> está documentado em nenhuma nota oficial da Oracle (MOS), embora eu mencione algumas referências ao longo do texto. Cheguei a este procedimento após conversar com vários profissionais de KVM e após extensa leitura em fóruns; ele foi testado diversas vezes antes da publicação deste artigo. Ainda assim, recomendo cautela: valide primeiro em ambiente de testes/homologação e só então aplique no ambiente de produção, após <strong>testes exaustivos</strong>. Já que o Safe Harbor foi pronunciado, bora colocar a mão na massa!!!</p>
<p>Hoje trago para vocês uma forma diferente de realizar backups no Oracle Database Appliance (ODA). Este artigo será dividido em duas partes: uma destinada às VMs Linux e outra às VMs Windows.</p>
<p>Normalmente, as notas de backup sugerem duas abordagens:</p>
<ol>
<li><p>Parar a máquina e copiar os discos.</p>
</li>
<li><p>Congelar a maquina, criar um snapshot do volume ACFS e copiar os arquivos para outro disco, conforme descrito na nota <strong>2779329.1</strong>.</p>
</li>
</ol>
<p>A primeira opção é, sem dúvida, a mais rápida e segura. Sempre que possível, escolha essa abordagem. Porém, na prática, raramente temos a chance de parar a máquina, e quase sempre precisamos realizar o backup das VMs em modo hot (a quente).</p>
<p>De acordo com a nota <strong>2779329.1</strong>, para esse cenário é necessário criar snapshots do ACFS, e mesmo assim os discos são colocados em modo “Freeze". E aí surgem dois problemas:</p>
<p>• Discos em locais diferentes: no ODA, caso exista um segundo disco anexado à VM, ele é armazenado em uma área distinta do disco de boot. Isso significa que será necessário criar dois snapshots em momentos diferentes, gerando inconsistências de data e hora, o que pode se tornar uma verdadeira dor de cabeça.</p>
<p>• Gestão dos snapshots: após o backup, é preciso excluir os snapshots do ACFS. Essa atividade, além de repetitiva, aumenta bastante a carga de trabalho administrativo.</p>
<p>E, ao realizar os backups pelas formas mencionadas acima, em determinado momento me surgiu a seguinte pergunta:</p>
<h2 id="heading-existe-alguma-forma-de-os-utilitarios-do-kvm-realizarem-o-backup-em-vez-de-depender-apenas-de-procedimentos-via-storage">Existe alguma forma de os utilitários do KVM realizarem o backup em vez de depender apenas de procedimentos via storage?</h2>
<p>Uma vez que a pergunta ficou ‘instalada’ na minha cabeça, comecei a conversar com alguns mestres em KVM e encontrei a seguinte solução.</p>
<pre><code class="lang-bash">virsh snapshot-create-as --domain linux_vm --name FILE_STAGE_BACKUP.TEMP --disk-only --atomic --quiesce
</code></pre>
<p>Mas calma, não vá executando o comando logo de cara (rs). Ainda temos um longo caminho de explicação e é preciso cautela quanto ao comando que será utilizado.</p>
<p>Agora vamos começar a analisar as estruturas da VM no KVM/ODA. Os comandos apresentados aqui podem ser executados tanto em um ODA quanto em um ambiente de KVM Server.</p>
<p>O primeiro passo é compreender quantos discos a VM possui. Para verificar isso, vamos executar o seguinte comando:</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh domblklist linux_vm</span>
 Target   Source
---------------------------------
 vda      /kvm/linux_boot
 vdb      /kvm/disco_secundario
</code></pre>
<p>Como podemos ver, temos 2 discos: o disco de boot e o disco <em>secundário</em>. Neste caso, o ambiente que estou utilizando é um KVM Server, mas a mesma regra se aplica ao ODA.</p>
<p>A outra verificação necessária é confirmar se o <em>KVM guest agent</em> está instalado na máquina virtual. Para isso, utilizamos o seguinte comando:</p>
<pre><code class="lang-bash">[root@guestvm ~]<span class="hljs-comment"># rpm -qa | grep guest</span>
qemu-guest-agent-9.0.0-10.el9_5.x86_64
</code></pre>
<p>Agora que já verificamos as informações sobre a quantidade de discos e a presença do <em>guest agent</em>, vamos de fato falar sobre o hot-backup.</p>
<p>Chegou o momento de executar o comando para iniciarmos o <em>backup</em> a quente. Esse comando, na prática, faz com que o próprio KVM crie o <em>snapshot</em> dos discos — e não o ACFS. Dessa forma, a máquina continuará online e todas as operações passarão a ser gravadas em um novo arquivo.</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh snapshot-create-as --domain linux_vm --name FILE_STAGE_BACKUP.TEMP --disk-only --atomic --quiesce</span>
Domain snapshot FILE_STAGE_BACKUP.TEMP created
</code></pre>
<p>Como dito anteriormente, esse comando colocará todos os discos em modo <em>snapshot</em>, criando novos apontamentos para eles. Assim, o disco boot_linux será transformado em boot_linux.FILE_STAGE_BACKUP.TEMP e o disco_secundario em disco_secundario.FILE_STAGE_BACKUP.TEMP, como demonstrado na saída abaixo:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757542246305/cf346e85-3604-404e-99b5-6dfb6cc0a197.png" alt class="image--center mx-auto" /></p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh snapshot-create-as --domain linux_vm --name FILE_STAGE_BACKUP.TEMP --disk-only --atomic --quiesce</span>
Domain snapshot FILE_STAGE_BACKUP.TEMP created
root@kvm-001:/kvm<span class="hljs-comment"># ls -lrt</span>
total 6488960
drwxr-xr-x 2 root         root       4096 Sep 10 13:54 outras_maquinas
-rw------- 1 libvirt-qemu kvm    35651584 Sep 10 19:07 disco_secundario
-rw------- 1 libvirt-qemu kvm  6605111296 Sep 10 19:07 linux_boot
-rw------- 1 libvirt-qemu kvm     1835008 Sep 10 19:10 linux_boot.FILE_STAGE_BACKUP.TEMP
-rw------- 1 libvirt-qemu kvm     2031616 Sep 10 19:10 disco_secundario.FILE_STAGE_BACKUP.TEMP
</code></pre>
<p>Dessa forma, as escritas passam a ser direcionadas para um novo ponto, encerrando as operações no linux_boot e iniciando em linux_boot.FILE_STAGE_BACKUP.TEMP e disco_secundario.FILE_STAGE_BACKUP.TEMP.</p>
<p>A partir desse momento, podemos copiar o disco para o diretório de nossa preferência.</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># scp linux_boot disco_secundario root@serverbackup:/backup</span>
</code></pre>
<p>Agora vamos resumir o que aconteceu:</p>
<ol>
<li>Primeiro, criamos um <em>snapshot</em> online da VM, forçando-a a escrever tudo em novos arquivos, com o sufixo .FILE_STAGE_BACKUP.TEMP.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757542087989/091cd73a-af77-4ee6-a0b1-a707b40414ec.png" alt class="image--center mx-auto" /></p>
<ol start="2">
<li><p>Ao executar o comando de <em>backup</em>, os arquivos da VM (linux_boot e disco_secundario) ficaram em um ponto consistente, permitindo que fossem copiados de forma segura para outro local.</p>
</li>
<li><p>Por fim, copiamos os arquivos para outro servidor.</p>
</li>
</ol>
<p>Pronto! Até aqui realizamos o <em>backup</em>, mas agora precisamos executar alguns passos para que as escritas voltem a ser direcionadas inteiramente para o disco linux_boot, e não mais para o linux_boot.FILE_STAGE_BACKUP.TEMP.</p>
<p>Como criamos o snap, vamos agora verificar e deletar apenas os metadados do mesmo.</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh snapshot-list linux_vm</span>
 Name                     Creation Time               State
---------------------------------------------------------------------
 FILE_STAGE_BACKUP.TEMP   2025-09-10 19:07:30 -0300   disk-snapshot
</code></pre>
<p>Caminho atual de onde o VM estava escrevendo:</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh domblklist linux_vm</span>
 Target   Source
--------------------------------------------------------
 vda      /kvm/linux_boot.FILE_STAGE_BACKUP.TEMP
 vdb      /kvm/disco_secundario.FILE_STAGE_BACKUP.TEMP
</code></pre>
<p>Agora chegamos a um ponto importante: neste momento vamos deletar apenas os METADADOS do <em>snapshot</em>, de forma que os arquivos ainda permanecerão no local.(sempre verifique e o sintaxe --metadata esta no final do comando)</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh snapshot-delete --domain linux_vm FILE_STAGE_BACKUP.TEMP --metadata</span>
Domain snapshot FILE_STAGE_BACKUP.TEMP deleted
</code></pre>
<p>Podemos ver agora que não existe mais snapshot:</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh snapshot-list linux_vm</span>
 Name   Creation Time   State
-------------------------------
</code></pre>
<p>Podemos observar que a máquina ainda continua apontando para os discos do <em>snapshot</em>, mesmo após a exclusão:</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh domblklist linux_vm</span>
 Target   Source
--------------------------------------------------------
 vda      /kvm/linux_boot.FILE_STAGE_BACKUP.TEMP
 vdb      /kvm/disco_secundario.FILE_STAGE_BACKUP.TEMP
</code></pre>
<p>Nesse momento a VM esta nessa situação:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757599891798/31e1c379-bba0-4737-b7de-33941a9bb72a.png" alt class="image--center mx-auto" /></p>
<p>Agora temos um impasse: o <em>metadata</em> do <em>snapshot</em> foi deletado, mas a máquina ainda está apontando para o arquivo gerado. Como fazer para voltar ao disco original sem perder as transações que ocorreram nesse período?</p>
<p>Para resolver isso, precisamos realizar um <em>merge</em> dos discos. No nosso caso, a VM possui dois discos: vda e vdb.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757600020196/06bc7873-d1c0-40b0-93c6-0db4570ce6b9.png" alt class="image--center mx-auto" /></p>
<p>Nesse momento, precisamos realizar o <em>merge</em> do disco /kvm/linux_boot.FILE_STAGE_BACKUP.TEMP para o disco /kvm/linux_boot, e do disco /kvm/disco_secundario.FILE_STAGE_BACKUP.TEMP para /kvm/disco_secundario.</p>
<p>O <em>merge</em> deve ser feito disco por disco. No nosso caso, a VM possui 2 discos, mas se a sua VM tiver 5 discos, será necessário executar o <em>merge</em> em cada um deles. Como aqui são apenas 2 discos, vamos ao comando:</p>
<p>Primeiro do VDA:</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh blockcommit linux_vm vda --active --verbose --pivot</span>
Block commit: [100.00 %]
Successfully pivoted
</code></pre>
<p>Depois do VDB:</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh blockcommit linux_vm vdb --active --verbose --pivot</span>
Block commit: [100.00 %]
Successfully pivoted
</code></pre>
<p>Pronto, agora vamos ver onde o KVM esta escrevendo as operações das VMs:</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh domblklist linux_vm</span>
 Target   Source
---------------------------------
 vda      /kvm/linux_boot
 vdb      /kvm/disco_secundario
</code></pre>
<p>Pronto, ao executar os comando de merge, ele sai dessa situação:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757600392395/7aa4747e-2c3f-4844-a16f-9377902cb808.png" alt class="image--center mx-auto" /></p>
<p>E retorna para essa situação:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757600538212/f57e720d-21d2-43dd-b847-e20da5a65835.png" alt class="image--center mx-auto" /></p>
<p>Podemos ver agora, que as escritas de fatos voltaram para os arquivos “originais”:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757600625046/0e40a59d-421f-41b6-a8ec-7ae453b591e5.png" alt class="image--center mx-auto" /></p>
<p>Mas, como podemos observar, os arquivos do <em>snapshot</em> ainda continuam no diretório. Nesse caso, por segurança, recomendo movê-los para um diretório temporário e, após algum tempo de validação, deletá-los.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757600755847/423d4cc6-0bb2-4f2f-90df-32ba31580467.png" alt class="image--center mx-auto" /></p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># ls -lrt</span>
total 7177096
drwxr-xr-x 2 root         root       4096 Sep 10 13:54 outras_maquinas
-rw------- 1 libvirt-qemu kvm   575406080 Sep 11 11:16 linux_boot.FILE_STAGE_BACKUP.TEMP
-rw------- 1 libvirt-qemu kvm    68747264 Sep 11 11:16 disco_secundario.FILE_STAGE_BACKUP.TEMP
-rw------- 1 libvirt-qemu kvm  6631194624 Sep 11 11:22 linux_boot
-rw------- 1 libvirt-qemu kvm    73924608 Sep 11 11:22 disco_secundario
root@kvm-001:/kvm<span class="hljs-comment"># mkdir retencao</span>
root@kvm-001:/kvm<span class="hljs-comment"># mv linux_boot.FILE_STAGE_BACKUP.TEMP retencao/</span>
root@kvm-001:/kvm<span class="hljs-comment"># mv disco_secundario.FILE_STAGE_BACKUP.TEMP retencao/</span>
root@kvm-001:/kvm<span class="hljs-comment"># ls -lrt</span>
total 6548156
drwxr-xr-x 2 root         root       4096 Sep 10 13:54 outras_maquinas
drwxr-xr-x 2 root         root       4096 Sep 11 11:25 retencao
-rw------- 1 libvirt-qemu kvm  6631194624 Sep 11 11:25 linux_boot
-rw------- 1 libvirt-qemu kvm    73924608 Sep 11 11:25 disco_secundario
</code></pre>
<p>Pronto, pessoal! Neste artigo descrevi os procedimentos para realizar o <em>backup online</em> de uma VM Linux. No próximo artigo, irei abordar o <em>backup online</em> de máquinas Windows.</p>
<p>Problemas conhecidos:</p>
<p>Existe um bug na estrutura do KVM (em <em>guest VMs</em> Linux). Ao criar um <em>snapshot</em> em máquinas que possuem mais de um disco, pode ocorrer o seguinte erro:</p>
<pre><code class="lang-bash">root@kvm-001:/kvm<span class="hljs-comment"># virsh snapshot-create-as --domain linux_vm --name FILE_STAGE_BACKUP.TEMP --disk-only --atomic --quiesce</span>
error: internal error: unable to execute QEMU agent <span class="hljs-built_in">command</span> <span class="hljs-string">'guest-fsfreeze-freeze'</span>: failed to open /disco_secundario: Permission denied
</code></pre>
<p>Esse erro pode ser contornado conforme a nota Doc ID 3087488.1 com seguinte comando (Comando dentro das <em>guest VMs</em> Linux):</p>
<pre><code class="lang-bash">[root@guestvm ~]<span class="hljs-comment"># setsebool -P virt_qemu_ga_read_nonsecurity_files 1</span>
[root@guestvm ~]<span class="hljs-comment"># sestatus -b |grep qemu</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757602081854/f5a8bd44-1ed8-466b-87c4-25c65884a732.png" alt class="image--center mx-auto" /></p>
<p>OLVM: internal error: unable to execute QEMU agent command 'guest-fsfreeze-freeze': failed to open /: Permission denied (Doc ID 3087488.1)</p>
<p>Após a implementação da solução descrita na nota, o comando para criar o <em>snapshot</em> será concluído com sucesso.</p>
<p><strong>Observação:</strong> todos esses procedimentos foram testados em ambientes de <em>guest VMs</em> com partições dos tipos <strong>XFS</strong> e <strong>EXT4</strong>. Caso a sua <em>guest VM</em> utilize outro sistema de arquivos, recomendo realizar testes exaustivos antes de aplicar em produção.</p>
<p>É isso pessoal, qualquer coisa só me chamar no <a target="_blank" href="https://www.linkedin.com/in/diogo-fernandess/">linkedin</a> 🙂</p>
]]></content:encoded></item><item><title><![CDATA[Ksplice: Configuração e Instalação em Ambientes Oracle Linux]]></title><description><![CDATA[Em um artigo anterior (link aqui), escrevi sobre como atualizar o Ksplice em um Exadata. Mas e quando falamos de máquinas “comuns”, como Dell, HP etc.? Em uma instalação simples, os pacotes do Ksplice não vêm configurados da mesma forma que nos Exada...]]></description><link>https://diogofernandes.com.br/ksplice-configuracao-e-instalacao-em-ambientes-oracle-linux</link><guid isPermaLink="true">https://diogofernandes.com.br/ksplice-configuracao-e-instalacao-em-ambientes-oracle-linux</guid><category><![CDATA[ksplice]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Tue, 02 Sep 2025 19:41:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756836676988/76b2de94-5886-4d2c-87e2-a504157b385f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Em um artigo anterior (<a target="_blank" href="https://diogofernandes.com.br/ksplice-no-exadata">link aqui</a>), escrevi sobre como atualizar o Ksplice em um Exadata. Mas e quando falamos de máquinas “comuns”, como Dell, HP etc.? Em uma instalação simples, os pacotes do Ksplice não vêm configurados da mesma forma que nos Exadatas. Por isso, precisamos instalar tudo do zero e realizar o registro no ULN (Unbreakable Linux Network) para aplicar as correções das últimas CVEs.</p>
<p>Nos passos abaixo, vou mostrar como fazer todo o processo do zero: quais pacotes devem ser selecionados, tanto na parte do terminal quanto no site <a target="_blank" href="http://linux.oracle.com">linux.oracle.com</a>, para concluir o procedimento.</p>
<p>Vamos instalar agora o rhn-setup para registrarmos o sistema operacional e configurarmos o Ksplice.</p>
<pre><code class="lang-bash">[root@Oracle02 ~]<span class="hljs-comment"># yum install rhn-setup -y </span>
Loaded plugins: langpacks, ulninfo
ol7_UEKR6                                                                                                                                                                                                                                                                                             | 3.0 kB  00:00:00     
ol7_latest                                                                                                                                                                                                                                                                                            | 3.6 kB  00:00:00     
(1/4): ol7_UEKR6/x86_64/updateinfo                                                                                                                                                                                                                                                                    | 1.3 MB  00:00:02     
(2/4): ol7_latest/x86_64/updateinfo                                                                                                                                                                                                                                                                   | 3.7 MB  00:00:04     
(3/4): ol7_latest/x86_64/primary_db                                                                                                                                                                                                                                                                   |  54 MB  00:00:41     
(4/4): ol7_UEKR6/x86_64/primary_db                                                                                                                                                                                                                                                                    |  83 MB  00:01:04     
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package rhn-setup.x86_64 0:2.0.2-24.0.7.el7 will be updated
--&gt; Processing Dependency: rhn-setup = 2.0.2-24.0.7.el7 <span class="hljs-keyword">for</span> package: rhn-setup-gnome-2.0.2-24.0.7.el7.x86_64
---&gt; Package rhn-setup.x86_64 0:2.0.2-24.0.11.el7 will be an update
--&gt; Processing Dependency: rhn-client-tools = 2.0.2-24.0.11.el7 <span class="hljs-keyword">for</span> package: rhn-setup-2.0.2-24.0.11.el7.x86_64
--&gt; Running transaction check
---&gt; Package rhn-client-tools.x86_64 0:2.0.2-24.0.7.el7 will be updated
--&gt; Processing Dependency: rhn-client-tools = 2.0.2-24.0.7.el7 <span class="hljs-keyword">for</span> package: rhn-check-2.0.2-24.0.7.el7.x86_64
---&gt; Package rhn-client-tools.x86_64 0:2.0.2-24.0.11.el7 will be an update
---&gt; Package rhn-setup-gnome.x86_64 0:2.0.2-24.0.7.el7 will be updated
---&gt; Package rhn-setup-gnome.x86_64 0:2.0.2-24.0.11.el7 will be an update
--&gt; Running transaction check
---&gt; Package rhn-check.x86_64 0:2.0.2-24.0.7.el7 will be updated
---&gt; Package rhn-check.x86_64 0:2.0.2-24.0.11.el7 will be an update
--&gt; Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================================================================================================================================
 Package                                                                          Arch                                                                   Version                                                                            Repository                                                                  Size
=============================================================================================================================================================================================================================================================================================================================
Updating:
 rhn-setup                                                                        x86_64                                                                 2.0.2-24.0.11.el7                                                                  ol7_latest                                                                  94 k
Updating <span class="hljs-keyword">for</span> dependencies:
 rhn-check                                                                        x86_64                                                                 2.0.2-24.0.11.el7                                                                  ol7_latest                                                                  58 k
 rhn-client-tools                                                                 x86_64                                                                 2.0.2-24.0.11.el7                                                                  ol7_latest                                                                 422 k
 rhn-setup-gnome                                                                  x86_64                                                                 2.0.2-24.0.11.el7                                                                  ol7_latest                                                                 160 k

Transaction Summary
=============================================================================================================================================================================================================================================================================================================================
Upgrade  1 Package (+3 Dependent packages)

Total size: 734 k
Downloading packages:
Running transaction check
Running transaction <span class="hljs-built_in">test</span>
Transaction <span class="hljs-built_in">test</span> succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Updating   : rhn-client-tools-2.0.2-24.0.11.el7.x86_64                                                                                                                                                                                                                                                                 1/8 
  Updating   : rhn-setup-2.0.2-24.0.11.el7.x86_64                                                                                                                                                                                                                                                                        2/8 
  Updating   : rhn-setup-gnome-2.0.2-24.0.11.el7.x86_64                                                                                                                                                                                                                                                                  3/8 
  Updating   : rhn-check-2.0.2-24.0.11.el7.x86_64                                                                                                                                                                                                                                                                        4/8 
  Cleanup    : rhn-setup-gnome-2.0.2-24.0.7.el7.x86_64                                                                                                                                                                                                                                                                   5/8 
  Cleanup    : rhn-setup-2.0.2-24.0.7.el7.x86_64                                                                                                                                                                                                                                                                         6/8 
  Cleanup    : rhn-check-2.0.2-24.0.7.el7.x86_64                                                                                                                                                                                                                                                                         7/8 
  Cleanup    : rhn-client-tools-2.0.2-24.0.7.el7.x86_64                                                                                                                                                                                                                                                                  8/8 
  Verifying  : rhn-setup-gnome-2.0.2-24.0.11.el7.x86_64                                                                                                                                                                                                                                                                  1/8 
  Verifying  : rhn-check-2.0.2-24.0.11.el7.x86_64                                                                                                                                                                                                                                                                        2/8 
  Verifying  : rhn-setup-2.0.2-24.0.11.el7.x86_64                                                                                                                                                                                                                                                                        3/8 
  Verifying  : rhn-client-tools-2.0.2-24.0.11.el7.x86_64                                                                                                                                                                                                                                                                 4/8 
  Verifying  : rhn-setup-gnome-2.0.2-24.0.7.el7.x86_64                                                                                                                                                                                                                                                                   5/8 
  Verifying  : rhn-check-2.0.2-24.0.7.el7.x86_64                                                                                                                                                                                                                                                                         6/8 
  Verifying  : rhn-client-tools-2.0.2-24.0.7.el7.x86_64                                                                                                                                                                                                                                                                  7/8 
  Verifying  : rhn-setup-2.0.2-24.0.7.el7.x86_64                                                                                                                                                                                                                                                                         8/8 

Updated:
  rhn-setup.x86_64 0:2.0.2-24.0.11.el7                                                                                                                                                                                                                                                                                       

Dependency Updated:
  rhn-check.x86_64 0:2.0.2-24.0.11.el7                                                                 rhn-client-tools.x86_64 0:2.0.2-24.0.11.el7                                                                 rhn-setup-gnome.x86_64 0:2.0.2-24.0.11.el7                                                                

Complete!
[root@Oracle02 ~]<span class="hljs-comment">#</span>
</code></pre>
<p>Após instalar o rhn-setup, acesse o site <a target="_blank" href="http://linux.oracle.com">linux.oracle.com</a>, gere a chave de registro (Auth token) e guarde o codigo, pois ele irá parecer somente uma vez, essa chave vamos usar ela no campo senha, do proximo step.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756837962148/35075d2c-4965-4238-ab7a-27f1744301e4.png" alt class="image--center mx-auto" /></p>
<p>Agora, vamos chamar o comando uln_register</p>
<pre><code class="lang-bash">[root@Oracle02 ~]<span class="hljs-comment"># uln_register</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756838766970/386ff695-ec41-4897-8a62-6e68c641ab95.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756838966228/4c223363-2d90-4cc8-9808-bfb156e81870.png" alt class="image--center mx-auto" /></p>
<p>e vai aparecendo outras telas…</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839013752/f1a7e121-a891-481a-a0ac-64124d6857e0.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839061537/63914494-e91b-435a-86a9-ffea65a52280.png" alt class="image--center mx-auto" /></p>
<p>e vai selecionando next até chegar nessa tela:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839113477/b3a29109-095d-42d6-8b78-45a1253dabb5.png" alt class="image--center mx-auto" /></p>
<p>next…</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839147259/c62a3ca8-ff54-4e5b-b349-894c2a5b6617.png" alt class="image--center mx-auto" /></p>
<p>next….</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839171121/fc763234-2d2d-4a3e-8ce2-66ce53c103c1.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839207167/b47abbbb-c030-4a03-9d52-121eadd622ad.png" alt class="image--center mx-auto" /></p>
<p>Agora vamos acessar o site linux.oracle.com</p>
<p>A lista de hosts cadastrados estarão logo a abaixo. Acabamos de registrar o host O Oracle02 e vamos clicar nele:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839340444/3e0ac957-b03f-4448-90bb-593c5cbc8f9c.png" alt class="image--center mx-auto" /></p>
<p>Assim que clicar no host ela tera irá abrir:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839560042/58380d8d-9fbc-4851-b526-84db9dc498cf.png" alt class="image--center mx-auto" /></p>
<p>clique em Manage Subscritptions</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839595311/eeac6a9c-bec7-47a2-85cb-3e70525053a1.png" alt class="image--center mx-auto" /></p>
<p>Essa tela irá aparecer:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839704936/3e86627b-10d0-4d34-9822-7c8b76819db8.png" alt class="image--center mx-auto" /></p>
<p>assim que arrastar o ksplice aware pra direita clique em save subscription.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1756839759914/9dfacb4a-410b-410a-984f-9d6fa9675fab.png" alt class="image--center mx-auto" /></p>
<p>Chega de print, vamos agora para o terminal novamente.</p>
<p>Registro e gerenciamento de atualizações finalizado vamos instalar o ksplice.</p>
<pre><code class="lang-bash">[root@Oracle02 ~]<span class="hljs-comment"># yum install ksplice uptrack</span>
</code></pre>
<pre><code class="lang-bash">[root@Oracle02 ~]<span class="hljs-comment"># yum install ksplice uptrack </span>
Loaded plugins: langpacks, rhnplugin, ulninfo
This system is receiving updates from ULN.
ol7_x86_64_ksplice                                                                                                                                                                                                                                                                                    | 3.0 kB  00:00:00     
ol7_x86_64_ksplice/updateinfo                                                                                                                                                                                                                                                                         | 9.6 kB  00:00:00     
ol7_x86_64_ksplice/primary_db                                                                                                                                                                                                                                                                         | 5.8 MB  00:00:03     
ol7_x86_64_userspace_ksplice                                                                                                                                                                                                                                                                          | 3.0 kB  00:00:00     
ol7_x86_64_userspace_ksplice/updateinfo                                                                                                                                                                                                                                                               |  90 kB  00:00:00     
ol7_x86_64_userspace_ksplice/primary_db                                                                                                                                                                                                                                                               | 328 kB  00:00:00     
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package ksplice.x86_64 0:1.0.62-1.el7 will be installed
--&gt; Processing Dependency: ksplice-core0 = 1.0.62-1.el7 <span class="hljs-keyword">for</span> package: ksplice-1.0.62-1.el7.x86_64
--&gt; Processing Dependency: ksplice-tools = 1.0.62-1.el7 <span class="hljs-keyword">for</span> package: ksplice-1.0.62-1.el7.x86_64
---&gt; Package uptrack.noarch 0:1.2.84-0.el7 will be installed
--&gt; Processing Dependency: perl(Fatal) <span class="hljs-keyword">for</span> package: uptrack-1.2.84-0.el7.noarch
--&gt; Processing Dependency: perl-autodie <span class="hljs-keyword">for</span> package: uptrack-1.2.84-0.el7.noarch
--&gt; Running transaction check
---&gt; Package ksplice-core0.x86_64 0:1.0.62-1.el7 will be installed
--&gt; Processing Dependency: libboost_filesystem-mt.so.1.53.0()(64bit) <span class="hljs-keyword">for</span> package: ksplice-core0-1.0.62-1.el7.x86_64
--&gt; Processing Dependency: libboost_python-mt.so.1.53.0()(64bit) <span class="hljs-keyword">for</span> package: ksplice-core0-1.0.62-1.el7.x86_64
--&gt; Processing Dependency: libboost_regex-mt.so.1.53.0()(64bit) <span class="hljs-keyword">for</span> package: ksplice-core0-1.0.62-1.el7.x86_64
---&gt; Package ksplice-tools.x86_64 0:1.0.62-1.el7 will be installed
--&gt; Processing Dependency: python-requests <span class="hljs-keyword">for</span> package: ksplice-tools-1.0.62-1.el7.x86_64
---&gt; Package perl-autodie.noarch 0:2.16-2.el7 will be installed
--&gt; Running transaction check
---&gt; Package boost-filesystem.x86_64 0:1.53.0-28.el7 will be installed
---&gt; Package boost-python.x86_64 0:1.53.0-28.el7 will be installed
---&gt; Package boost-regex.x86_64 0:1.53.0-28.el7 will be installed
---&gt; Package python-requests.noarch 0:2.6.0-10.el7 will be installed
--&gt; Processing Dependency: python-urllib3 &gt;= 1.10.2-1 <span class="hljs-keyword">for</span> package: python-requests-2.6.0-10.el7.noarch
--&gt; Running transaction check
---&gt; Package python-urllib3.noarch 0:1.10.2-7.0.1.el7 will be installed
--&gt; Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================================================================================================================================================================================================================
 Package                                                                        Arch                                                                 Version                                                                          Repository                                                                        Size
=============================================================================================================================================================================================================================================================================================================================
Installing:
 ksplice                                                                        x86_64                                                               1.0.62-1.el7                                                                     ol7_x86_64_ksplice                                                                11 k
 uptrack                                                                        noarch                                                               1.2.84-0.el7                                                                     ol7_x86_64_ksplice                                                               157 k
Installing <span class="hljs-keyword">for</span> dependencies:
 boost-filesystem                                                               x86_64                                                               1.53.0-28.el7                                                                    ol7_x86_64_latest                                                                 68 k
 boost-python                                                                   x86_64                                                               1.53.0-28.el7                                                                    ol7_x86_64_latest                                                                132 k
 boost-regex                                                                    x86_64                                                               1.53.0-28.el7                                                                    ol7_x86_64_latest                                                                295 k
 ksplice-core0                                                                  x86_64                                                               1.0.62-1.el7                                                                     ol7_x86_64_ksplice                                                               305 k
 ksplice-tools                                                                  x86_64                                                               1.0.62-1.el7                                                                     ol7_x86_64_ksplice                                                                94 k
 perl-autodie                                                                   noarch                                                               2.16-2.el7                                                                       ol7_x86_64_latest                                                                 77 k
 python-requests                                                                noarch                                                               2.6.0-10.el7                                                                     ol7_x86_64_latest                                                                 95 k
 python-urllib3                                                                 noarch                                                               1.10.2-7.0.1.el7                                                                 ol7_x86_64_latest                                                                102 k
Transaction Summary
=============================================================================================================================================================================================================================================================================================================================
Install  2 Packages (+8 Dependent packages)
Total download size: 1.3 M
Installed size: 5.6 M
Is this ok [y/d/N]: y
Downloading packages:
(1/10): boost-filesystem-1.53.0-28.el7.x86_64.rpm                                                                                                                                                                                                                                                     |  68 kB  00:00:00     
(2/10): boost-python-1.53.0-28.el7.x86_64.rpm                                                                                                                                                                                                                                                         | 132 kB  00:00:00     
(3/10): boost-regex-1.53.0-28.el7.x86_64.rpm                                                                                                                                                                                                                                                          | 295 kB  00:00:00     
(4/10): ksplice-1.0.62-1.el7.x86_64.rpm                                                                                                                                                                                                                                                               |  11 kB  00:00:00     
(5/10): ksplice-core0-1.0.62-1.el7.x86_64.rpm                                                                                                                                                                                                                                                         | 305 kB  00:00:00     
(6/10): ksplice-tools-1.0.62-1.el7.x86_64.rpm                                                                                                                                                                                                                                                         |  94 kB  00:00:00     
(7/10): perl-autodie-2.16-2.el7.noarch.rpm                                                                                                                                                                                                                                                            |  77 kB  00:00:00     
(8/10): python-requests-2.6.0-10.el7.noarch.rpm                                                                                                                                                                                                                                                       |  95 kB  00:00:00     
(9/10): python-urllib3-1.10.2-7.0.1.el7.noarch.rpm                                                                                                                                                                                                                                                    | 102 kB  00:00:00     
(10/10): uptrack-1.2.84-0.el7.noarch.rpm                                                                                                                                                                                                                                                              | 157 kB  00:00:00     
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                                                                                                        794 kB/s | 1.3 MB  00:00:01     
Running transaction check
Running transaction <span class="hljs-built_in">test</span>
Transaction <span class="hljs-built_in">test</span> succeeded
Running transaction
  Installing : boost-filesystem-1.53.0-28.el7.x86_64                                                                                                                                                                                                                                                                    1/10 
  Installing : boost-python-1.53.0-28.el7.x86_64                                                                                                                                                                                                                                                                        2/10 
  Installing : boost-regex-1.53.0-28.el7.x86_64                                                                                                                                                                                                                                                                         3/10 
  Installing : ksplice-core0-1.0.62-1.el7.x86_64                                                                                                                                                                                                                                                                        4/10 
  Installing : python-urllib3-1.10.2-7.0.1.el7.noarch                                                                                                                                                                                                                                                                   5/10 
  Installing : python-requests-2.6.0-10.el7.noarch                                                                                                                                                                                                                                                                      6/10 
  Installing : perl-autodie-2.16-2.el7.noarch                                                                                                                                                                                                                                                                           7/10 
  Installing : uptrack-1.2.84-0.el7.noarch                                                                                                                                                                                                                                                                              8/10 
  Installing : ksplice-tools-1.0.62-1.el7.x86_64                                                                                                                                                                                                                                                                        9/10 
  Installing : ksplice-1.0.62-1.el7.x86_64                                                                                                                                                                                                                                                                             10/10 
There are no existing modules on disk that need basename migration.
  Verifying  : python-requests-2.6.0-10.el7.noarch                                                                                                                                                                                                                                                                      1/10 
  Verifying  : perl-autodie-2.16-2.el7.noarch                                                                                                                                                                                                                                                                           2/10 
  Verifying  : ksplice-core0-1.0.62-1.el7.x86_64                                                                                                                                                                                                                                                                        3/10 
  Verifying  : ksplice-1.0.62-1.el7.x86_64                                                                                                                                                                                                                                                                              4/10 
  Verifying  : ksplice-tools-1.0.62-1.el7.x86_64                                                                                                                                                                                                                                                                        5/10 
  Verifying  : python-urllib3-1.10.2-7.0.1.el7.noarch                                                                                                                                                                                                                                                                   6/10 
  Verifying  : uptrack-1.2.84-0.el7.noarch                                                                                                                                                                                                                                                                              7/10 
  Verifying  : boost-regex-1.53.0-28.el7.x86_64                                                                                                                                                                                                                                                                         8/10 
  Verifying  : boost-python-1.53.0-28.el7.x86_64                                                                                                                                                                                                                                                                        9/10 
  Verifying  : boost-filesystem-1.53.0-28.el7.x86_64                                                                                                                                                                                                                                                                   10/10 
Installed:
  ksplice.x86_64 0:1.0.62-1.el7                                                                                                                                 uptrack.noarch 0:1.2.84-0.el7                                                                                                                                
Dependency Installed:
  boost-filesystem.x86_64 0:1.53.0-28.el7   boost-python.x86_64 0:1.53.0-28.el7   boost-regex.x86_64 0:1.53.0-28.el7   ksplice-core0.x86_64 0:1.0.62-1.el7   ksplice-tools.x86_64 0:1.0.62-1.el7   perl-autodie.noarch 0:2.16-2.el7   python-requests.noarch 0:2.6.0-10.el7   python-urllib3.noarch 0:1.10.2-7.0.1.el7  
Complete!
</code></pre>
<p>vamos atualizar as libs necessarias para o ksplice:</p>
<pre><code class="lang-bash">[root@Oracle02 ~]<span class="hljs-comment"># yum --disablerepo=* --enablerepo=ol7_x86_64_userspace_ksplice update</span>
</code></pre>
<p>Na parte de cima se atente a versao do seu O.S….<br />OEL8= yum --disablerepo=* --enablerepo=ol8_x86_64_userspace_ksplice update<br />OEL9 = yum --disablerepo=* --enablerepo=ol9_x86_64_userspace_ksplice update</p>
<pre><code class="lang-bash">[root@Oracle02 ~]<span class="hljs-comment"># yum --disablerepo=* --enablerepo=ol7_x86_64_userspace_ksplice update</span>
Loaded plugins: langpacks, rhnplugin, ulninfo
This system is receiving updates from ULN.
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package glibc.x86_64 0:2.17-326.0.9.el7_9 will be updated
---&gt; Package glibc.x86_64 2:2.17-326.0.9.ksplice1.el7_9.3 will be an update
--&gt; Processing Dependency: ksplice-helper &gt;= 1.0.51 <span class="hljs-keyword">for</span> package: 2:glibc-2.17-326.0.9.ksplice1.el7_9.3.x86_64
--&gt; Processing Dependency: ksplice-helper <span class="hljs-keyword">for</span> package: 2:glibc-2.17-326.0.9.ksplice1.el7_9.3.x86_64
--&gt; Processing Dependency: libksplice_helper.so()(64bit) <span class="hljs-keyword">for</span> package: 2:glibc-2.17-326.0.9.ksplice1.el7_9.3.x86_64
---&gt; Package glibc-common.x86_64 0:2.17-326.0.9.el7_9 will be updated
---&gt; Package glibc-common.x86_64 2:2.17-326.0.9.ksplice1.el7_9.3 will be an update
---&gt; Package glibc-devel.x86_64 0:2.17-326.0.9.el7_9 will be updated
---&gt; Package glibc-devel.x86_64 2:2.17-326.0.9.ksplice1.el7_9.3 will be an update
---&gt; Package glibc-headers.x86_64 0:2.17-326.0.9.el7_9 will be updated
---&gt; Package glibc-headers.x86_64 2:2.17-326.0.9.ksplice1.el7_9.3 will be an update
---&gt; Package openssl.x86_64 1:1.0.2k-19.0.1.el7 will be updated
---&gt; Package openssl.x86_64 2:1.0.2k-26.ksplice1.el7_9 will be an update
---&gt; Package openssl-libs.x86_64 1:1.0.2k-19.0.1.el7 will be updated
---&gt; Package openssl-libs.x86_64 2:1.0.2k-26.ksplice1.el7_9 will be an update
--&gt; Running transaction check
---&gt; Package ksplice-helper.x86_64 0:1.0.62-1.el7 will be installed
--&gt; Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================================================================================================================================================================================================================
 Package                                                                Arch                                                           Version                                                                                    Repository                                                                            Size
=============================================================================================================================================================================================================================================================================================================================
Updating:
 glibc                                                                  x86_64                                                         2:2.17-326.0.9.ksplice1.el7_9.3                                                            ol7_x86_64_userspace_ksplice                                                         3.7 M
 glibc-common                                                           x86_64                                                         2:2.17-326.0.9.ksplice1.el7_9.3                                                            ol7_x86_64_userspace_ksplice                                                          12 M
 glibc-devel                                                            x86_64                                                         2:2.17-326.0.9.ksplice1.el7_9.3                                                            ol7_x86_64_userspace_ksplice                                                         1.1 M
 glibc-headers                                                          x86_64                                                         2:2.17-326.0.9.ksplice1.el7_9.3                                                            ol7_x86_64_userspace_ksplice                                                         695 k
 openssl                                                                x86_64                                                         2:1.0.2k-26.ksplice1.el7_9                                                                 ol7_x86_64_userspace_ksplice                                                         494 k
 openssl-libs                                                           x86_64                                                         2:1.0.2k-26.ksplice1.el7_9                                                                 ol7_x86_64_userspace_ksplice                                                         1.2 M
Installing <span class="hljs-keyword">for</span> dependencies:
 ksplice-helper                                                         x86_64                                                         1.0.62-1.el7                                                                               ol7_x86_64_userspace_ksplice                                                          21 k
Transaction Summary
=============================================================================================================================================================================================================================================================================================================================
Install             ( 1 Dependent package)
Upgrade  6 Packages
Total download size: 19 M
Is this ok [y/d/N]: y
Downloading packages:
No Presto metadata available <span class="hljs-keyword">for</span> ol7_x86_64_userspace_ksplice
(1/7): glibc-2.17-326.0.9.ksplice1.el7_9.3.x86_64.rpm                                                                                                                                                                                                                                                 | 3.7 MB  00:00:02     
(2/7): glibc-common-2.17-326.0.9.ksplice1.el7_9.3.x86_64.rpm                                                                                                                                                                                                                                          |  12 MB  00:00:08     
(3/7): glibc-devel-2.17-326.0.9.ksplice1.el7_9.3.x86_64.rpm                                                                                                                                                                                                                                           | 1.1 MB  00:00:01     
(4/7): glibc-headers-2.17-326.0.9.ksplice1.el7_9.3.x86_64.rpm                                                                                                                                                                                                                                         | 695 kB  00:00:00     
(5/7): ksplice-helper-1.0.62-1.el7.x86_64.rpm                                                                                                                                                                                                                                                         |  21 kB  00:00:00     
(6/7): openssl-1.0.2k-26.ksplice1.el7_9.x86_64.rpm                                                                                                                                                                                                                                                    | 494 kB  00:00:00     
(7/7): openssl-libs-1.0.2k-26.ksplice1.el7_9.x86_64.rpm                                                                                                                                                                                                                                               | 1.2 MB  00:00:01     
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                                                                                                        1.2 MB/s |  19 MB  00:00:15     
Running transaction check
Running transaction <span class="hljs-built_in">test</span>
Transaction <span class="hljs-built_in">test</span> succeeded
Running transaction
  Installing : ksplice-helper-1.0.62-1.el7.x86_64                                                                                                                                                                                                                                                                       1/13 
  Updating   : 2:glibc-common-2.17-326.0.9.ksplice1.el7_9.3.x86_64                                                                                                                                                                                                                                                      2/13 
  Updating   : 2:glibc-2.17-326.0.9.ksplice1.el7_9.3.x86_64                                                                                                                                                                                                                                                             3/13 
  Updating   : 2:openssl-libs-1.0.2k-26.ksplice1.el7_9.x86_64                                                                                                                                                                                                                                                           4/13 
  Updating   : 2:glibc-headers-2.17-326.0.9.ksplice1.el7_9.3.x86_64                                                                                                                                                                                                                                                     5/13 
  Updating   : 2:glibc-devel-2.17-326.0.9.ksplice1.el7_9.3.x86_64                                                                                                                                                                                                                                                       6/13 
  Updating   : 2:openssl-1.0.2k-26.ksplice1.el7_9.x86_64                                                                                                                                                                                                                                                                7/13 
  Cleanup    : glibc-devel-2.17-326.0.9.el7_9.x86_64                                                                                                                                                                                                                                                                    8/13 
  Cleanup    : 1:openssl-1.0.2k-19.0.1.el7.x86_64                                                                                                                                                                                                                                                                       9/13 
  Cleanup    : glibc-headers-2.17-326.0.9.el7_9.x86_64                                                                                                                                                                                                                                                                 10/13 
  Cleanup    : 1:openssl-libs-1.0.2k-19.0.1.el7.x86_64                                                                                                                                                                                                                                                                 11/13 
  Cleanup    : glibc-common-2.17-326.0.9.el7_9.x86_64                                                                                                                                                                                                                                                                  12/13 
  Cleanup    : glibc-2.17-326.0.9.el7_9.x86_64                                                                                                                                                                                                                                                                         13/13 
  Verifying  : 2:glibc-2.17-326.0.9.ksplice1.el7_9.3.x86_64                                                                                                                                                                                                                                                             1/13 
  Verifying  : 2:glibc-devel-2.17-326.0.9.ksplice1.el7_9.3.x86_64                                                                                                                                                                                                                                                       2/13 
  Verifying  : 2:glibc-common-2.17-326.0.9.ksplice1.el7_9.3.x86_64                                                                                                                                                                                                                                                      3/13 
  Verifying  : 2:openssl-libs-1.0.2k-26.ksplice1.el7_9.x86_64                                                                                                                                                                                                                                                           4/13 
  Verifying  : ksplice-helper-1.0.62-1.el7.x86_64                                                                                                                                                                                                                                                                       5/13 
  Verifying  : 2:glibc-headers-2.17-326.0.9.ksplice1.el7_9.3.x86_64                                                                                                                                                                                                                                                     6/13 
  Verifying  : 2:openssl-1.0.2k-26.ksplice1.el7_9.x86_64                                                                                                                                                                                                                                                                7/13 
  Verifying  : glibc-headers-2.17-326.0.9.el7_9.x86_64                                                                                                                                                                                                                                                                  8/13 
  Verifying  : glibc-devel-2.17-326.0.9.el7_9.x86_64                                                                                                                                                                                                                                                                    9/13 
  Verifying  : glibc-common-2.17-326.0.9.el7_9.x86_64                                                                                                                                                                                                                                                                  10/13 
  Verifying  : glibc-2.17-326.0.9.el7_9.x86_64                                                                                                                                                                                                                                                                         11/13 
  Verifying  : 1:openssl-libs-1.0.2k-19.0.1.el7.x86_64                                                                                                                                                                                                                                                                 12/13 
  Verifying  : 1:openssl-1.0.2k-19.0.1.el7.x86_64                                                                                                                                                                                                                                                                      13/13 
Dependency Installed:
  ksplice-helper.x86_64 0:1.0.62-1.el7                                                                                                                                                                                                                                                                                       
Updated:
  glibc.x86_64 2:2.17-326.0.9.ksplice1.el7_9.3     glibc-common.x86_64 2:2.17-326.0.9.ksplice1.el7_9.3     glibc-devel.x86_64 2:2.17-326.0.9.ksplice1.el7_9.3     glibc-headers.x86_64 2:2.17-326.0.9.ksplice1.el7_9.3     openssl.x86_64 2:1.0.2k-26.ksplice1.el7_9     openssl-libs.x86_64 2:1.0.2k-26.ksplice1.el7_9    
Complete!
</code></pre>
<p><strong>E agora vamos para o grand finale: aplicar as correções de segurança (CVEs) com o Ksplice.</strong></p>
<pre><code class="lang-bash">yum install uptrack-updates-$(uname -r)
</code></pre>
<pre><code class="lang-bash">[49jdhygv] CVE-2021-20239: Information leak via cgroup BPF filter.
[36ap11tk] CVE-2021-3178: Path traversal vulnerability <span class="hljs-keyword">in</span> NFSv3 filesystem.
[j5snfa4g] CVE-2020-27825: Race condition <span class="hljs-keyword">in</span> kernel tracing buffers causes DoS.
[tlekvfju] CVE-2021-29154: Code execution <span class="hljs-keyword">in</span> eBPF JIT compiler.
[oy5v22yn] Bad <span class="hljs-built_in">return</span> value when adding an element to RAR Correctable Errors Collector.
[7108zh9o] CVE-2020-36310: Denial-of-service <span class="hljs-keyword">in</span> KVM support due to a nested page fault.
[r8zov234] CVE-2021-31916: Information disclosure due to out-of-bounds writes <span class="hljs-keyword">in</span> the Multi-device driver.
[i1vv7a8s] Improved update to CVE-2020-28374: Access control bypass when reading or writing TCM devices.
[j7hp93tv] CVE-2021-23133: Multiple vulnerabilities due to a race condition <span class="hljs-keyword">in</span> SCTP
</code></pre>
<p>Pode acontecer durante a instalação dá esse aviso:</p>
<pre><code class="lang-bash">
  Installing : uptrack-updates-5.4.17-2102.201.3.el7uek.x86_64-20241022-0.noarch                                                                                                                                                                                                                                         1/1 
It appears that another Uptrack process is currently running on this
system. Please <span class="hljs-built_in">wait</span> a minute and try again.  If you are unable to
resolve this issue, please contact Oracle support.
  Verifying  : uptrack-updates-5.4.17-2102.201.3.el7uek.x86_64-20241022-0.noarch
</code></pre>
<p>Caso aconteça isso, espere 5 minutos e execute esse comando:</p>
<pre><code class="lang-bash">/usr/bin/python2 /usr/sbin/uptrack-upgrade -y --all
</code></pre>
<p>É isso, pessoal! Espero que este artigo ajude você a configurar o Ksplice no Oracle Linux.</p>
<p>E por último, mas não menos importante: para utilizar o Ksplice no Oracle Linux é necessário ter suporte ativo. Verifique se o seu CSI possui cobertura para o Ksplice no Oracle Linux.</p>
]]></content:encoded></item><item><title><![CDATA[GUOB TECH DAY 2025 Slide: "Verificando a integridade da sua replicação com COMPARE"]]></title><description><![CDATA[Primeiramente, gostaria de agradecer a todos que estiveram presentes no GUOB. Tenho certeza de que ninguém saiu do evento da mesma forma que entrou rs.
Como prometido durante minha apresentação, estou compartilhando os slides da ferramenta COMPARE, a...]]></description><link>https://diogofernandes.com.br/guob-tech-day-2025-slide-verificando-a-integridade-da-sua-replicacao-com-compare</link><guid isPermaLink="true">https://diogofernandes.com.br/guob-tech-day-2025-slide-verificando-a-integridade-da-sua-replicacao-com-compare</guid><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Thu, 28 Aug 2025 21:43:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756339570089/9092e1f5-8824-4d1f-a138-9455c2913e90.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Primeiramente, gostaria de agradecer a todos que estiveram presentes no GUOB. Tenho certeza de que ninguém saiu do evento da mesma forma que entrou rs.</p>
<p>Como prometido durante minha apresentação, estou compartilhando os slides da ferramenta COMPARE, apresentados no GUOB Tech Day 2025.</p>
<p>Logo abaixo, você também encontrará o link da documentação completa, onde poderá acessar todos os passos de instalação e configuração da ferramenta.</p>
<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vRkYCb-1LWsOfhDpkZok2xZMfdIEYuw9DwB6AYcvxsD5zQl4r4uYdUBPUkIc7n_ew/pubembed?start=false&amp;loop=false&amp;delayms=3000" width="799" height="500"></iframe>

<p>Link da documentação:</p>
<p><a target="_blank" href="https://compare.hashnode.space/default-guide/compare">https://compare.hashnode.space/default-guide/compare</a></p>
<p>Vídeo de como fazer o deploy e configurar o COMPARE:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=XrOZ5aPCi3E">https://www.youtube.com/watch?v=XrOZ5aPCi3E</a></div>
<p> </p>
<p>Qualquer duvida pessoal segue meus contatos:</p>
<p>📧 <strong>E-mail:</strong> <a target="_blank" href="mailto:diogo.fernandes@godata.com.br"><strong>diogo.fernandes@godata.com.br</strong></a><br />💼 <strong>LinkedIn:</strong> <a target="_blank" href="http://linkedin.com/in/diogo-fernandess"><strong>linkedin.com/in/diogo-fernandess</strong></a></p>
]]></content:encoded></item><item><title><![CDATA[ExaCC – Discos Offline após Aplicação de Patch]]></title><description><![CDATA[Caso ainda não esteja familiarizado com o ExaCC, segue abaixo uma explicação rápida sobre como funciona o gerenciamento e aplicação de patches.
O ExaCC, por ser uma solução virtualizada, possui duas camadas principais:

Dom0: camada base (bare metal)...]]></description><link>https://diogofernandes.com.br/exacc-discos-offline-apos-aplicacao-de-patch</link><guid isPermaLink="true">https://diogofernandes.com.br/exacc-discos-offline-apos-aplicacao-de-patch</guid><category><![CDATA[Oracle]]></category><category><![CDATA[Oraclecloudinfrastructure]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Mon, 21 Apr 2025 02:14:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1745201821970/fee74f15-92f4-41da-bd92-b5f6f731084f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Caso ainda não esteja familiarizado com o ExaCC, segue abaixo uma explicação rápida sobre como funciona o gerenciamento e aplicação de patches.</p>
<p>O ExaCC, por ser uma solução virtualizada, possui duas camadas principais:</p>
<ul>
<li><p><strong>Dom0</strong>: camada base (bare metal), responsável pelo gerenciamento físico dos recursos.</p>
</li>
<li><p><strong>DomU</strong>: camada virtual onde, de fato, os bancos de dados residem e operam.</p>
</li>
</ul>
<p>A aplicação de patches no <strong>Dom0</strong> é de responsabilidade exclusiva da Oracle, enquanto os patches no <strong>DomU</strong> são de responsabilidade do cliente (nossa).</p>
<p>Sabendo disso, em uma das janelas de manutenção programadas pela Oracle para aplicação de patch no Dom0 — que sempre haviam sido concluídas com sucesso — ocorreu um incidente em que <strong>seis discos ficaram offline no ASM</strong> ao final do processo.</p>
<p>Assim que concluiu o patch, seis discos do grupo RECO ficaram offline e ficavam oscilando entre seis discos offline e um disco. Achei esse comportamento estranho. Minha primeira ação foi verificar os discos presencialmente para ver se havia algum aviso, e chegando lá, tudo estava "verde", ou seja, tudo ok.</p>
<pre><code class="lang-plaintext">ASMCMD&gt; lsdg
State    Type  Rebal  Sector  Logical_Sector  Block       AU   Total_MB    Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  HIGH  N         512             512   4096  4194304  000000000  000000000                0        000000000              0             Y  DATAC1/
MOUNTED  HIGH  N         512             512   4096  4194304  000000000   000000000               0        000000000              6             N  RECOC1/
</code></pre>
<p>Analisando o log do ASM encontrei o seguinte aviso:</p>
<pre><code class="lang-plaintext">ORA-15025: could not open disk "/dev/exadata_quorum/QD_RECOC1_XXXXXXXXXXX"
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
WARNING: Read Failed. group:2 disk:18 AU:0 offset:0 size:4096
</code></pre>
<p>Sem delongas abri um chamado na Oracle informando todos os logs e o contexto do incidente e eles pediram pra executar esse comando:</p>
<pre><code class="lang-plaintext">asmcmd lsdsk |grep exadata_quorum|xargs ls -l
</code></pre>
<p>Ao executar tive a seguinte saída em 1 dos nós:</p>
<pre><code class="lang-plaintext">
[grid@sv-xxxxxxxxxx ~]$ asmcmd lsdsk |grep exadata_quorum|xargs ls -l
ls: cannot access /dev/exadata_quorum/QD_RECOC1_XXXXXXXXXXX01: No such file or directory
lrwxrwxrwx 1 root root 8 Mar 25 12:25 /dev/exadata_quorum/QD_DATAC1_XXXXXXXXXXX02 -&gt; …/dm-18
lrwxrwxrwx 1 root root 8 Mar 25 12:25 /dev/exadata_quorum/QD_DATAC1_XXXXXXXXXXX03 -&gt; …/dm-16
lrwxrwxrwx 1 root root 8 Mar 25 12:25 /dev/exadata_quorum/QD_RECOC1_XXXXXXXXXXX04 -&gt; …/dm-17
</code></pre>
<p>No nó 2, todos os discos do quorum estavam visíveis; já no nó 1, um dos membros não era exibido.</p>
<p>Ja com bastantes informações coletadas, nossos amigos indianos nos passaram a seguinte nota:</p>
<p><strong>Infrastructure Maintenance Fails During Cell Update Due to Missing Quorum Disk Device Links in a VM (Doc ID 2978693.1)</strong></p>
<p>A nota pede a execução dos seguintes comandos para os quorum discos serem “reapresentados ao O.S”</p>
<pre><code class="lang-plaintext">#udevadm control --reload-rules
#udevadm trigger
</code></pre>
<p>Após a execução do comando o diskgroup ja “flegou” o Rebal = Y e ja baixou os discos offline para 1</p>
<pre><code class="lang-plaintext">ASMCMD&gt; lsdg
State    Type  Rebal  Sector  Logical_Sector  Block       AU   Total_MB    Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  HIGH  N         512             512   4096  4194304  000000000  000000000                0        000000000              0             Y  DATAC1/
MOUNTED  HIGH  Y         512             512   4096  4194304  000000000   000000000               0        000000000              1             N  RECOC1/
</code></pre>
<p>Depois de 2 horas, todos os discos estavam online novamente.</p>
<pre><code class="lang-plaintext">ASMCMD&gt; lsdg
State    Type  Rebal  Sector  Logical_Sector  Block       AU   Total_MB    Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  HIGH  N         512             512   4096  4194304  000000000  000000000                0        000000000              0             Y  DATAC1/
MOUNTED  HIGH  N         512             512   4096  4194304  000000000   000000000               0        000000000              0             N  RECOC1/
</code></pre>
<p>Assim como a nota menciona, infelizmente o ambiente estava em uma das versões causadas pelo bug:</p>
<p>Exadata image version is 22.1.10.0.0, 22.1.13.0.0, 22.1.14.0.0, or 22.1.15.0.0.</p>
<p>O procedimento, como a nota reforça, pode ser executado “online” sem impacto a produção.</p>
<p>Espero que este artigo seja útil em situações futuras 🙂.</p>
]]></content:encoded></item><item><title><![CDATA[Múltiplos EXTTRAILs (DIRDAT) no mesmo Extract.]]></title><description><![CDATA[Muitas vezes, ao configurar o extract, assumimos, de forma equivocada, que ele pode ter apenas um único EXTTRAIL (dirdat). Eu mesmo já tive essa impressão, pois muitos exemplos na documentação e em artigos seguem essa abordagem. Com isso, por hábito,...]]></description><link>https://diogofernandes.com.br/multiplos-exttrails-dirdat-no-mesmo-extract</link><guid isPermaLink="true">https://diogofernandes.com.br/multiplos-exttrails-dirdat-no-mesmo-extract</guid><category><![CDATA[Oracle]]></category><category><![CDATA[goldengate]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Tue, 18 Feb 2025 22:38:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1739968547935/b8c1a772-ceac-4fe1-8d3a-5f3958bb7ab5.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Muitas vezes, ao configurar o extract, assumimos, de forma equivocada, que ele pode ter apenas um único EXTTRAIL (dirdat). Eu mesmo já tive essa impressão, pois muitos exemplos na documentação e em artigos seguem essa abordagem. Com isso, por hábito, acabamos incluindo vários owners dentro do mesmo extract, utilizando um único trail.</p>
<p>E foi assim até o dia em que me deparei com uma base que gerava, sabe-se lá quantos <em>dirdat</em> por minuto. O problema é que, por causa disso, os outros <strong>owners</strong>, que tinham poucas transações, começaram a apresentar um grande volume de <strong>lag</strong> nos seus <strong>replicats</strong>. No entanto, o <strong>lag</strong> não era causado pela quantidade de transações, e sim pelo grande volume de <em>dirdat</em> que o <strong>replicat</strong> precisava percorrer. Cada um desses <em>dirdat</em> continha poucas transações dos <strong>owners</strong> que geravam menos atividade, mas, devido ao alto volume geral, o processamento ficava atrasado.</p>
<p>A questão é: como resolver isso? Como separar os <em>dirdat</em> de forma que cada <strong>owner</strong> tenha suas operações registradas separadamente?</p>
<p>Primeiro, vou mostrar como o "padrão" é implementado e, em seguida, demonstrarei como realizar essa separação,</p>
<p>Criando o arquivo de parâmetro e_prod.prm</p>
<pre><code class="lang-bash">GGSCI (777bca39a994) 2&gt; dblogin USERIDALIAS ORIGEM19C
Successfully logged into database CDB<span class="hljs-variable">$ROOT</span>.

GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 5&gt; edit param e_prod</span>

EXTRACT E_PROD
USERIDALIAS ORIGEM19C



EXTTRAIL ./dirdat/aa

TABLE SRC19EEPDB1.OWNER1.*;
TABLE SRC19EEPDB1.OWNER2.*;
TABLE SRC19EEPDB1.OWNER3.*;
</code></pre>
<p>Vamos registrar e adicionar o Extract:</p>
<pre><code class="lang-bash">GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 10&gt; REGISTER EXTRACT E_PROD DATABASE CONTAINER (SRC19EEPDB1) ;</span>

2025-02-18 19:36:19  INFO    OGG-02003  Extract E_PROD successfully registered with database at SCN 21184522.

GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 11&gt; ADD EXTRACT E_PROD, INTEGRATED TRANLOG, BEGIN NOW</span>
EXTRACT (Integrated) added.

GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 12&gt; ADD EXTTRAIL ./dirdat/aa, EXTRACT E_PROD</span>
EXTTRAIL added.
</code></pre>
<p>Obtendo informações do Extract:</p>
<pre><code class="lang-bash">GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 13&gt; info e_prod</span>

EXTRACT    E_PROD    Initialized   2025-02-18 19:36   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:01:44 ago)
Log Read Checkpoint  Oracle Integrated Redo Logs
                     2025-02-18 19:36:52
                     SCN 0.0 (0)
</code></pre>
<p>Iniciando Extract:</p>
<pre><code class="lang-bash">GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 14&gt; start e_prod</span>

Sending START request to MANAGER ...
EXTRACT E_PROD starting

GGSCI (777bca39a994) 3&gt; info e_prod, detail

EXTRACT    E_PROD    Last Started 2025-02-18 19:45   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:09 ago)
Process ID           78817
Log Read Checkpoint  Oracle Integrated Redo Logs
                     2025-02-18 19:46:14
                     SCN 0.21225987 (21225987)

  Target Extract Trails:

  Trail Name                                       Seqno        RBA     Max MB Trail Type

  ./dirdat/aa                                          0     409753        500 EXTTRAIL
</code></pre>
<p>Vamos popular as tabelas dos respectivos owners e acompanhar a gravação:</p>
<pre><code class="lang-bash">SQL&gt; BEGIN
    FOR i IN 1001..2000 LOOP
        INSERT INTO OWNER1.TABELA_EXEMPLO (ID, NOME, DATA_CRIACAO)
        VALUES (i, <span class="hljs-string">'Registro '</span> || i, SYSDATE - DBMS_RANDOM.VALUE(1, 365));

        INSERT INTO OWNER2.TABELA_EXEMPLO (ID, NOME, DATA_CRIACAO)
        VALUES (i, <span class="hljs-string">'Registro '</span> || i, SYSDATE - DBMS_RANDOM.VALUE(1, 365));
         2   
        INSERT INTO OWNER3.TABELA_EXEMPLO (ID, NOME, DATA_CRIACAO)
        VALUES (i, <span class="hljs-string">'Registro '</span> || i, SYSDATE - DBMS_RANDOM.VALUE(1, 365));

        -- Faz o commit a cada 100 registros para evitar consumo excessivo de UNDO
        IF MOD(i, 100) = 0 THEN
  3              COMMIT;
        END IF;
    END LOOP;

    COMMIT;
END;
/  4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20  

PL/SQL procedure successfully completed.
</code></pre>
<p>Podemos ver que todos os registros foram para um único dirdat, o “aa”.</p>
<pre><code class="lang-bash">[oracle@777bca39a994 dirdat]$ ls -lrt
total 808
-rw-r----- 1 oracle oinstall 824151 Feb 18 19:50 aa000000000
</code></pre>
<p>Nesse momento, o Extract está operando dessa forma:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1739915787220/2e1c940c-e888-4108-b0b0-1e5ebade2d58.gif" alt class="image--center mx-auto" /></p>
<p>Como podemos ver acima, o extract está escrevendo a captura dos 3 owners em um único arquivo <code>./dirdat/aa</code>. A seguir, vamos ver como separar para que cada owner escreva em um dirdat separado.</p>
<p>Agora vamos adicionar o Extract de maneira que cada owner “escreva“ no seu próprio dirdat.</p>
<pre><code class="lang-bash">GGSCI (777bca39a994) 2&gt; edit param e_prod

EXTRACT E_PROD
USERIDALIAS ORIGEM19C



EXTTRAIL ./dirdat/aa
TABLE SRC19EEPDB1.OWNER1.*;

EXTTRAIL ./dirdat/ab
TABLE SRC19EEPDB1.OWNER2.*;

EXTTRAIL ./dirdat/ac
TABLE SRC19EEPDB1.OWNER3.*;
</code></pre>
<p>Agora vamos adicionar o Extract</p>
<pre><code class="lang-bash">GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 4&gt; REGISTER EXTRACT E_PROD DATABASE CONTAINER (SRC19EEPDB1) ;</span>

2025-02-18 20:09:24  INFO    OGG-02003  Extract E_PROD successfully registered with database at SCN 21234029.


GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 5&gt; ADD EXTRACT E_PROD, INTEGRATED TRANLOG, BEGIN NOW</span>
EXTRACT (Integrated) added.
</code></pre>
<p>Agora, assim como separamos os exttrail no arquivo de parâmetros, devemos adicionar os 3 ao extract também.</p>
<pre><code class="lang-bash">GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 6&gt; ADD EXTTRAIL ./dirdat/aa, EXTRACT E_PROD</span>
EXTTRAIL added.

GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 7&gt; ADD EXTTRAIL ./dirdat/ab, EXTRACT E_PROD</span>
EXTTRAIL added.

GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 8&gt; ADD EXTTRAIL ./dirdat/ac, EXTRACT E_PROD</span>
</code></pre>
<p>Pronto, agora vamos iniciar o Extract.</p>
<pre><code class="lang-bash">GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 9&gt; start e_prod</span>

Sending START request to MANAGER ...
EXTRACT E_PROD starting

GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 10&gt; info e_prod</span>

EXTRACT    E_PROD    Last Started 2025-02-18 20:12   Status RUNNING
Checkpoint Lag       00:03:22 (updated 00:00:01 ago)
Process ID           78851
Log Read Checkpoint  Oracle Integrated Redo Logs
                     2025-02-18 20:09:34
                     SCN 0.0 (0)


GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 11&gt; info e_prod, detail</span>

EXTRACT    E_PROD    Last Started 2025-02-18 20:12   Status RUNNING
Checkpoint Lag       00:03:22 (updated 00:00:06 ago)
Process ID           78851
Log Read Checkpoint  Oracle Integrated Redo Logs
                     2025-02-18 20:09:34
                     SCN 0.0 (0)

  Target Extract Trails:

  Trail Name                                       Seqno        RBA     Max MB Trail Type

  ./dirdat/aa                                          0       1289        500 EXTTRAIL  
  ./dirdat/ab                                          0       1289        500 EXTTRAIL  
  ./dirdat/ac                                          0       1289        500 EXTTRAIL
</code></pre>
<p>Pronto, agora vamos popular as tabelas de origem novamente para vermos como serão gerados os dirdats:</p>
<pre><code class="lang-bash">SQL&gt; BEGIN
    FOR i IN 2001..3000 LOOP
        INSERT INTO OWNER1.TABELA_EXEMPLO (ID, NOME, DATA_CRIACAO)
        VALUES (i, <span class="hljs-string">'Registro '</span> || i, SYSDATE - DBMS_RANDOM.VALUE(1, 365));

        INSERT INTO OWNER2.TABELA_EXEMPLO (ID, NOME, DATA_CRI  2  ACAO)
        VALUES (i, <span class="hljs-string">'Registro '</span> || i, SYSDATE - DBMS_RANDOM.VALUE(1, 365));

        INSERT INTO OWNER3.TABELA_EXEMPLO (ID, NOME, DATA_CRIACAO)
        VALUES (i, <span class="hljs-string">'Registro '</span> || i, SYSDATE - DBMS_RANDOM.VALUE(1, 365));

        -- Faz o commit a cada 100 registros para evitar consumo excessivo de UNDO
  3          IF MOD(i, 100) = 0 THEN
            COMMIT;
        END IF;
    END LOOP;

    COMMIT;
END;
/  4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20  

PL/SQL procedure successfully
</code></pre>
<p>Verificando os dirdats gerados:</p>
<pre><code class="lang-bash">GGSCI (777bca39a994 as C<span class="hljs-comment">##OGG@SRC19EE/CDB$ROOT) 12&gt; exit</span>
[oracle@777bca39a994 dirdat]$ ls -lrt
total 420
-rw-r----- 1 oracle oinstall 140230 Feb 18 20:21 ac000000000
-rw-r----- 1 oracle oinstall 140230 Feb 18 20:21 ab000000000
-rw-r----- 1 oracle oinstall 140230 Feb 18 20:21 aa000000000
</code></pre>
<p>Pronto, agora nosso Extract está operando dessa forma:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1739916154136/908b14fb-d9e3-46a1-a5c9-64f8545984c3.gif" alt class="image--center mx-auto" /></p>
<p>Na imagem acima, agora podemos ver que o OWNER1 está “escrevendo” no <code>./dirdat/aa</code> o OWNER2 no <code>./dirdat/ab</code> e o OWNER3 no <code>./dirdat/ac</code></p>
<p>É isso, pessoal, espero que este artigo tenha contribuído de alguma forma para o seu projeto atual de OGG ou nos próximos 🙂.</p>
]]></content:encoded></item><item><title><![CDATA[Expandindo Storage no ODA X8M]]></title><description><![CDATA[Expandir o storage em alguns appliances pode ser um pouco complicado. Mas esse não é o caso do ODA (isso, é claro, desde que você não se depare com um bug no caminho rs).
No artigo de hoje, vamos expandir um ODA que já estava com 8 discos e que agora...]]></description><link>https://diogofernandes.com.br/expandindo-storage-no-oda-x8m</link><guid isPermaLink="true">https://diogofernandes.com.br/expandindo-storage-no-oda-x8m</guid><category><![CDATA[oracledatabaseappliance]]></category><category><![CDATA[oda]]></category><category><![CDATA[Oracle]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sun, 29 Dec 2024 18:15:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735495979813/caf92469-ff2e-4659-ab96-47a932b14cbd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Expandir o storage em alguns appliances pode ser um pouco complicado. Mas esse não é o caso do ODA (isso, é claro, desde que você não se depare com um bug no caminho rs).</p>
<p>No artigo de hoje, vamos expandir um ODA que já estava com 8 discos e que agora será expandido para 12 discos, atingindo assim sua capacidade total.</p>
<p>Sem mais delongas, vamos para a prática!</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFu53x4F98yTA/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1734370248247?e=1759968000&amp;v=beta&amp;t=wZcuNuGkVtKbF8YERBR38ixjSJ_KvLu8xVZ6NxhsgaY" alt="Article content" /></p>
<p>Acima está o mapa das posições dos discos do ODA X8M. A contagem das posições começa na parte inferior, da esquerda para a direita. No meu caso, apenas as duas primeiras fileiras estavam preenchidas com discos, e ficaram totalmente preenchidas após a adição dos outros quatro.</p>
<blockquote>
<p>Adicione um disco por vez, espere de 2 até 5 minutos até aparecer dentro de /dev/nvme*</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFAGKLmFAaFMQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1734370664849?e=1759968000&amp;v=beta&amp;t=E-mVJYHqBdxLUgS8K_Z1AMoB9pHh85_vQx_SLfY2z90" alt="Article content" /></p>
</blockquote>
<p>Podemos ver que, do disco 8 ao disco 11, ainda não temos as partições p1 e p2 presentes nos outros discos já configurados. Ótimo! Isso indica que os discos estão "limpos".</p>
<p>Ativando os discos.</p>
<pre><code class="lang-bash">[root@odaxxxx01 ~]<span class="hljs-comment"># odaadmcli power disk on pd_08</span>
Disk <span class="hljs-string">'pd_08'</span> already powered on
[root@odaxxxx01 ~]<span class="hljs-comment"># odaadmcli power disk on pd_09</span>
Disk <span class="hljs-string">'pd_09'</span> already powered on
[root@odaxxxx01 ~]<span class="hljs-comment"># odaadmcli power disk on pd_10</span>
Disk <span class="hljs-string">'pd_10'</span> already powered on
[root@odaxxxx01 ~]<span class="hljs-comment"># odaadmcli power disk on pd_11</span>
Disk <span class="hljs-string">'pd_11'</span> already powered on
</code></pre>
<blockquote>
<p>Após adicionar todos os discos, aguarde cerca de 20 minutos antes de iniciar a expansão. Esse tempo é necessário para que o OAK processe todas as informações sobre os discos.</p>
</blockquote>
<p>Antes de expandir vamos olhar a posição atual dos discos.</p>
<pre><code class="lang-bash">[root@odaxxxx01 ~]<span class="hljs-comment"># odaadmcli show disk</span>
        NAME            PATH            TYPE            STATE           STATE_DETAILS

        pd_00           /dev/nvme0n1    NVD             ONLINE          Good
        pd_01           /dev/nvme2n1    NVD             ONLINE          Good
        pd_02           /dev/nvme6n1    NVD             ONLINE          Good
        pd_03           /dev/nvme4n1    NVD             ONLINE          Good
        pd_04           /dev/nvme1n1    NVD             ONLINE          Good
        pd_05           /dev/nvme3n1    NVD             ONLINE          Good
        pd_06           /dev/nvme7n1    NVD             ONLINE          Good
        pd_07           /dev/nvme5n1    NVD             ONLINE          Good
</code></pre>
<p>Sim, os discos pd_08, pd_09, pd_10 e pd_11 não estão aparecendo aqui. Nada de pânico! Eles só vão aparecer após o comando "expand storage". Então, vamos lá!</p>
<pre><code class="lang-bash"> [root@odaxxxx01 bin]<span class="hljs-comment"># odaadmcli expand storage -ndisk 4</span>
Precheck passed.
Check the progress of expansion of storage by executing <span class="hljs-string">'odaadmcli show disk'</span>
Waiting <span class="hljs-keyword">for</span> expansion to finish ...
</code></pre>
<p>Durante o acompanhamento, veremos vários estágios dos discos, incluindo, algumas vezes, o status INVALID. Não entre em pânico! Apenas aguarde a tela de expansão ser concluída.</p>
<p>Durante o procedimento:</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEa5JwRpU4Njg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1734371885164?e=1759968000&amp;v=beta&amp;t=tQi0dZNyPeGJoRRXNHKZqbwgJ98T6T8bP6RasDQwghY" alt="Article content" /></p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFN06HkSBt8xw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1734371695191?e=1759968000&amp;v=beta&amp;t=0lzYrbnXeFG3qcDDE-tvkJH-5CPGmZC9t5KFFmPathI" alt="Article content" /></p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEa5JwRpU4Njg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1734371885164?e=1741219200&amp;v=beta&amp;t=mp2nM2nW7vSyiMorhzLmLJwfwpMRHZWmcfa1VYfF5Mo" alt /></p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFN06HkSBt8xw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1734371695191?e=1741219200&amp;v=beta&amp;t=M09XQ0dkxn5jbI7aZdW01pE0RE5NlP3U4PuYWVoiwW0" alt /></p>
<p>Assim que o procedimento conclui:</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEzb6joxyMgGQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1734371724153?e=1759968000&amp;v=beta&amp;t=RAGqZKv0-oW-ewkzZMZ1rbOals4pbTNvO3yHs7yGEj0" alt="Article content" /></p>
<p>Agora podemos ver que todos os discos estão aparecendo no comando odaadmcli show disk. Isso indica que todos os discos foram configurados com sucesso.</p>
<p>O comando odaadmcli expand storage -ndisk 4, que foi utilizado para a expansão, será concluído automaticamente. Não feche até a finalização.</p>
<p>PS:(A parte do comando -ndisk 4, indica a quantidade de disco que vai expandir, se for apenas 2 discos, alterar o valor de 4 para 2, por exemplo.)</p>
<p>Uma vez concluído, o ASM iniciará o rebalance, e a expansão estará concluída.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQHMihxOqaNHUg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1734372176803?e=1759968000&amp;v=beta&amp;t=rqwj97SIH2bSvzvyLNHNXudr2xs63A00Jnr3fI55tKQ" alt="Article content" /></p>
<p>Antes de iniciar, recomendo seguir estas três etapas:</p>
<ol>
<li><p>Rode o comando ./orachk -nordbms (como root) para verificar se está tudo certo com o appliance.</p>
</li>
<li><p>Execute o comando odaadmcli show server e certifique-se de que o status está healthy (saudável).</p>
</li>
<li><p>Por último, mas não menos importante, antes de iniciar a expansão(10 dias antes ou até mais), abra um proactive SR no Oracle Support e explique todo o seu plano de expansão. Os engenheiros podem aprovar ou identificar alguma possível "falha" no seu procedimento.</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Modo Simulação]]></title><description><![CDATA[Ok, você foi lá, fez toda a captura de privilégios usando o DBMS_PRIVILEGE_CAPTURE e outros métodos, mas mesmo assim fica aquela dúvida: E se aparecer algo novo?
Ao implementar regras com o Database Vault, essa é uma das principais preocupações. Poré...]]></description><link>https://diogofernandes.com.br/modo-simulacao</link><guid isPermaLink="true">https://diogofernandes.com.br/modo-simulacao</guid><category><![CDATA[Oracle]]></category><category><![CDATA[oracledatabasevault]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sun, 29 Dec 2024 18:06:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735495579461/3ef5f11b-bc62-462e-9d1f-0bda67d65704.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ok, você foi lá, fez toda a captura de privilégios usando o DBMS_PRIVILEGE_CAPTURE e outros métodos, mas mesmo assim fica aquela dúvida: E se aparecer algo novo?</p>
<p>Ao implementar regras com o Database Vault, essa é uma das principais preocupações. Porém, essa inquietação desaparece quando se descobre o modo simulation.</p>
<p>O modo simulation permite implementar uma security rule e colocar as command rule pertencente a ela em modo de simulação. Assim, se algum aplicativo violar a regra que você implementou, ele ainda conseguirá acessar os dados normalmente, mas você poderá identificar a violação por meio dos logs de auditoria. Esses logs mostram quem "violou" a regra que você mapeou anteriormente. Como você fez um longo trabalho de mapeamento, em teoria, apenas as exceções devem aparecer.</p>
<p>Com o modo simulation, você pode deixar a regra rodando durante uma semana, por exemplo, e depois verificar na view de auditoria as possíveis violações. Após esse período de testes, será possível ativar a regra de forma definitiva, sem o risco de interromper a produção.</p>
<p>Agora, vamos ver como isso funciona na prática.</p>
<p>No <a target="_blank" href="https://diogofernandes.com.br/criando-rules-set-no-oracle-database-vault">artigo anterior</a>, João não podia modificar a tabela <strong>salário</strong>. Então, o que faremos será alterar a <strong>command rule</strong> para que fique em modo <strong>simulation</strong>. Dessa forma, ela não impedirá o usuário João de modificar os dados, mas notificará o evento na <strong>view DBA_DV_SIMULATION_LOG</strong>.</p>
<blockquote>
<p>Uma informação importante é que é a <strong>command rule</strong> que fica em modo <strong>simulation</strong>, e não a <strong>security rule</strong>.</p>
</blockquote>
<p>Verificando se tem algum registro na DBA_DV_SIMULATION_LOG</p>
<pre><code class="lang-bash">SQL&gt; show user
USER is <span class="hljs-string">"DBV_ADMIN"</span>
SQL&gt; select * from dba_dv_simulation_log order by timestamp desc ; 

no rows selected
</code></pre>
<p>Confirmando que o usuário João não tem acesso de alteração a tabela salario.</p>
<pre><code class="lang-bash">SQL&gt; show user
USER is <span class="hljs-string">"JOAO"</span>

SQL&gt; select * from app.salario ;

        ID NOME                                                  SALARIO
---------- -------------------------------------------------- --------------
         1 João Silva                                              3000
         2 Maria Oliveira                                          4500
         3 Carlos Santos                                           5000
         5 Diogo                                                   2700
         6 Luiza Ferreira                                          6100
         7 Fernanda Lima                                           3800
         8 Roberto Faria                                           2900
         9 Claudia Mendes                                          5300
        10 Tiago Barbosa                                           4700

SQL&gt; update app.salario <span class="hljs-built_in">set</span> salario=10000 <span class="hljs-built_in">where</span> id=5 ; 
update app.salario <span class="hljs-built_in">set</span> salario=10000 <span class="hljs-built_in">where</span> id=5
           *
ERROR at line 1:
ORA-47306: 20002: Access denied: You <span class="hljs-keyword">do</span> not have DML privileges.
</code></pre>
<p>Aqui está claro que não temos acesso: ORA-47306: 20002: Access denied: You do not have DML privileges.</p>
<p>Agora vou colocar a command rule de update em modo simulation, caso queria entender melhor como eu as criei o link do artigo anterior está <a target="_blank" href="https://www.linkedin.com/pulse/criando-rules-set-oracle-database-vault-diogo-fernandes-oal6f/?trackingId=d7DvOEAgTOaS7e%2BgrgApKA%3D%3D">aqui</a>.</p>
<pre><code class="lang-bash">SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.UPDATE_COMMAND_RULE(
    <span class="hljs-built_in">command</span>         =&gt; <span class="hljs-string">'UPDATE'</span>,
    rule_set_name   =&gt; <span class="hljs-string">'RULE_SET_DML'</span>,
    object_owner    =&gt; <span class="hljs-string">'APP'</span>,
    object_name     =&gt; <span class="hljs-string">'SALARIO'</span>,
    enabled         =&gt; DBMS_MACUTL.G_SIMULATION -- &lt;&lt;&lt; aqui esta a flag de simutaion.
  );
END;
/  2    3    4    5    6    7    8    9   10  

PL/SQL procedure successfully completed.
</code></pre>
<p>Verificando Status da command rule:</p>
<pre><code class="lang-bash">SQL&gt; col <span class="hljs-built_in">command</span> <span class="hljs-keyword">for</span> a13
col RULE_SET_NAME <span class="hljs-keyword">for</span> a20
col object_owner <span class="hljs-keyword">for</span> a10
col object_name <span class="hljs-keyword">for</span> a20
col <span class="hljs-built_in">enable</span> <span class="hljs-keyword">for</span> a4
select COMMAND, RULE_SET_NAME,OBJECT_OWNER,OBJECT_NAME,ENABLED 
from DBA_DV_COMMAND_RULE 
<span class="hljs-built_in">where</span> object_owner=<span class="hljs-string">'APP'</span>;
</code></pre>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFpmA_Wuy0fcA/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1733780944667?e=1741219200&amp;v=beta&amp;t=ZE_euWfYqV9HCUH4bcvTxniBMKDs5vZPfgIDtqhCXzw" alt /></p>
<p>Podemos ver que o campo enable esta com o valor do <strong>S</strong>imulation.</p>
<p>Agora, tentaremos realizar o update na tabela APP.SALARIO utilizando o usuário João.</p>
<pre><code class="lang-bash">SQL&gt; show user
USER is <span class="hljs-string">"JOAO"</span>
SQL&gt; update app.salario <span class="hljs-built_in">set</span> salario=10000 <span class="hljs-built_in">where</span> id=5 ; 

1 row updated.

SQL&gt; commit ; 

Commit complete.
</code></pre>
<p>Agora que o update foi realizado com sucesso, vamos dar uma olhada na view de auditoria do DBV.</p>
<pre><code class="lang-bash">SELECT 
    USERNAME,
    COMMAND,
    VIOLATION_TYPE,
    OBJECT_OWNER,
    OBJECT_NAME,
    SQLTEXT,
    DATABASE_IP,
    MACHINE
FROM DBA_DV_SIMULATION_LOG;
</code></pre>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEXsVFv11JlKQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1733781647616?e=1741219200&amp;v=beta&amp;t=WwwHmse8g4YbMFQ8FZnUFGuJ2e2DprdSlAZ9YYLU8wM" alt /></p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQExDKfyhfPEKw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1733781671973?e=1741219200&amp;v=beta&amp;t=jONiCYVoR07ZSXoeiFuoblfz0OcyHY-wlECr8vMU120" alt /></p>
<p>Como podemos ver, o DBV registrou com sucesso o acesso do usuário João à tabela APP.SALARIO. Esse modo de simulação, como falado antes, é muito útil para mapear e identificar acessos que não foram previstos no mapeamento inicial das permissões, sendo que somente os usuários que não têm permissão(que violaram a regra do DBV) serão registrados na view de auditoria.</p>
<p>Como sempre, recomendo validar as regras de forma exaustiva nos ambientes de homologação.</p>
]]></content:encoded></item><item><title><![CDATA[Criando Rules SET no Oracle Database Vault]]></title><description><![CDATA[Nos artigos anteriores (artigo 1 e artigo 2), mostrei como configurar e, em alguns casos, até como instalar o Oracle Database Vault.
Neste artigo, abordaremos os Rule Sets do DBV e veremos como eles podem proteger seus dados contra acessos não autori...]]></description><link>https://diogofernandes.com.br/criando-rules-set-no-oracle-database-vault</link><guid isPermaLink="true">https://diogofernandes.com.br/criando-rules-set-no-oracle-database-vault</guid><category><![CDATA[oracledatabasevaul]]></category><category><![CDATA[Oracle]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sun, 29 Dec 2024 18:01:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735495163989/c5bbe008-6cf8-4929-bed7-41d2078bdb36.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Nos artigos anteriores (<a target="_blank" href="https://diogofernandes.com.br/oracle-database-vault-uma-verdadeira-muralha-para-seu-banco-de-dados">artigo 1</a> e <a target="_blank" href="https://diogofernandes.com.br/instalando-database-vault">artigo 2</a>), mostrei como configurar e, em alguns casos, até como instalar o Oracle Database Vault.</p>
<p>Neste artigo, abordaremos os Rule Sets do DBV e veremos como eles podem proteger seus dados contra acessos não autorizados.</p>
<p>Mas antes, mostrarei a hierarquia dos Rule Sets no DBV, que é estruturada da seguinte forma:</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQGLJq6aqM01MQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1733165928207?e=1752105600&amp;v=beta&amp;t=an1LZlMeRGbO_0c2es8L3sJhGZFithj14N076R3XpdQ" alt="Article content" /></p>
<ul>
<li><p><strong>Rule Set (Conjunto de Regras):</strong> É um agrupamento de condições ou regras que podem ser aplicadas em diferentes contextos no Database Vault. Ele define critérios que devem ser atendidos para permitir ou negar uma ação, como acessar um dado ou executar um comando.</p>
</li>
<li><p><strong>Command Rule (Regra de Comando):</strong> <a target="_blank" href="https://www.linkedin.com/pulse/oracle-database-vault-uma-verdadeira-muralha-para-seu-diogo-fernandes-lhhaf/">São reg</a>ras <a target="_blank" href="https://www.linkedin.com/pulse/instalando-database-vault-diogo-fernandes-pa2df/">aplicad</a>as a comandos específicos do banco de dados, como SELECT, UPDATE, ou GRANT. Elas permitem restringir o uso desses comandos com base em condições configuradas no Rule Set.</p>
</li>
<li><p><strong>Rule (Regra):</strong> É a condição individual que compõe um Rule Set. Pode ser uma verificação simples, como confirmar se um usuário pertence a um grupo específico ou se uma conexão vem de um IP autorizado.</p>
</li>
</ul>
<p>Obs.: Existem os Factors, mas estes serão tema de outro artigo. :)</p>
<p>Para demonstrar as permissões, temos o seguinte cenário:</p>
<ul>
<li><p>O <strong>Owner APP</strong>, que possui a tabela salario.</p>
</li>
<li><p>Os usuários <strong>Maria</strong> e <strong>João</strong>, que têm permissão de leitura e escrita na tabela.</p>
</li>
</ul>
<pre><code class="lang-bash">SQL&gt; conn maria
Enter password: 
Connected.
SQL&gt; show user
USER is <span class="hljs-string">"MARIA"</span>
SQL&gt; select * from app.salario ; 

        ID NOME                                                  SALARIO
---------- ----------------------------------------- ----------------------------- 
         1 João Silva                                               3000
         2 Maria Oliveira                                           4500
         3 Carlos Santos                                            5000
         4 Ana Costa                                                3200
         5 Pedro Almeida                                            2700
         6 Luiza Ferreira                                           6100
         7 Fernanda Lima                                            3800
         8 Roberto Faria                                            2900
         9 Cláudia Mendes                                           5300
        10 Tiago Barbosa                                            4700

10 rows selected.

SQL&gt; delete app.salario <span class="hljs-built_in">where</span> id=1 ; 

1 row deleted.

SQL&gt; rollback ; 

Rollback complete.

SQL&gt; conn joao
Enter password: 
Connected.
SQL&gt; show user
USER is <span class="hljs-string">"JOAO"</span>
SQL&gt; select * from app.salario ; 

        ID NOME                                                  SALARIO
---------- ------------------------------------------- -------------------------- 
         1 João Silva                                               3000
         2 Maria Oliveira                                           4500
         3 Carlos Santos                                            5000
         4 Ana Costa                                                3200
         5 Pedro Almeida                                            2700
         6 Luiza Ferreira                                           6100
         7 Fernanda Lima                                            3800
         8 Roberto Faria                                            2900
         9 Cláudia Mendes                                           5300
        10 Tiago Barbosa                                            4700

10 rows selected.

SQL&gt; delete app.salario <span class="hljs-built_in">where</span> id=1 ; 

1 row deleted.

SQL&gt; rollback ;

Rollback complete.
</code></pre>
<p>Como podemos ver acima, ambos têm permissão de "leitura e escrita" na tabela.</p>
<p>Agora, vamos criar uma regra no DBV que limita João a ter apenas acesso de SELECT, enquanto Maria poderá realizar as demais alterações.</p>
<p>Criando as roles "vazias":</p>
<pre><code class="lang-bash">SQL&gt; conn / as sysdba 
Connected.
SQL&gt; show user
USER is <span class="hljs-string">"SYS"</span>
SQL&gt; CREATE ROLE DBV_SELECT;

Role created.

SQL&gt; CREATE ROLE DBV_DML;

Role created.
</code></pre>
<p>Obs.: As roles acima não possuem nenhuma permissão; elas serão utilizadas apenas como uma <strong>FLAG</strong>.</p>
<p>Criando a regra de Select:</p>
<pre><code class="lang-bash">SQL&gt; show user
USER is <span class="hljs-string">"DBV_ADMIN"</span>

SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.CREATE_RULE_SET(
    rule_set_name    =&gt; <span class="hljs-string">'RULE_SET_SELECT'</span>,
    description      =&gt; <span class="hljs-string">'Rule Set enabled for SELECT operations'</span>,
    enabled          =&gt; DVSYS.DBMS_MACUTL.G_YES,
    eval_options     =&gt; DBMS_MACUTL.G_RULESET_EVAL_ALL,
    audit_options    =&gt; DBMS_MACUTL.G_RULESET_AUDIT_FAIL,
    fail_options     =&gt; DBMS_MACUTL.G_RULESET_FAIL_SHOW,
    fail_message     =&gt; <span class="hljs-string">'Access denied: You do not have SELECT privileges'</span>,
    fail_code        =&gt; -20001,
    handler_options  =&gt; DBMS_MACUTL.G_RULESET_HANDLER_OFF,
    handler          =&gt; NULL
  );
END;
/  2    3    4    5    6    7    8    9   10   11   12   13   14   15  

PL/SQL procedure successfully completed.
</code></pre>
<p>Adicionando "command rule" a Rule SET :</p>
<pre><code class="lang-bash">BEGIN
  DVSYS.DBMS_MACADM.CREATE_COMMAND_RULE(
    <span class="hljs-built_in">command</span>         =&gt; <span class="hljs-string">'SELECT'</span>,
    rule_set_name   =&gt; <span class="hljs-string">'RULE_SET_SELECT'</span>,
    object_owner    =&gt; <span class="hljs-string">'APP'</span>,
    object_name     =&gt; <span class="hljs-string">'SALARIO'</span>,
    enabled         =&gt; DVSYS.DBMS_MACUTL.G_YES
  );
END;
/
</code></pre>
<p>Criando a rule:</p>
<pre><code class="lang-bash">QL&gt; BEGIN
  DVSYS.DBMS_MACADM.CREATE_RULE(
    rule_name =&gt; <span class="hljs-string">'RULE_SELECT'</span>,
    rule_expr =&gt; <span class="hljs-string">'DVSYS.DBMS_MACUTL.USER_HAS_ROLE_VARCHAR('</span><span class="hljs-string">'DBV_SELECT'</span><span class="hljs-string">','</span><span class="hljs-string">'"'</span><span class="hljs-string">'||dvsys.dv_login_user||'</span><span class="hljs-string">'"'</span><span class="hljs-string">') = '</span><span class="hljs-string">'Y'</span><span class="hljs-string">''</span>
  );
END;
/  2    3    4    5    6    7  

PL/SQL procedure successfully completed.
</code></pre>
<p>Agora, vamos fechar o "ciclo". P<a target="_blank" href="https://www.linkedin.com/pulse/oracle-database-vault-uma-verdadeira-muralha-para-seu-diogo-fernandes-lhhaf/">recisamo</a>s a<a target="_blank" href="https://www.linkedin.com/pulse/instalando-database-vault-diogo-fernandes-pa2df/">dicionar</a> a <strong>Rule</strong> a <strong>Rule_Set</strong>, pois é dessa forma que o DBV "entenderá" que criamos uma condição específica para permitir que o usuário execute SELECT na tabela salario.</p>
<p>No nosso caso, configuramos o DBV para o se<a target="_blank" href="https://www.linkedin.com/pulse/instalando-database-vault-diogo-fernandes-pa2df/">guinte:</a></p>
<blockquote>
<p>O usuário precisa ter a role <strong>DBV_SELECT</strong> para poder executar SELECT na tabela.</p>
</blockquote>
<p>A role, por si só, não concede nenhum privilégio; ela foi criada como uma <strong>role "vazia"</strong> para ser usada como condição para realizar o SELECT na tabela.</p>
<p>No entanto, no DBV, você pode criar outras condições, como:</p>
<ul>
<li><p>Permitir acesso somente a partir de um IP específico.</p>
</li>
<li><p>Restringir o acesso a determinados horários<a target="_blank" href="https://www.linkedin.com/pulse/instalando-database-vault-diogo-fernandes-pa2df/">.</a></p>
</li>
<li><p>Outros</p>
</li>
</ul>
<p>Adicionando a rule a rule_set:</p>
<pre><code class="lang-bash">SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.ADD_RULE_TO_RULE_SET(
    rule_set_name =&gt; <span class="hljs-string">'RULE_SET_SELECT'</span>,
    rule_name     =&gt; <span class="hljs-string">'RULE_SELECT'</span>
  );
END;
/  2    3    4    5    6    7  

PL/SQL procedure successfully completed.
</code></pre>
<p>Ainda não atribuímos a role <strong>DBV_SELECT</strong> nem para João, nem para Maria. Antes disso, eles conseguiam executar SELECT na tabela. Vamos testar agora para ver o que acontece...</p>
<pre><code class="lang-bash">SQL&gt; show user 
USER is <span class="hljs-string">"JOAO"</span>
SQL&gt; select * from app.salario ;
select * from app.salario
                  *
ERROR at line 1:
ORA-47306: 20001: Access denied: You <span class="hljs-keyword">do</span> not have SELECT privileges


SQL&gt; conn maria 
Enter password: 
Connected.
SQL&gt; show user
USER is <span class="hljs-string">"MARIA"</span>
SQL&gt; select * from app.salario ;
select * from app.salario
                  *
ERROR at line 1:
ORA-47306: 20001: Access denied: You <span class="hljs-keyword">do</span> not have SELECT privileges
</code></pre>
<p>Agora vamos atribuir a role aos usuários:</p>
<pre><code class="lang-bash">SQL&gt; conn / as sysdba 
Connected.
SQL&gt; grant DBV_SELECT to joao ;

Grant succeeded.

SQL&gt; grant DBV_SELECT to maria ; 

Grant succeeded.
</code></pre>
<blockquote>
<p>"Mas Diogo, você concedeu o acesso da role pelo usuário SYS. Qualquer pessoa com acesso ao usuário SYS poderia conceder a role e obter acesso não autorizado."</p>
</blockquote>
<p>Sim, isso é verdade. No entanto, no DBV, você pode limitar quem pode conceder <strong>grants</strong> e até configurar <strong>REALMs</strong> para isolar o ambiente. Para não deixar este artigo muito extenso, estou mantendo o usuário SYS ainda com essa "permissão". Porém, em um próximo artigo, mostrarei como configurar o DBV para restringir a concessão de <strong>grants</strong> a usuários específicos e como criar e gerenciar <strong>REALMs</strong>.</p>
<p>Agora vamos ver se os usuários voltaram acessar os dados:</p>
<pre><code class="lang-bash">SQL&gt; 
SQL&gt; 
SQL&gt; conn maria 
Enter password: 
Connected.
SQL&gt; select * from app.salario ;

        ID NOME                                                  SALARIO
---------- --------------------------------------------------  ------------
         1 João Silva                                              3000
         2 Maria Oliveira                                          4500
         3 Carlos Santos                                           5000
         4 Ana Costa                                               3200
         5 Pedro Almeida                                           2700
         6 Luiza Ferreira                                          6100
         7 Fernanda Lima                                           3800
         8 Roberto Faria                                           2900
         9 Cláudia Mendes                                          5300
        10 Tiago Barbosa                                           4700

10 rows selected.

SQL&gt; conn joao
Enter password: 
Connected.
SQL&gt; select * from app.salario ;

        ID NOME                                                  SALARIO
---------- -------------------------------------------------- --------------
         1 João Silva                                               3000
         2 Maria Oliveira                                           4500
         3 Carlos Santos                                            5000
         4 Ana Costa                                                3200
         5 Pedro Almeida                                            2700
         6 Luiza Ferreira                                           6100
         7 Fernanda Lima                                            3800
         8 Roberto Faria                                            2900
         9 Cláudia Mendes                                           5300
        10 Tiago Barbosa                                            4700

10 rows selected.
</code></pre>
<p>Agora vamos implementar a regr<a target="_blank" href="https://www.linkedin.com/pulse/oracle-database-vault-uma-verdadeira-muralha-para-seu-diogo-fernandes-lhhaf/">a DML e de</a>i<a target="_blank" href="https://www.linkedin.com/pulse/instalando-database-vault-diogo-fernandes-pa2df/">xar soment</a>e a Maria com permissões de alterar os dados.</p>
<pre><code class="lang-bash">SQL&gt; show user
USER is <span class="hljs-string">"DBV_ADMIN"</span>
SQL&gt; 
SQL&gt; 
SQL&gt; 
SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.CREATE_RULE_SET(
    rule_set_name    =&gt; <span class="hljs-string">'RULE_SET_DML'</span>,
    description      =&gt; <span class="hljs-string">'Rule Set enabled for DML operations'</span>,
    enabled          =&gt; DVSYS.DBMS_MACUTL.G_YES,
    eval_options     =&gt; DBMS_MACUTL.G_RULESET_EVAL_ALL,
    audit_options    =&gt; DBMS_MACUTL.G_RULESET_AUDIT_FAIL,
    fail_options     =&gt; DBMS_MACUTL.G_RULESET_FAIL_SHOW,
    fail_message     =&gt; <span class="hljs-string">'Access denied: You do not have DML privileges.'</span>,
    fail_code        =&gt; -20002,
    handler_options  =&gt; DBMS_MACUTL.G_RULESET_HANDLER_OFF,
    handler          =&gt; NULL
  );
END;
/  2    3    4    5    6    7    8    9   10   11   12   13   14   15  

PL/SQL procedure successfully completed.

SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.CREATE_COMMAND_RULE(
    <span class="hljs-built_in">command</span>         =&gt; <span class="hljs-string">'INSERT'</span>,
    rule_set_name   =&gt; <span class="hljs-string">'RULE_SET_DML'</span>,
    object_owner    =&gt; <span class="hljs-string">'APP'</span>,
    object_name     =&gt; <span class="hljs-string">'SALARIO'</span>,
    enabled         =&gt; DVSYS.DBMS_MACUTL.G_YES
  );
END;
/  2    3    4    5    6    7    8    9   10  

PL/SQL procedure successfully completed.

SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.CREATE_COMMAND_RULE(
    <span class="hljs-built_in">command</span>         =&gt; <span class="hljs-string">'UPDATE'</span>,
    rule_set_name   =&gt; <span class="hljs-string">'RULE_SET_DML'</span>,
    object_owner    =&gt; <span class="hljs-string">'APP'</span>,
    object_name     =&gt; <span class="hljs-string">'SALARIO'</span>,
    enabled         =&gt; DVSYS.DBMS_MACUTL.G_YES
  );
END;
/  2    3    4    5    6    7    8    9   10  

PL/SQL procedure successfully completed.

SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.CREATE_COMMAND_RULE(
    <span class="hljs-built_in">command</span>         =&gt; <span class="hljs-string">'DELETE'</span>,
    rule_set_name   =&gt; <span class="hljs-string">'RULE_SET_DML'</span>,
    object_owner    =&gt; <span class="hljs-string">'APP'</span>,
    object_name     =&gt; <span class="hljs-string">'SALARIO'</span>,
    enabled         =&gt; DVSYS.DBMS_MACUTL.G_YES
  );
END;
/  2    3    4    5    6    7    8    9   10  

PL/SQL procedure successfully completed.

SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.CREATE_RULE(
    rule_name =&gt; <span class="hljs-string">'RULE_DML'</span>,
    rule_expr =&gt; <span class="hljs-string">'DVSYS.DBMS_MACUTL.USER_HAS_ROLE_VARCHAR('</span><span class="hljs-string">'DBV_DML'</span><span class="hljs-string">','</span><span class="hljs-string">'"'</span><span class="hljs-string">'||dvsys.dv_login_user||'</span><span class="hljs-string">'"'</span><span class="hljs-string">') = '</span><span class="hljs-string">'Y'</span><span class="hljs-string">''</span>
  );
END;
/  2    3    4    5    6    7  

PL/SQL procedure successfully completed.

SQL&gt; 
SQL&gt; BEGIN
  DVSYS.DBMS_MACADM.ADD_RULE_TO_RULE_SET(
    rule_set_name =&gt; <span class="hljs-string">'RULE_SET_DML'</span>,
    rule_name     =&gt; <span class="hljs-string">'RULE_DML'</span>
  );
END;
/  2    3    4    5    6    7  

PL/SQL procedure successfully completed.
</code></pre>
<p>Concedendo a permissão apenas pa<a target="_blank" href="https://www.linkedin.com/pulse/oracle-database-vault-uma-verdadeira-muralha-para-seu-diogo-fernandes-lhhaf/">ra Maria</a>:</p>
<pre><code class="lang-bash">SQL&gt; grant DBV_DML to maria ; 

Grant succeeded.

SQL&gt; conn joao 
Enter password: 
Connected.

SQL&gt; show user
USER is <span class="hljs-string">"JOAO"</span>

SQL&gt; delete from app.salario <span class="hljs-built_in">where</span> id=4 ; 
delete from app.salario <span class="hljs-built_in">where</span> id=4
                *
ERROR at line 1:
ORA-47306: 20002: Access denied: You <span class="hljs-keyword">do</span> not have DML privileges.


SQL&gt; update app.salario <span class="hljs-built_in">set</span> nome=<span class="hljs-string">'Diogo'</span> <span class="hljs-built_in">where</span> id=4 ; 
update app.salario <span class="hljs-built_in">set</span> nome=<span class="hljs-string">'Diogo'</span> <span class="hljs-built_in">where</span> id=4
           *
ERROR at line 1:
ORA-47306: 20002: Access denied: You <span class="hljs-keyword">do</span> not have DML privileges.


SQL&gt; insert into app.salario values (11,<span class="hljs-string">'Diogo'</span>,1000) ; 
insert into app.salario values (11,<span class="hljs-string">'Diogo'</span>,1000)
                *
ERROR at line 1:
ORA-47306: 20002: Access denied: You <span class="hljs-keyword">do</span> not have DML privileges.

SQL&gt; conn maria
Enter password: 
Connected.
SQL&gt; show user
USER is <span class="hljs-string">"MARIA"</span>
SQL&gt; delete from app.salario <span class="hljs-built_in">where</span> id=4 ; 

1 row deleted.

SQL&gt; update app.salario <span class="hljs-built_in">set</span> nome=<span class="hljs-string">'Diogo'</span> <span class="hljs-built_in">where</span> id=5 ; 

1 row updated.

SQL&gt;  insert into app.salario values (11,<span class="hljs-string">'Diogo'</span>,1000) ; 

1 row created.

SQL&gt; commit ;

Commit complete.
</code></pre>
<p>O Database Vault é ótimo em "delimitar" espaço, uma vez que as regras de acesso aos dados são bem desenhadas com a equipe de compliance e segurança. As restrições podem ser implementadas com sucesso no seu ambiente. Esta é uma pequena demonstração de como o DBV atua. Como sempre, recomendo que, valide exaustivamente no seu ambiente de homologação antes de aplicar em produção.</p>
]]></content:encoded></item><item><title><![CDATA[Instalando Database Vault]]></title><description><![CDATA[No artigo anterior, demonstrei como configurar o Database Vault em um ambiente.
No entanto, em alguns ambientes 19c que foram migrados da versão 11g, o Database Vault pode não estar instalado. Mas como posso verificar isso?
sqlplus / as sysdba 

SQL*...]]></description><link>https://diogofernandes.com.br/instalando-database-vault</link><guid isPermaLink="true">https://diogofernandes.com.br/instalando-database-vault</guid><category><![CDATA[oracledatabasevault]]></category><category><![CDATA[Oracle]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sun, 29 Dec 2024 16:59:58 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735491535450/68c50847-ed42-4c76-a0f6-61bbd805d51e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>No <a target="_blank" href="https://diogofernandes.com.br/oracle-database-vault-uma-verdadeira-muralha-para-seu-banco-de-dados">artigo anterior</a>, demonstrei como configurar o Database Vault em um ambiente.</p>
<p>No entanto, em alguns ambientes 19c que foram migrados da versão 11g, o Database Vault pode não estar instalado. Mas como posso verificar isso?</p>
<pre><code class="lang-bash">sqlplus / as sysdba 

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 29 20:58:51 2024
Version 19.19.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

SQL&gt; <span class="hljs-built_in">set</span> pages 50
SQL&gt; <span class="hljs-built_in">set</span> line 200
SQL&gt; col comp_name <span class="hljs-keyword">for</span> a50
SQL&gt; SELECT  comp_name, version, status FROM dba_registry WHERE comp_name <span class="hljs-keyword">in</span>( <span class="hljs-string">'Oracle Database Vault'</span>, <span class="hljs-string">'Oracle Label Security'</span>);

no rows selected

SQL&gt; SELECT  comp_name, version FROM dba_registry  ;

COMP_NAME                                                                   VERSION       
-------------------------------------------------- --------------
Oracle Database Catalog Views                                   19.0.0.0.0    
Oracle Database Packages and Types                        19.0.0.0.0    
JServer JAVA Virtual Machine                                      19.0.0.0.0    
Oracle XDK                                                                     19.0.0.0.0    
Oracle Database Java Packages                                  19.0.0.0.0    
OLAP Analytic Workspace                                            19.0.0.0.0    
Oracle Real Application Clusters                                 19.0.0.0.0    
Oracle Workspace Manager                                         19.0.0.0.0    
Oracle Text                                                                     19.0.0.0.0    
Oracle XML Database                                                   19.0.0.0.0    
Oracle Multimedia                                                         19.0.0.0.0    
Spatial                                                                             19.0.0.0.0    
Oracle OLAP API                                                            19.0.0.0.0    
Oracle Application Express                                           5.0.4.00.12   

14 rows selected.
</code></pre>
<p>Como podemos ver acima, este é um banco 19C e não temos o DBV instalado.</p>
<p>O Database vault é dependente do Oracle Label Security, então vamos "instalar" ele primeiro e depois o Database Vault.</p>
<p>Preparação para instalar o Oracle Label Security</p>
<p>Criação de Tablespace's exclusivas para esses itens:</p>
<pre><code class="lang-bash">CREATE TABLESPACE TBS_DBV DATAFILE SIZE 1G AUTOEXTEND ON NEXT 1G ;

CREATE TEMPORARY TABLESPACE TBS_DBV_TEMP TEMPFILE SIZE 1G AUTOEXTEND ON NEXT 1G ;
</code></pre>
<p>Verificando....</p>
<pre><code class="lang-bash">SQL&gt; select TABLESPACE_NAME from dba_tablespaces <span class="hljs-built_in">where</span> TABLESPACE_NAME <span class="hljs-keyword">in</span> (<span class="hljs-string">'TBS_DBV'</span>,<span class="hljs-string">'TBS_DBV_TEMP'</span>) ;

TABLESPACE_NAME
------------------------------
TBS_DBV
TBS_DBV_TEMP
</code></pre>
<p>Criando um restore point que nunca é demais....</p>
<pre><code class="lang-bash">create restore point PRE_DBV guarantee flashback database;
</code></pre>
<p>Agora vamos iniciar o procedimento de instalação do DBV, este procedimento está na nota: How To Enable/Install/Uninstall Database Vault in oracle database? (Doc ID 2112167.1)</p>
<p>Instalando o Label Security (Este procedimento demora em torno de 10 a 20 min)</p>
<pre><code class="lang-bash">@<span class="hljs-variable">$ORACLE_HOME</span>/rdbms/admin/catols.sql
</code></pre>
<p>Depois da execução do script acima, saia no sqlplus e logue novamente para executar os seguintes comandos:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">exec</span> lbacsys.configure_ols
<span class="hljs-built_in">exec</span> lbacsys.ols_enforcement.enable_ols

SQL&gt; <span class="hljs-built_in">exec</span> lbacsys.configure_ols

PL/SQL procedure successfully completed.

SQL&gt; <span class="hljs-built_in">exec</span> lbacsys.ols_enforcement.enable_ols

PL/SQL procedure successfully completed.
</code></pre>
<p>Vamos verificar agora se o label secury foi instalado com sucesso:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">set</span> line 200
<span class="hljs-built_in">set</span> pages 45
col comp_name <span class="hljs-keyword">for</span> a50
SELECT  comp_name, version, status FROM dba_registry WHERE comp_name <span class="hljs-keyword">in</span>( <span class="hljs-string">'Oracle Database Vault'</span>, <span class="hljs-string">'Oracle Label Security'</span>);

COMP_NAME                                          VERSION                        STATUS
-------------------------------------------------- ------------------------ 
Oracle Label Security                              19.0.0.0.0                     VALID
</code></pre>
<p>Agora vamos instalar o Database Vault, o primeiro parâmetro é a Tablespace permanente e a segunda temporária que criamos no início do artigo.</p>
<pre><code class="lang-bash">@<span class="hljs-variable">$ORACLE_HOME</span>/rdbms/admin/catmac.sql TBS_DBV TBS_DBV_TEMP
</code></pre>
<pre><code class="lang-bash">sqlplus / as sysdba 

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 29 22:36:23 2024
Version 19.19.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

SQL&gt; select TABLESPACE_NAME from dba_tablespaces <span class="hljs-built_in">where</span> TABLESPACE_NAME <span class="hljs-keyword">in</span> (<span class="hljs-string">'TBS_DBV'</span>,<span class="hljs-string">'TBS_DBV_TEMP'</span>) ;

TABLESPACE_NAME
------------------------------
TBS_DBV
TBS_DBV_TEMP

SQL&gt; show user 
USER is <span class="hljs-string">"SYS"</span>
-- A execução deste script demora por volta de 10 min.

SQL&gt; @<span class="hljs-variable">$ORACLE_HOME</span>/rdbms/admin/catmac.sql TBS_DBV TBS_DBV_TEMP

Ultimas linhas <span class="hljs-keyword">do</span> spool:

Commit complete.

SQL&gt; 
SQL&gt; @?/rdbms/admin/sqlsessend.sql
SQL&gt; Rem
SQL&gt; Rem <span class="hljs-variable">$Header</span>: rdbms/admin/sqlsessend.sql /main/3 2018/07/25 13:50:02 surman Exp $
SQL&gt; Rem
SQL&gt; Rem sqlsessend.sql
SQL&gt; Rem
SQL&gt; Rem Copyright (c) 2013, 2018, Oracle and/or its affiliates.
SQL&gt; Rem All rights reserved.
SQL&gt; Rem
SQL&gt; Rem    NAME
SQL&gt; Rem      sqlsessend.sql - SQL session end
SQL&gt; Rem
SQL&gt; Rem    DESCRIPTION
SQL&gt; Rem      Any commands <span class="hljs-built_in">which</span> should be run at the end of all oracle
SQL&gt; Rem      supplied scripts.
SQL&gt; Rem
SQL&gt; Rem    NOTES
SQL&gt; Rem      See sqlsessstart.sql <span class="hljs-keyword">for</span> the corresponding start script.
SQL&gt; Rem
SQL&gt; Rem    BEGIN SQL_FILE_METADATA
SQL&gt; Rem    SQL_SOURCE_FILE: rdbms/admin/sqlsessend.sql
SQL&gt; Rem    SQL_SHIPPED_FILE: rdbms/admin/sqlsessend.sql
SQL&gt; Rem    SQL_PHASE: MISC
SQL&gt; Rem    SQL_STARTUP_MODE: NORMAL
SQL&gt; Rem    SQL_IGNORABLE_ERRORS: NONE
SQL&gt; Rem    END SQL_FILE_METADATA
SQL&gt; Rem
SQL&gt; Rem    MODIFIED   (MM/DD/YY)
SQL&gt; Rem    surman      05/04/18 - 27464252: Update SQL_PHASE
SQL&gt; Rem    surman      03/08/13 - 16462837: Common start and end scripts
SQL&gt; Rem    surman      03/08/13 - Created
SQL&gt; Rem
SQL&gt; 
SQL&gt; alter session <span class="hljs-built_in">set</span> <span class="hljs-string">"_ORACLE_SCRIPT"</span> = <span class="hljs-literal">false</span>;
</code></pre>
<p>Instalação concluída vamos verificar os status do database vault:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">set</span> line 200
<span class="hljs-built_in">set</span> pages 45
col comp_name <span class="hljs-keyword">for</span> a50
SELECT  comp_name, version, status FROM dba_registry WHERE comp_name <span class="hljs-keyword">in</span>( <span class="hljs-string">'Oracle Database Vault'</span>, <span class="hljs-string">'Oracle Label Security'</span>);


COMP_NAME                                          VERSION                        STATUS
-------------------------------------------------- -----------------------------
Oracle Label Security                              19.0.0.0.0                     VALID
Oracle Database Vault                             19.0.0.0.0                     VALID
</code></pre>
<p>Pronto! Caso você queira habilitar/configurar o Database Vault no seu banco de dados, dá uma olhada <a target="_blank" href="https://diogofernandes.com.br/oracle-database-vault-uma-verdadeira-muralha-para-seu-banco-de-dados">nesse link</a>:</p>
<p>Algumas observações:</p>
<p>1 - A instalação do Label Security em instâncias que estão em RAC e com PDB pode causar um "stuck" na segunda instância. Tive esse problema em versões abaixo da 19.20, mas, até onde verifiquei, ele foi resolvido a partir da versão 19.20.</p>
<p>2 - Caso algum objeto fique inválido, execute o UTLRP. Recomendo fazer um backup da tabela DBA_OBJECTS com a condição WHERE STATUS='INVALID' para verificar posteriormente se todos os objetos permanecem "estáveis" após a instalação do DBV.</p>
<p>Como sempre, recomendo realizar validações rigorosas em homologações e nunca executar nada diretamente em produção.</p>
]]></content:encoded></item><item><title><![CDATA[Oracle Database Vault: Uma verdadeira "Muralha" para seu banco de dados]]></title><description><![CDATA[Até aqui, tínhamos liberdade para fazer qualquer coisa com o usuário SYS, com certeza podíamos dizer que ele era o 'Zeus' do banco de dados Oracle. Só que, no momento em que ativamos o Database Vault, algumas regras mudam. Vamos habilitar o Database ...]]></description><link>https://diogofernandes.com.br/oracle-database-vault-uma-verdadeira-muralha-para-seu-banco-de-dados</link><guid isPermaLink="true">https://diogofernandes.com.br/oracle-database-vault-uma-verdadeira-muralha-para-seu-banco-de-dados</guid><category><![CDATA[oracledatabasevault]]></category><category><![CDATA[Oracle]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sun, 29 Dec 2024 16:56:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735491346938/13c1fc22-ce2a-439c-a5f0-6333f1a2b295.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Até aqui, tínhamos liberdade para fazer qualquer coisa com o usuário SYS, com certeza podíamos dizer que ele era o 'Zeus' do banco de dados Oracle. Só que, no momento em que ativamos o Database Vault, algumas regras mudam. Vamos habilitar o Database Vault e observar na prática como ele se comporta no banco de dados.</p>
<p>Primeiro vamos verificar se o Database Vault e o Label Security estão "instalados" no banco de dados.</p>
<pre><code class="lang-bash"> SQL&gt; SELECT  comp_name, version, status FROM dba_registry WHERE comp_name <span class="hljs-keyword">in</span>( <span class="hljs-string">'Oracle Database Vault'</span>, <span class="hljs-string">'Oracle Label Security'</span>);

Component                                    Version           Status
-------------------------------------------- ----------------- -----------------
Oracle Label Security                        19.0.0.0.0        VALID
Oracle Database Vault                        19.0.0.0.0        VALID
</code></pre>
<p>Já que os componentes estão instalados podemos prosseguir...</p>
<p>Mas antes gostaria de colocar uma observação, nem todo o banco tem o DBV e Label security instalados, principalmente aqueles bancos que foram migrados do 11G para o 19C. Em breve disponibilizarei um link nesse artigo demonstrando como instalar esses componentes "do zero".</p>
<p>Sem delongas, vamos para a parte boa.</p>
<p>O Database Vault precisa de 2 usuários, de forma macro, esses usuários são o de administração e o de gerenciamento. "NAO PERCA A SENHA DESSES USUÁRIOS, ISSO PODE TE DAR UMA GRANDE DOR DE CABEÇA".</p>
<p>Vamos la:</p>
<pre><code class="lang-bash">CREATE PROFILE PRF_DATABASE_VAULT LIMIT password_life_time UNLIMITED;

CREATE USER DBV_ADMIN IDENTIFIED BY WElcome1<span class="hljs-comment">#_ PROFILE PRF_DATABASE_VAULT;</span>

CREATE USER DBV_ADMIN_BACKUP IDENTIFIED BY WElcome1<span class="hljs-comment">#_ PROFILE PRF_DATABASE_VAULT;</span>

CREATE USER DBV_MGR IDENTIFIED BY WElcome1<span class="hljs-comment">#_ PROFILE PRF_DATABASE_VAULT;</span>

CREATE USER DBV_MGR_BACKUP IDENTIFIED BY WElcome1<span class="hljs-comment">#_ PROFILE PRF_DATABASE_VAULT;</span>

GRANT DV_OWNER TO DBV_ADMIN;
GRANT DV_ADMIN TO DBV_ADMIN;
GRANT CONNECT TO DBV_ADMIN;
GRANT CREATE SESSION TO DBV_ADMIN;

GRANT DV_ACCTMGR TO DBV_MGR;
GRANT CONNECT TO DBV_MGR;
GRANT CREATE SESSION TO DBV_MGR;


GRANT DV_OWNER TO DBV_ADMIN_BACKUP;
GRANT DV_ADMIN TO DBV_ADMIN_BACKUP;
GRANT CONNECT TO DBV_ADMIN_BACKUP;
GRANT CREATE SESSION TO DBV_ADMIN_BACKUP;

GRANT DV_ACCTMGR TO DBV_MGR_BACKUP;
GRANT CONNECT TO DBV_MGR_BACKUP;
GRANT CREATE SESSION TO DBV_MGR_BACKUP;
</code></pre>
<p>Anteriormente disse que são 2 usuários para o Database Vault, um admin e outro de MGR, por precaução criamos um usuário backup, para caso algo ocorra com os principais usuários.</p>
<pre><code class="lang-bash">SQL&gt; CREATE PROFILE PRF_DATABASE_VAULT LIMIT password_life_time UNLIMITED;

Profile created.

SQL&gt; 
SQL&gt; CREATE USER DBV_ADMIN IDENTIFIED BY WElcome1<span class="hljs-comment">#_ PROFILE PRF_DATABASE_VAULT;</span>

User created.

SQL&gt; 
SQL&gt; CREATE USER DBV_ADMIN_BACKUP IDENTIFIED BY WElcome1<span class="hljs-comment">#_ PROFILE PRF_DATABASE_VAULT;</span>

User created.

SQL&gt; 
SQL&gt; CREATE USER DBV_MGR IDENTIFIED BY WElcome1<span class="hljs-comment">#_ PROFILE PRF_DATABASE_VAULT;</span>

User created.

SQL&gt; 
SQL&gt; CREATE USER DBV_MGR_BACKUP IDENTIFIED BY WElcome1<span class="hljs-comment">#_ PROFILE PRF_DATABASE_VAULT;</span>

User created.

SQL&gt; GRANT DV_OWNER TO DBV_ADMIN;

Grant succeeded.

SQL&gt; GRANT DV_ADMIN TO DBV_ADMIN;

Grant succeeded.

SQL&gt; GRANT CONNECT TO DBV_ADMIN;

Grant succeeded.

SQL&gt; GRANT CREATE SESSION TO DBV_ADMIN;

Grant succeeded.

SQL&gt; 
SQL&gt; GRANT DV_ACCTMGR TO DBV_MGR;

Grant succeeded.

SQL&gt; GRANT CONNECT TO DBV_MGR;

Grant succeeded.

SQL&gt; GRANT CREATE SESSION TO DBV_MGR;

Grant succeeded.

SQL&gt; 
SQL&gt; 
SQL&gt; GRANT DV_OWNER TO DBV_ADMIN_BACKUP;

Grant succeeded.

SQL&gt; GRANT DV_ADMIN TO DBV_ADMIN_BACKUP;

Grant succeeded.

SQL&gt; GRANT CONNECT TO DBV_ADMIN_BACKUP;

Grant succeeded.

SQL&gt; GRANT CREATE SESSION TO DBV_ADMIN_BACKUP;

Grant succeeded.

SQL&gt; 
SQL&gt; GRANT DV_ACCTMGR TO DBV_MGR_BACKUP;

Grant succeeded.

SQL&gt; GRANT CONNECT TO DBV_MGR_BACKUP;

Grant succeeded.

SQL&gt; GRANT CREATE SESSION TO DBV_MGR_BACKUP;

Grant succeeded.
</code></pre>
<p>Agora vamos ativar o DBV, como eu disse no início desse artigo o Database Vault vai mudar completando as permissões no banco, um exemplo que o SYS vai se tornar "um usuário mortal apenas", nenhum usuário terá mais super poderes, então homologue bastante o Database Vault</p>
<p>Antes de ativar em produção. Avisos feitos. Vamos la!</p>
<pre><code class="lang-bash">verificando status atual:


select * from cdb_dv_status <span class="hljs-built_in">where</span> name <span class="hljs-keyword">in</span> (<span class="hljs-string">'DV_CONFIGURE_STATUS'</span>,<span class="hljs-string">'DV_ENABLE_STATUS'</span>) ; 
NAME                Status                CON_ID
------------------- ----------------- ----------
DV_CONFIGURE_STATUS FALSE                      0
DV_ENABLE_STATUS    FALSE                      0
</code></pre>
<pre><code class="lang-bash">Criando um restore point que nunca é demais:

SQL&gt; create restore point PRE_DBV guarantee flashback database;

Restore point created.
</code></pre>
<pre><code class="lang-bash">configurando DBV:

BEGIN
 DVSYS.CONFIGURE_DV (
   dvowner_uname         =&gt; <span class="hljs-string">'DBV_ADMIN'</span>,
   dvacctmgr_uname       =&gt; <span class="hljs-string">'DBV_MGR'</span>);
 END;
/
</code></pre>
<pre><code class="lang-bash"> SQL&gt; select * from cdb_dv_status <span class="hljs-built_in">where</span> name <span class="hljs-keyword">in</span> (<span class="hljs-string">'DV_CONFIGURE_STATUS'</span>,<span class="hljs-string">'DV_ENABLE_STATUS'</span>) ; 

NAME                                            STATUS        
-------------------                  --------------
DV_CONFIGURE_STATUS            TRUE          
DV_ENABLE_STATUS                    FALSE
</code></pre>
<p>O configure esta como true, vamos ativar o dbv.</p>
<pre><code class="lang-bash">ativando dbv:

conn dbv_admin/WElcome1<span class="hljs-comment">#_</span>

EXEC DBMS_MACADM.ENABLE_DV;

SQL&gt; conn dbv_admin/WElcome1<span class="hljs-comment">#_</span>
Connected.
SQL&gt; 
SQL&gt; 
SQL&gt; 
SQL&gt; show user
USER is <span class="hljs-string">"DBV_ADMIN"</span>
SQL&gt; EXEC DBMS_MACADM.ENABLE_DV;

PL/SQL procedure successfully completed.

SQL&gt;  select * from cdb_dv_status <span class="hljs-built_in">where</span> name <span class="hljs-keyword">in</span> (<span class="hljs-string">'DV_CONFIGURE_STATUS'</span>,<span class="hljs-string">'DV_ENABLE_STATUS'</span>) ; 

NAME                STATUS          CON_ID
------------------- ----------- ------------------
DV_CONFIGURE_STATUS TRUE              0
DV_ENABLE_STATUS    FALSE             0
</code></pre>
<p>Mesmo depois do "activate" DBV status está como FALSE, para ativarmos precisamos reiniciar a instância...</p>
<p>Estamos vamos la:</p>
<pre><code class="lang-bash">SQL&gt; shut immediate ; 
startup ; 
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL&gt; ORACLE instance started.

Total System Global Area 2365584096 bytes
Fixed Size                  8942304 bytes
Variable Size             520093696 bytes
Database Buffers         1828716544 bytes
Redo Buffers                7831552 bytes
Database mounted.
Database opened.

SQL&gt; select * from cdb_dv_status <span class="hljs-built_in">where</span> name <span class="hljs-keyword">in</span> (<span class="hljs-string">'DV_CONFIGURE_STATUS'</span>,<span class="hljs-string">'DV_ENABLE_STATUS'</span>) ; 

NAME                STATUS                   CON_ID
------------------- -------------------- ----------
DV_CONFIGURE_STATUS TRUE                          0
DV_ENABLE_STATUS    TRUE                          0
</code></pre>
<p>Pronto, DBV ativado.</p>
<p>Antes, podíamos criar usuários normalmente:</p>
<pre><code class="lang-bash">SQL&gt; show user      
USER is <span class="hljs-string">"SYS"</span>
SQL&gt; create user dbv_teste_sys identified by WElcome1<span class="hljs-comment">#_ ; </span>

User created.

SQL&gt; drop user dbv_teste_sys ;

User dropped.
</code></pre>
<p>Agora vamos tentar criar um usuário com o DBV ativado:</p>
<pre><code class="lang-bash">SQL&gt; show user
USER is <span class="hljs-string">"SYS"</span>
SQL&gt; create user dbv_teste_sys identified by WElcome1<span class="hljs-comment">#_ ;      </span>
create user dbv_teste_sys identified by WElcome1<span class="hljs-comment">#_</span>
*
ERROR at line 1:
ORA-01031: insufficient privileges
</code></pre>
<p>para criar usuários agora apenas com o usuário DBV_MGR</p>
<pre><code class="lang-bash">conn DBV_MGR/WElcome1<span class="hljs-comment">#_</span>

SQL&gt; show user
USER is <span class="hljs-string">"DBV_MGR"</span>
SQL&gt;  create user dbv_teste_sys identified by WElcome1<span class="hljs-comment">#_ ; </span>

User created.
</code></pre>
<p>Antes de ativar o DBV, homologue profundamente no seu ambiente e fique atento as permissões que serão revogadas das roles. <a target="_blank" href="https://docs.oracle.com/en/database/oracle/oracle-database/19/dvadm/what-to-expect-after-you-enable-oracle-database-vault.html#GUID-C91754D9-950D-4E1E-A697-B26D4C4D3B9C">Nesse link</a> você conseguirá ver todas as roles e as melhores praticas para o mesmo.</p>
]]></content:encoded></item><item><title><![CDATA[Como autenticar vários usuários de aplicações utilizando o A.D]]></title><description><![CDATA[No post anterior fiz uma breve introdução de como conectar no Oracle autenticando pelo Windows A.D.
Mas de fato o que são tokens? Como carregar vários tokens manualmente na estação? É isso que vamos ver neste post.
De forma macro, como tudo isso func...]]></description><link>https://diogofernandes.com.br/como-autenticar-varios-usuarios-de-aplicacoes-utilizando-o-ad</link><guid isPermaLink="true">https://diogofernandes.com.br/como-autenticar-varios-usuarios-de-aplicacoes-utilizando-o-ad</guid><category><![CDATA[Kerberos]]></category><category><![CDATA[Oracle]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sun, 29 Dec 2024 15:19:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735485337562/ea8aefc5-7c4b-44f5-9e25-dc8824047dcc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>No post <a target="_blank" href="https://diogofernandes.com.br/oracle-autenticando-no-windows-addo-windows-ad-diogo-fernandes/">anterior</a> fiz uma breve introdução de como conectar no Oracle autenticando pelo Windows A.D.</p>
<p>Mas de fato o que são tokens? Como carregar vários tokens manualmente na estação? É isso que vamos ver neste post.</p>
<p>De forma macro, como tudo isso funciona? Vamos la!</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFPjLxGgvNKxg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690186889613?e=1752105600&amp;v=beta&amp;t=2An0xshRGNx_KSP9E90K2VixaUErYIHaLNNfiLJkf9w" alt="No alt text provided for this image" /></p>
<p>Assim como descrito no <a target="_blank" href="https://diogofernandes.com.br/oracle-autenticando-no-windows-ad">artigo anterior</a>, nos geramos um arquivo chamado databasenode1.keytab com o comando ktpass, do qual foi executado no A.D.</p>
<p>Posteriormente, transferimos esse arquivo para o servidor de banco de dados e referenciamos esse arquivo la no sqlnet.ora com o arquivo krb5.conf que contém as informações do A.D, ou seja, neste momento criamos uma ponte entre o Oracle e o A.D para se comunicarem através do protocolo kerberos.</p>
<pre><code class="lang-bash">SQLNET.KERBEROS5_CONF=/u01/app/oracle/product/19.0/dbhome_1/network/admin/krb5.conf
SQLNET.KERBEROS5_KEYTAB=/u01/app/oracle/product/19.0/dbhome_1/network/admin/databasenode1.keytab
</code></pre>
<p>Uma vez isso pronto, agora vamos para a parte de como a maquina cliente carregar o token.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEkswrlPHc9Tw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690188328632?e=1752105600&amp;v=beta&amp;t=C-P8AmtcrGJl6BxwZJhZcy5CJbPx5v__o8F2USgKi28" alt="No alt text provided for this image" /></p>
<p>Como a imagem acima demostra, a maquina client vai fazer uma requisição de "Credential Cache" essa credential cache é uma autorização que o A.D concederá a máquina client depois que o comando okinit for executado com sucesso, vamos ver como isso funciona na prática.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEplvgZwyBJxw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690189171055?e=1752105600&amp;v=beta&amp;t=HaXcuAyZxh8QRISYQgne5c_chEWxAnzFqCjx6OoHMV4" alt="No alt text provided for this image" /></p>
<p>Acima, executamos o comando okinit para o usuário prodapp01, podemos ver que logo abaixo foi requisitado a senha do usuário, ou seja, nesse momento ele foi até o A.D para validar o usuário, uma vez a senha correta digitada, ele retorna para você uma Credential Cache.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFAbE7yDkbM2Q/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690189579194?e=1752105600&amp;v=beta&amp;t=QMeeZIcX_zy3ycRztSOamEwaaenDnfO9RsJ2HtgL9_w" alt="No alt text provided for this image" /></p>
<p>O comando "oklist" sempre será utilizado para verificar o status da credential cache, na imagem acima podemos ver o local onde ela esta "armazenada" na linha "<strong>Ticket cache: File</strong>", a quem pertence "prodapp01@DATACOSMOS.COM.BR" e a validade "<strong>07/24/23 15:58:04</strong>". O local de armazenamento pode ser definido pelo sintaxe "-c" no comando "okinit" ou definir um local padrão no sqlnet.ora.</p>
<p>PS: O arquivo é criptografado.</p>
<pre><code class="lang-bash">SQLNET.KERBEROS5_CC_NAME=C:\temp\cc_name
</code></pre>
<p>Agora que a credential cache está na nossa máquina client, vamos fazer a conexão com o Oracle, esse passo, como funciona? Vamos la!!!</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEoqg_gAHmC9w/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690285270424?e=1752105600&amp;v=beta&amp;t=vmEpMyihNiiBL_Yacm-Oo2XC0nzbZVnXUBJ7-V6R7ms" alt="No alt text provided for this image" /></p>
<p>A maquina client, se apresenta ao Oracle com a seguinte apresentação:</p>
<p>- E ai Oracle! Blz? Tenho uma Credential Cache aqui, e gostaria de conectar.</p>
<p>Oracle:</p>
<p>- E ai jovem! blz? Espera aí que vou verificar com o AD...</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEVo4EHknzsNg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690285540357?e=1752105600&amp;v=beta&amp;t=D5K-ukqp1MUgdfl21A5s-jtVervgn78bUHdmKS0Bf8Y" alt="No alt text provided for this image" /></p>
<p>- A.D, blz? Tem uma máquina client aqui com a credential cache do usuário "prodapp01" posso liberar a conexão?</p>
<p>A.D:</p>
<p>- Oracle, essa credencial que você me informou é valida, pode liberar o acesso.</p>
<p>Oracle:</p>
<p>- Blz! Vou liberar o acesso</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQGSgzj2rp-WLg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690285923052?e=1752105600&amp;v=beta&amp;t=ykS2UgR82wssHpsBgqomAmgrFpR2ybY0hxE_tzGJpjc" alt="No alt text provided for this image" /></p>
<p>Acabamos de ver a parte "gráfica", agora vamos para o "bash".</p>
<p>Na prática, é isso que acontece:</p>
<blockquote>
<p>PS: Não façam isso em PRODUÇÃO hehe.</p>
</blockquote>
<p>No banco:</p>
<pre><code class="lang-bash">[oracle@databasenode1 admin]$ sqlplus / as sysdba 


SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 25 15:08:03 2023
Version 19.17.0.0.0


Copyright (c) 1982, 2022, Oracle.  All rights reserved.




Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0


SQL&gt; alter user prodapp01 identified externally as <span class="hljs-string">'prodapp01@DATACOSMOS.COM.BR'</span> ; 


User altered.

PS: Esse alter user só precisa ser feito na primeira vez.
</code></pre>
<p>Na máquina de aplicação:</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQGAInW4WmboSA/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690308632829?e=1752105600&amp;v=beta&amp;t=Kw7gIKZlsWXl-j50x6Q3bC2ark9acPPSQB-n2XEjjBQ" alt="No alt text provided for this image" /></p>
<p>Agora que compreendemos como acontece a negociação com a credential cache adquirida pelo A.D vamos para a parte de como conectar mais de um usuário de aplicação.</p>
<p>Mas antes vamos a uma breve história, até na versão 19.9, não era possível utilizar mais de uma conexão partindo da mesma sessão, mas qual era a limitação?</p>
<p>Não existia a possibilidade do tnsnames ler várias credential cache ao mesmo tempo, porém, a partir da versão 19.10 do Oracle Client, possibilitou carregar mais de um token/credential cache e apontá-los diretamente no tnsnames para a conexão correta. Mas de fato como isso funciona na prática e como fazer?</p>
<p>Utilizaremos como exemplo o usuário prodapp01 e prodapp02.</p>
<p>Antes de carregar os tokens dos usuários, vamos destruir o que está no caminho "default"</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQHpTfSgrlsg4A/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690316316824?e=1752105600&amp;v=beta&amp;t=yIW7nE2GoeVGitN1bbFMgB-h47WcEFwMcijy3kv27Fw" alt="No alt text provided for this image" /></p>
<p>Agora vamos carregar o token o usuário prodapp01 e prodapp02.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQG30QnIUV3zvA/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690321607060?e=1752105600&amp;v=beta&amp;t=PCoDTYor3SyZNAAyXCuS_DWvHDjAAgJUBygHbMcb4ck" alt="No alt text provided for this image" /></p>
<p>Verificando o status dos 2 tokens:</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFflmrhe94sMA/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690321818462?e=1752105600&amp;v=beta&amp;t=ERn_j_84-knap7zsNvr_cqCX-Xc9QXWynwsgth67WX4" alt="No alt text provided for this image" /></p>
<p>Pronto, uma vez os tokens devidamente carregados, vamos montar um novo tnsnames, mas porque fazer isso?</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQG7q8VqeT3mJw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690322823111?e=1752105600&amp;v=beta&amp;t=jBvFyA9tkSFKR8FeTcWi1cAJpBBOnkhZ5O6u9ieBbNc" alt="No alt text provided for this image" /></p>
<p>Quando temos que acessar via "strong authentication" com um tnsnames normal, ele sempre vai procurar a credential default e não é esse nosso objetivo, para realizarmos a conexão com as credential's que carregamos anteriormente vamos montar o seguinte tnsnames.ora.</p>
<pre><code class="lang-bash">PRODAPP01_KERB =
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=databaseno1.host)(PORT=1521)) 
    (CONNECT_DATA=
    (SERVICE_NAME=KERB)) 
      (SECURITY=(KERBEROS5_CC_NAME = c:\temp\cc_prodapp01) 
      (KERBEROS5_PRINCIPAL = prodapp01@DATACOSMOS.COM.BR)
    )
  )


PRODAPP02_KERB = 
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=databaseno1.host)(PORT=1521)) 
    (CONNECT_DATA=
    (SERVICE_NAME=KERB)) 
      (SECURITY=(KERBEROS5_CC_NAME = c:\temp\cc_prodapp02) 
      (KERBEROS5_PRINCIPAL = prodapp02@DATACOSMOS.COM.BR)
    )
  )
</code></pre>
<p>Neste novo tnsnames temos 2 campos adicionais:</p>
<pre><code class="lang-bash">SECURITY=(KERBEROS5_CC_NAME = c:\temp\cc_prodapp02)
      (KERBEROS5_PRINCIPAL = prodapp02@DATACOSMOS.COM.BR)
</code></pre>
<p>Esses 2 parâmetros permite que utilizemos a credential cache correta que nos carregamos anteriormente:</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQFqawFKdFO_gQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690335570893?e=1752105600&amp;v=beta&amp;t=EiwJc7OUb0KvdJ18jEKmIL4D41k7bwYtpfXdPocMiGI" alt="No alt text provided for this image" /></p>
<p>Agora vamos fazer a conexão com os 2 usuários para ver se tudo está ok.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQHFnBGi_b1gTA/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1690335739885?e=1752105600&amp;v=beta&amp;t=xqFsffKs54EYDzqCcsQYH82fZlkdTkzcYx9xelXYndA" alt="No alt text provided for this image" /></p>
<p>Podemos ver que agora as aplicações podem utilizar vários usuários "strong authentication" oriundo da mesma sessão do windows.</p>
<p>Sqlnet utilizado nesta configuração:</p>
<pre><code class="lang-bash">NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT
SQLNET.AUTHENTICATION_SERVICES= (KERBEROS5,KERBEROS5PRE,BEQ)
SQLNET.FALLBACK_AUTHENTICATION=TRUE
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=ORACLE
SQLNET.KERBEROS5_CONF=C:\Oracle\CLIENT19C\network\admin\krb5.conf
SQLNET.KERBEROS5_CLOCKSKEW=6000
SQLNET.KERBEROS5_CONF_MIT=TRUE
SQLNET.KERBEROS5_CC_NAME=C:\temp\cc_name)
</code></pre>
<p>Espero que este artigo contribua para aumentar a segurança do seu banco de dados e de suas aplicações.</p>
<blockquote>
<p>Grande abraço!</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[Oracle autenticando no Windows AD]]></title><description><![CDATA[Neste artigo abordaremos uma forma das "Strong Authentications" Oracle.
Ao decorrer deste, utilizaremos o Oracle/Kerberos para se autenticar no AD e então realizar a conexão com a base de dados Oracle.
A utilização deste procedimento remove a utiliza...]]></description><link>https://diogofernandes.com.br/oracle-autenticando-no-windows-ad</link><guid isPermaLink="true">https://diogofernandes.com.br/oracle-autenticando-no-windows-ad</guid><category><![CDATA[Oracle]]></category><category><![CDATA[Oracle Database]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sun, 29 Dec 2024 14:46:58 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735483530906/fa7b920c-504d-47f9-886e-b25f7eaf3663.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Neste artigo abordaremos uma forma das "Strong Authentications" Oracle.</p>
<p>Ao decorrer deste, utilizaremos o Oracle/Kerberos para se autenticar no AD e então realizar a conexão com a base de dados Oracle.</p>
<p>A utilização deste procedimento remove a utilização de senha na conexão do usuário Oracle, ou seja, aquele velho padrão usuário/senha não existirá mais. Daqui pra frente só conecta no usuário quem tiver o token carregador na maquina cliente, só pra dar uma prévia do que vai acontecer o usuário no banco de dados ficará assim:</p>
<pre><code class="lang-bash">ALTER USER DIOGO IDENTIFIED EXTERNALLY AS <span class="hljs-string">'DIOGO.FERNANDES@DATACOSMOS.COM.BR'</span> ;
</code></pre>
<p>Vamos lá...</p>
<p>No AD, vamos criar um usuário para o HOST/NODE chamado DATABASENODE1. Em caso de RAC criar um usuário para cada nó, sugiro criar o usuário no grupo de "serviços" para um melhor gerenciamento no futuro.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQF8p2FtO0toXw/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1689364962551?e=1752105600&amp;v=beta&amp;t=2miQypso4vXlxtVXjg4uh0uciEMolvWAORE4NNf-bUM" alt="Não foi fornecido texto alternativo para esta imagem" /></p>
<p>Uma vez criado vamos executar o comando KTPASS para gerar uma keytab, em resumo este arquivo ficará no sqlnet do Oracle e será responsável por verificar se aquela autenticação é valida ou não. Caso queria saber mais sobre o processo procure por TGT na tecnologia Kerberos que entenderá todo o processo.</p>
<p>Com permissão de ADMIN no power shell execute o comando:</p>
<pre><code class="lang-bash">ktpass.exe -princ ORACLE/databasenode1.datacosmos.com.br@DATACOSMOS.COM.BR -mapuser databasenode1 -crypto all -pass <span class="hljs-string">"Senha_do_usuario_aqui"</span> -out c:\temp\databasenode1.keytab
</code></pre>
<h3 id="heading-explicando-o-comando-parte-1"><strong>Explicando o comando: Parte 1</strong></h3>
<pre><code class="lang-bash">ktpass.exe -princ ORACLE/databasenode1.datacosmos.com.br@DATACOSMOS.COM.BR
</code></pre>
<p>"ORACLE" é o Serviço que criamos no AD com o comando ktpass e iremos vincular no sqlnet do banco posteriormente, depois do "/" vem o nome do host, este nome deve ser o FQDN, com o comando hostname -f você o obtém, depois do "@" vem o seu domínio.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQGyD8twwQAFiQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1689693789649?e=1752105600&amp;v=beta&amp;t=mMksTlD1HsJZzBABcl8yVgp26vAhPx2xhKGFVqlaiFI" alt="No alt text provided for this image" /></p>
<p>Apos a execução do comando ktpass o nome do usuario deve ficar como ORACLE/NOME_DO_HOST.</p>
<h3 id="heading-explicando-o-comando-parte-2"><strong>Explicando o comando: Parte 2</strong></h3>
<pre><code class="lang-bash">-mapuser databasenode1 -crypto all -pass <span class="hljs-string">"Senha_do_usuario_aqui"</span> -out c:\temp\databasenode1.keytab
</code></pre>
<p>Map user é o usuário que criamos anteriormente, crypto é o tipo de criptografia que neste caso está adicionando todas no arquivo de keytab e o cominho out é o arquivo chamado "keytab", este arquivo iremos transferi-lo para o host de banco de dados é fazer o apontamento no sqlnet.ora.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQEkOnNf0HhWhg/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1689365792077?e=1752105600&amp;v=beta&amp;t=aAxcsqYMzCNmDOqriM6hf6fn23Bp8nWuePpmbQhaF6Y" alt="Não foi fornecido texto alternativo para esta imagem" /></p>
<p>Pronto, com esse comando executado podemos pegar o arquivo c:\temp\DATABASENODE1.keytab do AD e iniciar nossa configuração de Strong Authentication que se autenticará no Windows.</p>
<p>No sqlnet no banco de dados que receberá as conexões via Strong Authentication vamos fazer a seguinte configuração:</p>
<pre><code class="lang-bash">[oracle@databasenode1 ~]$ <span class="hljs-built_in">cd</span> <span class="hljs-variable">$ORACLE_HOME</span>
[oracle@databasenode1 dbhome_1]$ <span class="hljs-built_in">cd</span> network/admin/
[oracle@databasenode1 admin]$ vi sqlnet.ora
[oracle@databasenode1 admin]$ cat sqlnet.ora

<span class="hljs-comment"># Kerberos Parameters </span>
SQLNET.AUTHENTICATION_SERVICES=(beq,kerberos5pre,kerberos5)
SQLNET.FALLBACK_AUTHENTICATION=TRUE
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=ORACLE
SQLNET.KERBEROS5_CONF=/u01/app/oracle/product/19.0/dbhome_1/network/admin/krb5.conf
SQLNET.KERBEROS5_CLOCKSKEW=6000
SQLNET.KERBEROS5_CONF_MIT=TRUE
<span class="hljs-comment"># Server side only</span>
SQLNET.KERBEROS5_KEYTAB=/u01/app/oracle/product/19.0/dbhome_1/network/admin/databasenode1.keytab
</code></pre>
<p>Apos isso vamos colocar as configurações do AD no arquivo krb5.conf que está no sqlnet acima.</p>
<pre><code class="lang-bash">[oracle@databasenode1 admin]$ vi /u01/app/oracle/product/19.0/dbhome_1/network/admin/krb5.conf
[oracle@databasenode1 admin]$ cat /u01/app/oracle/product/19.0/dbhome_1/network/admin/krb5.conf
[libdefaults]
default_realm = DATACOSMOS.COM.BR
clockskew = 6000
passwd_check_s_address = <span class="hljs-literal">false</span>
noaddresses = <span class="hljs-literal">true</span>
forwardable = yes
[realms]
DATACOSMOS.COM.BR = {
kdc = DATACOSMOS.COM.BR:88
}
[domain_realm]
DATACOSMOS.COM.BR = DATACOSMOS.COM.BR
.DATACOSMOS.COM.BR = DATACOSMOS.COM.BR
datacosmos.com.br = DATACOSMOS.COM.BR
.datacosmos.com.br = DATACOSMOS.COM.BR
domainsecundario.com.com=DATACOSMOS.COM.BR
.domainsecundario.com.com=DATACOSMOS.COM.BR
domainsecundario.com.COM=DATACOSMOS.COM.BR
.domainsecundario.com.COM=DATACOSMOS.COM.BR
</code></pre>
<p>OBS: Caso o domínio tenha correlação de confiança entre outros domínios, colocar todos como no exemplo acima. O Master é o DATACOMOS.COM.BR então criarei outros apontamentos do domainsecundario para o DATACOMOS.COM.BR, como no exemplo acima.</p>
<p>Uma vez essas configurações feitas vamos para o banco de dados:</p>
<pre><code class="lang-bash">[oracle@databasenode1 ~]$ sqlplus diogo@kerb


SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 17 22:33:39 2023
Version 19.17.0.0.0


Copyright (c) 1982, 2022, Oracle.  All rights reserved.


Enter password: 
Last Successful login time: Mon Jul 17 2023 15:21:23 -03:00


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0


SQL&gt; show user 
USER is <span class="hljs-string">"DIOGO"</span>
</code></pre>
<p>Podemos ver que o usuário "DIOGO" ainda esta autenticando pela forma padrão do Oracle, ou seja, usuário e senha.</p>
<p>Agora vamos fazer uma alteração no usuário para ele autenticar "externamente" ou seja, ele irá verificar se existe o token do usuário diogo.fernandes carregado na maquina Windows, caso sim, ele fechará conexão com o Oracle.</p>
<pre><code class="lang-bash">[oracle@databasenode1 ~]$ sqlplus / as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 17 22:38:10 2023
Version 19.17.0.0.0


Copyright (c) 1982, 2022, Oracle.  All rights reserved.




Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.17.0.0.0


SQL&gt; ALTER USER DIOGO IDENTIFIED  EXTERNALLY  AS <span class="hljs-string">'DIOGO.FERNANDES@DATACOSMOS.COM.BR'</span> ;


User altered.
</code></pre>
<p>Pronto, agora vamos pra maquina Windows "Client".</p>
<p>Vamos fazer uma instalação rápida do Client 19C:</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQGzhGzVfKyO9g/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1689644477218?e=1752105600&amp;v=beta&amp;t=Te1OcA85YCKLlB7B5UTVsu57G_E73AQjK0U1u8m4mGQ" alt="No alt text provided for this image" /></p>
<p>Sempre selecionar a opção Administrador neste caso.</p>
<p>Na pasta $ORACLE_HOME/network/admin temos os seguintes arquivos:</p>
<ol>
<li><p>krb5.conf</p>
</li>
<li><p>sqlnet.ora</p>
</li>
<li><p>tnsnames.ora</p>
</li>
</ol>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQF0ixmLsIaoKQ/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1689644683031?e=1752105600&amp;v=beta&amp;t=YIWGTaBCuBk3rOUfsq7DL9JUlmqS6-wAgaems2ZsrXc" alt="No alt text provided for this image" /></p>
<p>O arquivo krb5.conf tem as informações necessárias para obter as informações do AD, ele será mencionado no sqlnet.ora e é assim que o Oracle vai saber em qual AD buscar e validar as informações de token, segue o arquivo de configuração do krb5.conf</p>
<pre><code class="lang-bash">[libdefaults]
default_realm = DATACOSMOS.COM.BR
clockskew = 6000
passwd_check_s_address = <span class="hljs-literal">false</span>
noaddresses = <span class="hljs-literal">true</span>
forwardable = yes
[realms]
DATACOSMOS.COM.BR = {
kdc = DATACOSMOS.COM.BR:88
}
[domain_realm]
DATACOSMOS.COM.BR = DATACOSMOS.COM.BR
.DATACOSMOS.COM.BR = DATACOSMOS.COM.BR
datacosmos.com.br = DATACOSMOS.COM.BR
.datacosmos.com.br = DATACOSMOS.COM.BR
domainsecundario.com.com=DATACOSMOS.COM.BR
.domainsecundario.com.com=DATACOSMOS.COM.BR
domainsecundario.com.COM=DATACOSMOS.COM.BR
.domainsecundario.com.COM=DATACOSMOS.COM.BR
</code></pre>
<p>Agora vamos pro sqlnet.ora</p>
<pre><code class="lang-bash">NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)


SQLNET.AUTHENTICATION_SERVICES= (KERBEROS5PRE,BEQ)
SQLNET.FALLBACK_AUTHENTICATION=TRUE
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=ORACLE
SQLNET.KERBEROS5_CONF=C:\Oracle\CLIENT19C\network\admin\krb5.conf
SQLNET.KERBEROS5_CLOCKSKEW=6000
SQLNET.KERBEROS5_CONF_MIT=TRUE


SQLNET.KERBEROS5_CC_NAME=OSMSFT://
</code></pre>
<p>Podemos perceber que a ultima linha do sqlnet.ora esta com o parâmetro "OSMSFT://" setado, isso significa que nesse caso, ele irá utilizar o token previamente carregado pelo AD, mas na pratica o que isso significa ?</p>
<p>No powerShell da maquina cliente...</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQHk4tZoU7d5eA/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1689646337842?e=1752105600&amp;v=beta&amp;t=_XQ1lbNbdsGehfVS9lKGEZJUalbU07oURHx9t0SGqXk" alt="No alt text provided for this image" /></p>
<p>Assim que conectamos em qualquer "estação" vinculada ao AD, de imediato o AD já fornece token kerberos para aquele usuário, ou seja, no momento que loguei com o meu usuário diogo.fernandes ele já carregou os token's devidos para eu poder autenticar não somente no Oracle mas em qualquer outro serviço que o kerberos também esteja configurado, isso permite que todos os acessos de usuário se limite apenas ao AD, assim, não precisando criar 20 senhas para um usuário.</p>
<p><img src="https://media.licdn.com/dms/image/v2/D4D12AQF0UVhZyUXiag/article-inline_image-shrink_1500_2232/article-inline_image-shrink_1500_2232/0/1689646971061?e=1752105600&amp;v=beta&amp;t=B_nFRU59D9KLwNR_YX6USCoo5J63YhddWfK9Iz270vE" alt="No alt text provided for this image" /></p>
<p>Como dito anteriormente, não é mais necessário utilizar usuário/senha para conectar no usuário "DIOGO", no momento que passo a informação "/" no sqlplus, ele já entender que é uma autenticação "forte" e inicia a procura por tokens para realizar o handshake entre o servidor de AD e Banco de dados.</p>
<p>No proximo artigo, abordarei sobre usuários de "produção" utilizando strong authentication, como carregar vários tokens nas mesmas maquina, e como configurar o tnsnames propriamente dito para estes usuários.</p>
<h3 id="heading-artigo-baseado-na-nota-doc-id-13040041"><strong>Artigo baseado na nota Doc ID 1304004.1</strong></h3>
]]></content:encoded></item><item><title><![CDATA[Ksplice no Exadata]]></title><description><![CDATA[Normalmente quando precisamos corrigir qualquer problema no Kernel/OS do Exadata aplicamos o bundle patch de OS do exadata para corrigir o problema, mas você pode encontrar um bug/problema específico que já foi reconhecido pelo ksplice ou que a equip...]]></description><link>https://diogofernandes.com.br/ksplice-no-exadata</link><guid isPermaLink="true">https://diogofernandes.com.br/ksplice-no-exadata</guid><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sat, 28 Dec 2024 23:27:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735428392391/bfd36eda-0109-448a-b7ad-a7a8001680d7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Normalmente quando precisamos corrigir qualquer problema no Kernel/OS do Exadata aplicamos o bundle patch de OS do exadata para corrigir o problema, mas você pode encontrar um bug/problema específico que já foi reconhecido pelo ksplice ou que a equipe de suporte da Oracle acabou de solucionar e já publicou no ksplice para resolver o “seu” problema.</p>
<p>Alguns alertas:</p>
<ul>
<li><p>Ksplice offline updates may be installed on <strong>database nodes only</strong>.</p>
</li>
<li><p>Ksplice offline updates are supported for Exadata images 12.1.1.1.2 and later.</p>
</li>
<li><p>Ksplice offline updates are supported only for kernel updates. Exadata does not support ksplice updates for user space packages.</p>
</li>
</ul>
<p>        Este é um procedimento que o próprio suporte da Oracle (Doc ID 2207063.1) vai pedir para executá-lo, então execute-o apenas quando for requisitado pelo Suporte Oracle.        A razão mais comum pela qual a instalação do ksplice falha é que um ou mais módulos do kernel proprietários são carregados por um produto de segurança de terceiros que modificou o kernel de uma forma que entra em conflito com uma correção do ksplice recebida. O seguinte comando mostra módulos de kernel proprietários carregados:</p>
<pre><code class="lang-bash">[root@dbm0db02 ~]<span class="hljs-comment">#  grep -l P /sys/module/*/taint | cut -f4 -d/ | egrep -v 'oracle(acfs|advm|oks)'</span>
[root@dbm0db02 ~]<span class="hljs-comment">#</span>
</code></pre>
<p>Se não retornar nada podemos iniciar, caso retorne, favor consulte a nota <a target="_blank" href="https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=288786106005096&amp;parent=EXTERNAL_SEARCH&amp;sourceId=HOWTO&amp;id=2207063.1&amp;_afrWindowMode=0&amp;_adf.ctrl-state=x5vvl0vgf_119">2207063.1</a>.</p>
<p>Considerando que o procedimento anterior foi executado com sucesso, vamos iniciar o procedimento.</p>
<p>1º vamos acessar o site: <a target="_blank" href="https://linux.oracle.com/">https://linux.oracle.com</a> (Logue com a conta da sua organização).</p>
<p>2º Vá em Channels</p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNOBVqzSQcBW-qAbUUGNiIbxkT0MLZpqJo0a4aZb8MqR1XxzfYamOMo8EDpZBCbjratG6l_KJxoiOQ27s2tYVSBxBzbBSRck4MRQelEvHIfkuhQd8lf8MY8sO9ABrez8cvSwGAtmhfWfYe/s567/Imagem1.png" alt="enter image description here" /></p>
<p>3 º Selecione a arquitetura:</p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwNzRTPmIuylI-teSUULQLFVLpUsSBqkovFKAs9MzdGzQnoIi1B0l0gXkn8KbctfvPl69TaaRNQTvv7xgG4oQrjTfixK-fGNQAOSppSjqNDu64CvJ2sbk0IXd6r2brg836LkS1lExRMOMj/s567/Imagem2.png" alt="enter image description here" /></p>
<p>4 º Procure pelo pacote “Ksplice for Oracle Linux (x86_64)”</p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFMxP3oArTkTbgpLePMRjw8gf9yZJzDKRPVOfzDTEyE7pea2ZouHf1fOtlH4qeQf9dhTnMb_HWSMpMuF8rHAcDQAPRHcG1szzvx3AY7kkM7l0ZG-hSmq88qAnsXIlibjNXS2fH-6EJp3AM/s303/Imagem3.png" alt="enter image description here" /></p>
<p>5º Depois de clicar em Ksplice for Oracle Linux 7 (x86_64), clique em Channel packages.</p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI8pqjV0tAQB2rY5KOCUBI-JBxFTkCwmMYhih14YwYtBOEahCGoZaF4WXHoKuC4MDevWiP51VeImDbbqVq74Bcr57fy0-IFTkeZcj3o5SbywyTxlLuJY1ZNIxdcna05ARba9D5CnhRWsPM/s567/Imagem4.png" alt="enter image description here" /></p>
<p>6º Agora vamos baixar o pacote exato do seu kernel atual:</p>
<pre><code class="lang-bash">[root@dbm0db02 ~]<span class="hljs-comment"># uname -r</span>

4.14.35-1902.303.5.3.el7uek.x86_64
</code></pre>
<p>Vamos dar um CTRL+F e baixar exatamente o package que contem o resultado do “uname -r”</p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirvQZe8MUJk8C-0UVw-sKPyCjlIkKsWW6c974rpRqOt133aaeX5UpBcZw94jw8JqoEnk6q_5bfva7KYsLJ1CIcZvtaWB1GIVrbFd_C0L39r7tzgz00Qm1BMUDCOSpiT1dhFkvUmLEYwQgH/s567/Imagem5.png" alt="enter image description here" /></p>
<p>Transfira para o dbnodes e vamos iniciar o procedimento:</p>
<pre><code class="lang-bash">[root@dbm0db02 ~]<span class="hljs-comment"># ll -rths</span>
total 50M
 50M -rw-r--r-- 1 root    root     50M May 22 18:09 uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch.rpm
</code></pre>
<p>Como a nota <a target="_blank" href="https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=288786106005096&amp;parent=EXTERNAL_SEARCH&amp;sourceId=HOWTO&amp;id=2207063.1&amp;_afrWindowMode=0&amp;_adf.ctrl-state=x5vvl0vgf_119">2207063.1 recomend</a>a, antes de iniciarmos a instalação do ksplice precisamos remover o pacote “exadata-sun.*computenode-exact”.</p>
<pre><code class="lang-bash">[root@dbm0db02 ~]<span class="hljs-comment">#  yum list installed | grep 'exadata-sun.*computenode-exact'</span>
exadata-sun-computenode-exact.noarch       20.1.0.0.0.200616-1         installed

[root@dbm0db02 ~]<span class="hljs-comment"># yum erase exadata-sun-computenode-exact.noarch</span>
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package exadata-sun-computenode-exact.noarch 0:20.1.0.0.0.200616-1 will be erased
--&gt; Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================================== Package                                                       Arch                                   Version                                              Repository                                 Size
===========================================================================================================================================================================================================Removing:
 exadata-sun-computenode-exact                                 noarch                                 20.1.0.0.0.200616-1                                  installed                                 0.0  

Transaction Summary
===========================================================================================================================================================================================================Remove  1 Package

Installed size: 0  
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction <span class="hljs-built_in">test</span>
Transaction <span class="hljs-built_in">test</span> succeeded
Running transaction
  Erasing    : exadata-sun-computenode-exact-20.1.0.0.0.200616-1.noarch                                                                                                                                1/1 
  Verifying  : exadata-sun-computenode-exact-20.1.0.0.0.200616-1.noarch                                                                                                                                1/1 

Removed:
  exadata-sun-computenode-exact.noarch 0:20.1.0.0.0.200616-1                                                                                                                                               

Complete!
</code></pre>
<p>Pacote removido! Vamos a instalação…</p>
<pre><code class="lang-bash">[root@dbm0db02 ~]<span class="hljs-comment"># ll -rths</span>
total 50M
50M -rw-r--r-- 1 root    root     50M May 22 18:09 uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch.rpm

[root@dbm0db02 ~]<span class="hljs-comment"># yum install /root/uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch.rpm</span>
Examining /root/uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch.rpm: uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch
Marking /root/uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch.rpm to be installed
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64.noarch 0:20210512-0 will be installed
--&gt; Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================================== Package                                                          Arch                 Version                   Repository                                                                           Size
===========================================================================================================================================================================================================Installing:
 uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64               noarch               20210512-0                /uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch                51 M

Transaction Summary
===========================================================================================================================================================================================================Install  1 Package

Total size: 51 M
Installed size: 51 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction <span class="hljs-built_in">test</span>
Transaction <span class="hljs-built_in">test</span> succeeded
Running transaction
  Installing : uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch                                                                                                                    1/1 
The following steps will be taken:
Install [edt48ylb] Add ftrace safety guard <span class="hljs-keyword">for</span> existing Ksplice updates.
Install [bipgvpw6] Known exploit detection.
Install [lylzl1sj] Known exploit detection <span class="hljs-keyword">for</span> CVE-2017-7308.
Install [snvyltlq] Known exploit detection <span class="hljs-keyword">for</span> CVE-2018-14634.
Install [e2hf1ats] KPTI enablement <span class="hljs-keyword">for</span> Ksplice.
Install [1teh5owg] Known exploit detection <span class="hljs-keyword">for</span> CVE-2018-18445.
Install [44121bvv] Double free with SCSI LSI MPT Fusion SAS attach error.
Install [trh9jthq] CVE-2019-3846: Heap overflow when parsing BSS descriptor <span class="hljs-keyword">in</span> Marvell WiFi-Ex driver.
Install [3cqjhtx3] CVE-2019-19054: Denial-of-service <span class="hljs-keyword">in</span> the cx2388x tv card driver.
Install [7q5nae2r] CVE-2019-15214: Use-after-free when connecting ALSA cards.
Install [ff6vfhdf] CVE-2019-19536: Information leak when initializing PCAN-USB device.
Install [ixsnbim2] CVE-2019-7308: Out-of-bounds speculation <span class="hljs-keyword">in</span> BPF verifier.
Install [2lm6v1an] CVE-2020-12770: Information leak/DoS <span class="hljs-keyword">in</span> SCSI generic userspace write.
Install [67w4v90f] CVE-2020-12464: Use-after-free <span class="hljs-keyword">in</span> USB scatter-gather library.
Install [4tnet5w5] CVE-2019-19534: Information leak using PEAK PCAN-USB/USB Pro interfaces <span class="hljs-keyword">for</span> CAN 2.0b/CAN-FD.
Install [9teqocf3] CVE-2020-12653: Denial-of-service when scanning <span class="hljs-keyword">for</span> APs <span class="hljs-keyword">in</span> mwifiex driver.
Install [qdojji7h] CVE-2019-3846: Heap overflow when parsing fields <span class="hljs-keyword">in</span> Marvell WiFi-Ex driver.
Install [mcajph0v] CVE-2020-12654: Denial-of-service when querying WMM status <span class="hljs-keyword">in</span> mwifiex driver.
Install [3u8vegty] CVE-2020-10757: Flaw <span class="hljs-keyword">in</span> DAX page mapping allows privilege escalation.
Install [nlf0zswi] CVE-2020-10711: NULL pointer dereference when using CIPSO network packet labeling.
Install [ptsm3729] CVE-2019-19533: Information leak <span class="hljs-keyword">in</span> Technotrend/Hauppauge USB DEC driver.
Install [5pv0zta2] CVE-2020-12655: Denial-of-service when syncing data on XFS filesystem.
Install [aadmn3e5] Use-after-free when freeing received data over RDS socket.
Install [c7221zqe] Buffer overflow when dumping registers <span class="hljs-keyword">in</span> LSI Logic MegaRAID SAS RAID driver.
Install [9elx8r6h] CVE-2020-12652: Denial-of-service <span class="hljs-keyword">in</span> the Fusion MTP driver.
Install [hwmxykva] Poor NFS performances caused by excessive attribute revalidation.
Install [tgthi987] Denial-of-service when freezing and unfreezing an XFS filesystem.
Install [cya3ogzy] Improved fix <span class="hljs-keyword">for</span> CVE-2020-2732 when booting nested guests.
Install [e966zc48] Denial-of-service <span class="hljs-keyword">in</span> the Infiniband driver when referencing a node.
Install [cvdwwuzd] Use-after-free <span class="hljs-keyword">in</span> the Infiniband driver when releasing resources.
Install [kjk2vpux] Race condition when sending IB subnet MAD causes denial-of-service.
Install [hiaoskn9] CVE-2020-10766: Information leak using Spectre V4 variant.
Install [t439t60g] NULL-pointer dereference when shutting down DSA switch.
Install [t4avel7c] CVE-2019-19447: Use-after-free when unmounting corrupt ext4 filesystem.
Install [r4pnegf6] CVE-2020-10732: Information leak <span class="hljs-keyword">in</span> corefiles <span class="hljs-keyword">in</span> per-thread info.
Install [e9o5is2i] CVE-2019-19062: Denial-of-service <span class="hljs-keyword">in</span> the crypto subsystem.
Install [q7lx9ooy] CVE-2019-16234: NULL pointer dereference when registering Intel Wireless WiFi driver.
Install [d1l1wlz8] Use-after-free when releasing clocks <span class="hljs-keyword">in</span> PTP clock driver.
Install [3adwuqzu] CVE-2019-19037: Denial-of-service when handling empty directories <span class="hljs-keyword">in</span> ext4 filesystem.
Install [mx9ibtwj] CVE-2019-16232: NULL pointer dereference when registering Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards.
Install [jm6yd4li] Memory corruption during cgroup destruction with PSI enabled.
Install [bb0tzpz2] Kernel crash <span class="hljs-keyword">in</span> guest VM with machine check exception.
Install [clivbxob] CVE-2019-20811: Denial-of-service <span class="hljs-keyword">in</span> network device sysfs system.
Install [tsh471fw] Add bit <span class="hljs-keyword">for</span> guest kernel to handle kernel panic without host intervention.
Install [mqhc4bmw] Don<span class="hljs-string">'t return an ACK on some RDMA netlink operations.
Install [4ixr7sgq] CVE-2018-20169: Missing bound check when reading extra USB descriptors.
Install [3nkinjqi] CVE-2018-1000026: Denial-of-service when receiving invalid packet on bnx2x network card.
Install [5f5w0oz6] CVE-2018-18281: Information leak in mremap syscall.
Install [1a5n75aj] CVE-2019-19063: Denial-of-service in the rtlwifi driver.
Install [19lbejmu] CVE-2019-0136: Denial-of-service in Intel(R) wifi driver.
Install [anxgy28r] CVE-2018-20784: Denial-of-service in task scheduling.
Install [1y4ivn6l] CVE-2018-20976: Use-after-free when mounting XFS filesystem.
Install [dhmgixyw] CVE-2015-2150: Denial-of-service in Xen host from the guest.
Install [jurvatrf] CVE-2019-19523: Use-after-free when disconnecting ADU USB devices.
Install [3tcll1ov] CVE-2018-16882: Privilege escalation in nested Intel KVM interrupts.
Install [od6vms9i] CVE-2019-19052: Memory leak when opening USB Socket CAN device driver.
Install [byd1fjvz] CVE-2019-15927: Out-of-bounds accesses in usb audio driver.
Install [rtg2jjko] CVE-2019-9506: Information disclosure when transmitting over bluetooth.
Install [hgb8rgcc] CVE-2019-5108: Denial-of-service of a wireless access point during roaming of a station.
Install [okxy9ag9] CVE-2020-10751: SELinux bypass in netlink message validation.
Install [l8qz0cf1] CVE-2019-15918: Out-of-bounds access during CIFS mount.
Install [fhoaweza] CVE-2019-2024: Use-after-free when disconnecting a Empia EM28xx USB device.
Install [gphk4k5r] CVE-2020-13974: Integer overflow in virtual terminal keyboard interface.
Install [iivjues9] CVE-2019-19528: Denial-of-service when disconnecting IO Warrior USB device.
Install [11uqhn6c] CVE-2020-12114: Race condition in mountpoint counter causes DoS.
Install [b9b9f3kf] CVE-2019-19807: Use-after-free when registering timer in ALSA driver.
Install [hgpl3vss] CVE-2019-15218: Denial-of-service in Siano Mobile Digital TV USB tuner probing.
Install [109qn2xz] CVE-2019-19530: Denial-of-service in USB CDC-ACM probing.
Install [bhcvif0m] CVE-2020-11565: Out-of-bounds access when mounting tmpfs.
Install [mveq6q0v] CVE-2019-2101: Information leak when initializing a usb video device.
Install [96jk0uhc] CVE-2019-15117: Out-of-bounds access when parsing USB descriptor in ALSA USB driver.
Install [ajidrtfz] Improved fix for CVE-2018-17972: Information leak in /proc kernel stack dumps.
Install [uzg2h1sb] CVE-2019-19066: Denial-of-service int SCSI bfa driver.
Install [5d8o75u5] CVE-2019-15118: Stack overflow when checking input source type in ALSA USB driver.
Install [kj8qwnw5] CVE-2019-19051: Memory leak when changing power status of Intel Wireless WiMAX Connection 2400 driver.
Install [dldi73w2] CVE-2018-1129: Signature check bypass of cephx message.
Install [6g7nqusv] CVE-2019-3900: Infinite loop in vhost_net driver under heavy load.
Install [fp67ub1v] CVE-2020-1749: Information disclosure in IPv6 IPSec tunneling.
Install [jqobfvky] CVE-2019-11487: Invalid memory access when overflowing pages refcount.
Install [o3vwjkah] CVE-2019-18805: Denial-of-service in IPv4 round trip time configuration.
Install [r6xwmr9a] CVE-2019-19535, CVE-2019-19536: Information leak when initializing PCAN-USB device.
Install [eirwnk56] CVE-2017-18552: Memory corruption in the RDS protocol.
Install [8yot03uh] CVE-2019-15921: Denial-of-service in generic netlink socket family.
Install [2thbpnu3] CVE-2019-20812: Soft lockup in packet sockets with zero timeout.
Install [7c33rkhk] CVE-2019-9458: Use-after-free in V4L2 event subscription.
Install [4grifv3a] CVE-2019-9455: Information leak in V4L2 when setting output buffer size.
Install [fb5eodub] CVE-2019-19073, CVE-2019-19074: Denial-of-service in the ath9k wireless driver.
Install [samo6fmn] CVE-2020-10720: Use-after-free in generic receive offload fragmentation.
Install [ah33pp3h] CVE-2020-0305: Use-after-free when failing to open file on character device.
Install [gm7wtw1w] CVE-2020-12771: Deadlock during BCache node coalesce failure.
Install [ap0dbd8r] CVE-2019-15902: Bounds-check bypass in sys_ptrace().
Install [32yey8b2] CVE-2019-10220: Privileges escalation when parsing directory from a bad SMB server.
Install [t36cih2j] CVE-2020-8992: Deadlock with too big journal size on ext4 filesystem.
Install [l16s2z79] CVE-2020-10769: Out-of-bounds memory access in authenticated encryption key parsing.
Install [h2zoj70m] CVE-2014-9900: Information disclosure in Wake-On-LAN driver.
Install [jgoq29rm] Improved fix for CVE-2019-19768: Use-after-free when reporting an IO trace.
Install [baczzgxp] CVE-2019-19642: Denial-of-service in kernel relay file open path.
Install [rb014za7] Incorrect reporting of Process Address Space ID on AMD systems.
Install [9npfv9rb] Connection failure after RDS peer reboot.
Install [b5lxrr63] CVE-2020-24394: Information leak when exporting a filesystem over NFS.
Install [grdlpgdc] CVE-2019-17075: Denial-of-service in Chelsio T4/T5 RDMA TPT entries.
Install [scfnppae] CVE-2019-16746: Buffer overflow when receiving beacon over wireless network.
Install [s30q18pv] CVE-2020-14331: Out-of-bounds writes in ioctls of Console display driver.
Install [gljcytwa] CVE-2020-16166: Confidentiality vulnerability in the generation of the device ID.
Install [bz7pfng5] CVE-2019-3874: Denial-of-service by consuming a large amount of memory using SCTP socket.
Install [kkm3c4kt] CVE-2020-10781: Denial-of-service using Zram hot_add file sysfs entry.
Install [6mcud0xp] CVE-2019-17133: Denial-of-service in WiFI SIOCGIWESSID ioctl().
Install [6gp9cs5a] CVE-2018-14613: Multiple denial-of-services in the btrfs when mounting crafted images.
Install [b872hl5n] CVE-2019-14898: Denial-of-service when writing to file-max sysctl.
Install [q4ua18de] Channel recovery on transmition timeout in the Mellanox MLX5E driver.
Install [hu41z827] CVE-2019-18885: Denial-of-service in BTRFS extent verification.
Install [l3qgca72] CVE-2020-10767: Information leak using Spectre V2 attack due to IBPB being disabled.
Install [hzi9zld7] Denial-of-service when changing a paging attribute to non cachable.
Install [sygd7ev6] CVE-2020-25212: Out-of-bounds writes in RPC operations of Network File System.
Install [hgwk3m10] CVE-2018-20669: Privilege escalation in ioctl of i915 driver.
Install [8w3s90uz] Avoid page fault when updating the AMD IOMMU interrupt table.
Install [qhqi45un] CVE-2020-14386: Memory corruption when receiving a packet.
Install [h4n2u6me] CVE-2020-25284: Permission bypass when creating or removing a Rados block device.
Install [fih2hrl8] CVE-2020-25285: Denial-of-service when concurrently updating huge page sysctl parameters.
Install [3cogmz8j] CVE-2020-14314: Out-of-bounds memory read when splitting a directory block in the Ext4 filesystem.
Install [ig7kio2w] Use-after-free in the Oracle ASM driver when handling a query operation.
Install [7oirdwih] Re-factor memory cgroup statistic calculation.
Install [at9agcxc] Disable infiniband completion queue time stamping.
Install [eto8igfv] CVE-2019-19448: Use-after-free in Btrfs filesystem with a crafted btrfs filesystem image.
Install [rtplzq9k] CVE-2020-25641: Denial-of-service in biovec when zero-length biovec is issued.
Install [tqhmm9xx] CVE-2020-25643: Memory corruption in WAN HDLC-PPP due to missing error checking.
Install [stv272u2] CVE-2019-16089: Denial-of-service while checking NBD netlink status.
Install [dqw87z0a] CVE-2020-25211: Denial-of-service in Netfilter due to out-of-bounds memory access.
Install [fu9299l2] CVE-2020-14385: Denial of service in XFS filesystem.
Install [bua1sg0m] CVE-2019-19377: Use-after-free when unmounting a BTRFS image.
Install [oxfogcv8] CVE-2020-14356: NULL-pointer dereference in cgroupv2.
Install [l9d34kbr] CVE-2020-14390: Memory corruption when resizing the framebuffer.
Install [l6yeduhy] Race condition during iommu shutdown during a kernel panic.
Install [b2sygna8] CVE-2020-25645: Possible information leak between encrypted geneve endpoints.
Install [9pbc8q7r] CVE-2020-8694: Platypus Attack Mitigation.
Install [fecvmf3c] Clean up ftrace safety guard for existing Ksplice updates.
Install [n8ho14r0] Canceled RDS operations may still be executed.
Install [qzcfgssm] Use-after-free due to incorrect RDS operation status.
Install [i9zgalwk] Memory corruption when processing RDS extension headers.
Install [f5nnackz] CPU resource exhaustion when shrinking hash tables.
Install [4w115e3d] CVE-2020-12352: Information leak when handling AMP packets in Bluetooth stack.
Install [8927melz] Guest VM leaks bits into host control register, causing host to panic.
Install [pc7kfj5f] CVE-2019-19816: Invalid memory accesses during btrfs filesystem sync.
Install [gof9iub0] CVE-2020-25656: Use-after-free in console subsystem.
Install [nvdwvczo] CVE-2020-25668: Race condition when sending ioctls to a virtual terminal.
Install [iqua3ysi] CVE-2020-25704: Denial-of-service in the performance monitoring subsystem.
Install [pc4efmwh] CVE-2020-27675: Race condition when reconfiguring para-virtualized Xen devices.
Install [518x0407] CVE-2020-28974: Invalid memory access when manipulating framebuffer fonts.
Install [om575fk9] CVE-2020-28374: Access control bypass when reading or writing TCM devices.
Install [smtq0o16] CVE-2020-25705: ICMP rate-limiter can indirectly leak UDP port information.
Install [gxgp7md3] CVE-2020-28915: Information leak due to out-of-bounds read in Framebuffer Console.
Install [1ayz8ukr] CVE-2020-14351: Privilege escalation in perf subsystem due to use-after-free.
Install [jw5a37tf] CVE-2020-29569: Use-after-free when disconnecting Xen block devices.
Install [e1qgj5oi] Invalid bonding state with some network interfaces.
Install [4d68bkuy] Memory corruption in RDMA IO buffers.
Install [sxbva55v] Recover from memory pressure in the network layer.
Install [2hog7v7x] Flush the ARP cache when an RDMA interface changes its hardware address.
Install [tqysap9f] Avoid unneeded BUG_ON when closing RDS connections.
Install [9014r0f1] CVE-2020-15436: Use-after-free in blk device locks allows privilege escalation.
Install [5nnh5ltk] Buffer overflow when parsing some /proc/sys entries.
Install [7bfftrhd] CVE-2020-36158: Buffer overflow when creating an ad-hoc network.
Install [ddty3naj] Restrict NLM interval based host rebinding to UDP.
Install [deyfa0l1] CVE-2020-29660: Use-after-free in tty subsystem.
Install [hmbv5wjj] Possible missing files when iterating NFSv4 directories.
Install [2inwipov] CVE-2019-19947: Information leak in CAN Kvaser memory allocations.
Install [iahmns7p] CVE-2020-10768: Information leak using Spectre V2 gadgets due to incorrect prctl configuration.
Install [67ds1ur7] CVE-2020-24490: Privilege escalation in Bluetooth subsystem due to heap buffer overflow.
Install [h7cc0lf4] CVE-2019-18808: Memory leak in CCP device driver with invalid hash type.
Install [dp49y68f] CVE-2020-12351: Denial-of-service in L2CAP bluetooth driver.
Install [6vd15fp9] CVE-2021-26931, XSA-362: Mishandling of errors causes DoS of Xen backend.
Install [mbihi3b6] CVE-2021-26930, XSA-365: Bad error handing of blkback grant references.
Install [juvadtfe] CVE-2021-26932, XSA-361: Denial-of-host-service by malicious Xen frontend.
Install [s2yrku37] CVE-2019-19770: use-after-free in the debugfs from blktrace.
Install [cz2s2q2d] Improved update to CVE-2020-28915: Information leak due to out-of-bounds read in Framebuffer Console.
Install [bt9gct3d] Use-after-free in the networking TAP driver when handling a frame.
Install [bk6uwd1c] Migration failure in the Infiniband driver when an interface comes up after initialization.
Install [3r5qfqjf] Unecessary delays when allocation a virtual host SCSI device.
Install [oe1kvz5a] Avoid delaying the processing of completions in the infiniband driver.
Install [egsy21yt] Possible race condition whilst disconnecting SUNRPC connections.
Install [4za2h4oi] Avoid excessive memory usage from the infiniband driver.
Install [3pg4dv4d] High CPU utilization caused by lock contention in the zone page allocator.
Install [8f5avd0t] Possible kernel panic during IMPI reboot.
Install [45wwoufj] CVE-2021-3348: Use-after-free due to bad locking in Network block device.
Install [jqmhutsm] CVE-2021-3347: Privilege escalation in the Fast Userspace Mutexes.
Install [flm81vdd] CVE-2020-16120: Read permission bypass with overlay filesystem.
Install [mxu6ucv9] CVE-2021-27363, CVE-2021-27364, CVE-2021-27365: Priviledge escalation in iSCSI subsystem.
Install [ezqm5dui] Known exploit detection for CVE-2016-5195.
Install [71me89jl] Known exploit detection for CVE-2019-9213.
Install [ktm7khfr] CVE-2021-28038: Mishandling of errors causes DoS of Xen backend.
Install [jhckhjpw] Reduce allocation latency in Infiniband driver.
Install [ibyh7gbw] CVE-2020-27170, CVE-2020-27171: Information disclosure in BPF verifier.
Install [j1fc3g2n] CVE-2021-29605: Denial-of-Service in netfilter subsystem.
Install [qq5lrnft] Denial-of-service in the OCFS2 filesystem when setting file attributes
Install [evpvzwgz] CVE-2021-28688, XSA-371: Xen Hypervisor persistant grant leakage.
Install [226k0cjc] CVE-2021-28971: Denial-of-Service in Intel PEBS performance monitoring.
Install [hu2zpwc7] CVE-2021-28964: Race condition in btrfs filesystem.
Install [rg1g0t6f] CVE-2021-3428: Denial-of-Service in ext4 subsystem.
Install [jcfl6cfs] CVE-2021-29154: Code execution in eBPF JIT compiler.
Installing [edt48ylb] Add ftrace safety guard for existing Ksplice updates.
Installing [bipgvpw6] Known exploit detection.
Installing [lylzl1sj] Known exploit detection for CVE-2017-7308.
Installing [snvyltlq] Known exploit detection for CVE-2018-14634.
Installing [e2hf1ats] KPTI enablement for Ksplice.
Installing [1teh5owg] Known exploit detection for CVE-2018-18445.
Installing [44121bvv] Double free with SCSI LSI MPT Fusion SAS attach error.
Installing [trh9jthq] CVE-2019-3846: Heap overflow when parsing BSS descriptor in Marvell WiFi-Ex driver.
Installing [3cqjhtx3] CVE-2019-19054: Denial-of-service in the cx2388x tv card driver.
Installing [7q5nae2r] CVE-2019-15214: Use-after-free when connecting ALSA cards.
Installing [ff6vfhdf] CVE-2019-19536: Information leak when initializing PCAN-USB device.
Installing [ixsnbim2] CVE-2019-7308: Out-of-bounds speculation in BPF verifier.
Installing [2lm6v1an] CVE-2020-12770: Information leak/DoS in SCSI generic userspace write.
Installing [67w4v90f] CVE-2020-12464: Use-after-free in USB scatter-gather library.
Installing [4tnet5w5] CVE-2019-19534: Information leak using PEAK PCAN-USB/USB Pro interfaces for CAN 2.0b/CAN-FD.
Installing [9teqocf3] CVE-2020-12653: Denial-of-service when scanning for APs in mwifiex driver.
Installing [qdojji7h] CVE-2019-3846: Heap overflow when parsing fields in Marvell WiFi-Ex driver.
Installing [mcajph0v] CVE-2020-12654: Denial-of-service when querying WMM status in mwifiex driver.
Installing [3u8vegty] CVE-2020-10757: Flaw in DAX page mapping allows privilege escalation.
Installing [nlf0zswi] CVE-2020-10711: NULL pointer dereference when using CIPSO network packet labeling.
Installing [ptsm3729] CVE-2019-19533: Information leak in Technotrend/Hauppauge USB DEC driver.
Installing [5pv0zta2] CVE-2020-12655: Denial-of-service when syncing data on XFS filesystem.
Installing [aadmn3e5] Use-after-free when freeing received data over RDS socket.
Installing [c7221zqe] Buffer overflow when dumping registers in LSI Logic MegaRAID SAS RAID driver.
Installing [9elx8r6h] CVE-2020-12652: Denial-of-service in the Fusion MTP driver.
Installing [hwmxykva] Poor NFS performances caused by excessive attribute revalidation.
Installing [tgthi987] Denial-of-service when freezing and unfreezing an XFS filesystem.
Installing [cya3ogzy] Improved fix for CVE-2020-2732 when booting nested guests.
Installing [e966zc48] Denial-of-service in the Infiniband driver when referencing a node.
Installing [cvdwwuzd] Use-after-free in the Infiniband driver when releasing resources.
Installing [kjk2vpux] Race condition when sending IB subnet MAD causes denial-of-service.
Installing [hiaoskn9] CVE-2020-10766: Information leak using Spectre V4 variant.
Installing [t439t60g] NULL-pointer dereference when shutting down DSA switch.
Installing [t4avel7c] CVE-2019-19447: Use-after-free when unmounting corrupt ext4 filesystem.
Installing [r4pnegf6] CVE-2020-10732: Information leak in corefiles in per-thread info.
Installing [e9o5is2i] CVE-2019-19062: Denial-of-service in the crypto subsystem.
Installing [q7lx9ooy] CVE-2019-16234: NULL pointer dereference when registering Intel Wireless WiFi driver.
Installing [d1l1wlz8] Use-after-free when releasing clocks in PTP clock driver.
Installing [3adwuqzu] CVE-2019-19037: Denial-of-service when handling empty directories in ext4 filesystem.
Installing [mx9ibtwj] CVE-2019-16232: NULL pointer dereference when registering Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards.
Installing [jm6yd4li] Memory corruption during cgroup destruction with PSI enabled.
Installing [bb0tzpz2] Kernel crash in guest VM with machine check exception.
Installing [clivbxob] CVE-2019-20811: Denial-of-service in network device sysfs system.
Installing [tsh471fw] Add bit for guest kernel to handle kernel panic without host intervention.
Installing [mqhc4bmw] Don'</span>t <span class="hljs-built_in">return</span> an ACK on some RDMA netlink operations.
Installing [4ixr7sgq] CVE-2018-20169: Missing bound check when reading extra USB descriptors.
Installing [3nkinjqi] CVE-2018-1000026: Denial-of-service when receiving invalid packet on bnx2x network card.
Installing [5f5w0oz6] CVE-2018-18281: Information leak <span class="hljs-keyword">in</span> mremap syscall.
Installing [1a5n75aj] CVE-2019-19063: Denial-of-service <span class="hljs-keyword">in</span> the rtlwifi driver.
Installing [19lbejmu] CVE-2019-0136: Denial-of-service <span class="hljs-keyword">in</span> Intel(R) wifi driver.
Installing [anxgy28r] CVE-2018-20784: Denial-of-service <span class="hljs-keyword">in</span> task scheduling.
Installing [1y4ivn6l] CVE-2018-20976: Use-after-free when mounting XFS filesystem.
Installing [dhmgixyw] CVE-2015-2150: Denial-of-service <span class="hljs-keyword">in</span> Xen host from the guest.
Installing [jurvatrf] CVE-2019-19523: Use-after-free when disconnecting ADU USB devices.
Installing [3tcll1ov] CVE-2018-16882: Privilege escalation <span class="hljs-keyword">in</span> nested Intel KVM interrupts.
Installing [od6vms9i] CVE-2019-19052: Memory leak when opening USB Socket CAN device driver.
Installing [byd1fjvz] CVE-2019-15927: Out-of-bounds accesses <span class="hljs-keyword">in</span> usb audio driver.
Installing [rtg2jjko] CVE-2019-9506: Information disclosure when transmitting over bluetooth.
Installing [hgb8rgcc] CVE-2019-5108: Denial-of-service of a wireless access point during roaming of a station.
Installing [okxy9ag9] CVE-2020-10751: SELinux bypass <span class="hljs-keyword">in</span> netlink message validation.
Installing [l8qz0cf1] CVE-2019-15918: Out-of-bounds access during CIFS mount.
Installing [fhoaweza] CVE-2019-2024: Use-after-free when disconnecting a Empia EM28xx USB device.
Installing [gphk4k5r] CVE-2020-13974: Integer overflow <span class="hljs-keyword">in</span> virtual terminal keyboard interface.
Installing [iivjues9] CVE-2019-19528: Denial-of-service when disconnecting IO Warrior USB device.
Installing [11uqhn6c] CVE-2020-12114: Race condition <span class="hljs-keyword">in</span> mountpoint counter causes DoS.
Installing [b9b9f3kf] CVE-2019-19807: Use-after-free when registering timer <span class="hljs-keyword">in</span> ALSA driver.
Installing [hgpl3vss] CVE-2019-15218: Denial-of-service <span class="hljs-keyword">in</span> Siano Mobile Digital TV USB tuner probing.
Installing [109qn2xz] CVE-2019-19530: Denial-of-service <span class="hljs-keyword">in</span> USB CDC-ACM probing.
Installing [bhcvif0m] CVE-2020-11565: Out-of-bounds access when mounting tmpfs.
Installing [mveq6q0v] CVE-2019-2101: Information leak when initializing a usb video device.
Installing [96jk0uhc] CVE-2019-15117: Out-of-bounds access when parsing USB descriptor <span class="hljs-keyword">in</span> ALSA USB driver.
Installing [ajidrtfz] Improved fix <span class="hljs-keyword">for</span> CVE-2018-17972: Information leak <span class="hljs-keyword">in</span> /proc kernel stack dumps.
Installing [uzg2h1sb] CVE-2019-19066: Denial-of-service int SCSI bfa driver.
Installing [5d8o75u5] CVE-2019-15118: Stack overflow when checking input <span class="hljs-built_in">source</span> <span class="hljs-built_in">type</span> <span class="hljs-keyword">in</span> ALSA USB driver.
Installing [kj8qwnw5] CVE-2019-19051: Memory leak when changing power status of Intel Wireless WiMAX Connection 2400 driver.
Installing [dldi73w2] CVE-2018-1129: Signature check bypass of cephx message.
Installing [6g7nqusv] CVE-2019-3900: Infinite loop <span class="hljs-keyword">in</span> vhost_net driver under heavy load.
Installing [fp67ub1v] CVE-2020-1749: Information disclosure <span class="hljs-keyword">in</span> IPv6 IPSec tunneling.
Installing [jqobfvky] CVE-2019-11487: Invalid memory access when overflowing pages refcount.
Installing [o3vwjkah] CVE-2019-18805: Denial-of-service <span class="hljs-keyword">in</span> IPv4 round trip time configuration.
Installing [r6xwmr9a] CVE-2019-19535, CVE-2019-19536: Information leak when initializing PCAN-USB device.
Installing [eirwnk56] CVE-2017-18552: Memory corruption <span class="hljs-keyword">in</span> the RDS protocol.
Installing [8yot03uh] CVE-2019-15921: Denial-of-service <span class="hljs-keyword">in</span> generic netlink socket family.
Installing [2thbpnu3] CVE-2019-20812: Soft lockup <span class="hljs-keyword">in</span> packet sockets with zero timeout.
Installing [7c33rkhk] CVE-2019-9458: Use-after-free <span class="hljs-keyword">in</span> V4L2 event subscription.
Installing [4grifv3a] CVE-2019-9455: Information leak <span class="hljs-keyword">in</span> V4L2 when setting output buffer size.
Installing [fb5eodub] CVE-2019-19073, CVE-2019-19074: Denial-of-service <span class="hljs-keyword">in</span> the ath9k wireless driver.
Installing [samo6fmn] CVE-2020-10720: Use-after-free <span class="hljs-keyword">in</span> generic receive offload fragmentation.
Installing [ah33pp3h] CVE-2020-0305: Use-after-free when failing to open file on character device.
Installing [gm7wtw1w] CVE-2020-12771: Deadlock during BCache node coalesce failure.
Installing [ap0dbd8r] CVE-2019-15902: Bounds-check bypass <span class="hljs-keyword">in</span> sys_ptrace().
Installing [32yey8b2] CVE-2019-10220: Privileges escalation when parsing directory from a bad SMB server.
Installing [t36cih2j] CVE-2020-8992: Deadlock with too big journal size on ext4 filesystem.
Installing [l16s2z79] CVE-2020-10769: Out-of-bounds memory access <span class="hljs-keyword">in</span> authenticated encryption key parsing.
Installing [h2zoj70m] CVE-2014-9900: Information disclosure <span class="hljs-keyword">in</span> Wake-On-LAN driver.
Installing [jgoq29rm] Improved fix <span class="hljs-keyword">for</span> CVE-2019-19768: Use-after-free when reporting an IO trace.
Installing [baczzgxp] CVE-2019-19642: Denial-of-service <span class="hljs-keyword">in</span> kernel relay file open path.
Installing [rb014za7] Incorrect reporting of Process Address Space ID on AMD systems.
Installing [9npfv9rb] Connection failure after RDS peer reboot.
Installing [b5lxrr63] CVE-2020-24394: Information leak when exporting a filesystem over NFS.
Installing [grdlpgdc] CVE-2019-17075: Denial-of-service <span class="hljs-keyword">in</span> Chelsio T4/T5 RDMA TPT entries.
Installing [scfnppae] CVE-2019-16746: Buffer overflow when receiving beacon over wireless network.
Installing [s30q18pv] CVE-2020-14331: Out-of-bounds writes <span class="hljs-keyword">in</span> ioctls of Console display driver.
Installing [gljcytwa] CVE-2020-16166: Confidentiality vulnerability <span class="hljs-keyword">in</span> the generation of the device ID.
Installing [bz7pfng5] CVE-2019-3874: Denial-of-service by consuming a large amount of memory using SCTP socket.
Installing [kkm3c4kt] CVE-2020-10781: Denial-of-service using Zram hot_add file sysfs entry.
Installing [6mcud0xp] CVE-2019-17133: Denial-of-service <span class="hljs-keyword">in</span> WiFI SIOCGIWESSID ioctl().
Installing [6gp9cs5a] CVE-2018-14613: Multiple denial-of-services <span class="hljs-keyword">in</span> the btrfs when mounting crafted images.
Installing [b872hl5n] CVE-2019-14898: Denial-of-service when writing to file-max sysctl.
Installing [q4ua18de] Channel recovery on transmition timeout <span class="hljs-keyword">in</span> the Mellanox MLX5E driver.
Installing [hu41z827] CVE-2019-18885: Denial-of-service <span class="hljs-keyword">in</span> BTRFS extent verification.
Installing [l3qgca72] CVE-2020-10767: Information leak using Spectre V2 attack due to IBPB being disabled.
Installing [hzi9zld7] Denial-of-service when changing a paging attribute to non cachable.
Installing [sygd7ev6] CVE-2020-25212: Out-of-bounds writes <span class="hljs-keyword">in</span> RPC operations of Network File System.
Installing [hgwk3m10] CVE-2018-20669: Privilege escalation <span class="hljs-keyword">in</span> ioctl of i915 driver.
Installing [8w3s90uz] Avoid page fault when updating the AMD IOMMU interrupt table.
Installing [qhqi45un] CVE-2020-14386: Memory corruption when receiving a packet.
Installing [h4n2u6me] CVE-2020-25284: Permission bypass when creating or removing a Rados block device.
Installing [fih2hrl8] CVE-2020-25285: Denial-of-service when concurrently updating huge page sysctl parameters.
Installing [3cogmz8j] CVE-2020-14314: Out-of-bounds memory <span class="hljs-built_in">read</span> when splitting a directory block <span class="hljs-keyword">in</span> the Ext4 filesystem.
Installing [ig7kio2w] Use-after-free <span class="hljs-keyword">in</span> the Oracle ASM driver when handling a query operation.
Installing [7oirdwih] Re-factor memory cgroup statistic calculation.
Installing [at9agcxc] Disable infiniband completion queue time stamping.
Installing [eto8igfv] CVE-2019-19448: Use-after-free <span class="hljs-keyword">in</span> Btrfs filesystem with a crafted btrfs filesystem image.
Installing [rtplzq9k] CVE-2020-25641: Denial-of-service <span class="hljs-keyword">in</span> biovec when zero-length biovec is issued.
Installing [tqhmm9xx] CVE-2020-25643: Memory corruption <span class="hljs-keyword">in</span> WAN HDLC-PPP due to missing error checking.
Installing [stv272u2] CVE-2019-16089: Denial-of-service <span class="hljs-keyword">while</span> checking NBD netlink status.
Installing [dqw87z0a] CVE-2020-25211: Denial-of-service <span class="hljs-keyword">in</span> Netfilter due to out-of-bounds memory access.
Installing [fu9299l2] CVE-2020-14385: Denial of service <span class="hljs-keyword">in</span> XFS filesystem.
Installing [bua1sg0m] CVE-2019-19377: Use-after-free when unmounting a BTRFS image.
Installing [oxfogcv8] CVE-2020-14356: NULL-pointer dereference <span class="hljs-keyword">in</span> cgroupv2.
Installing [l9d34kbr] CVE-2020-14390: Memory corruption when resizing the framebuffer.
Installing [l6yeduhy] Race condition during iommu shutdown during a kernel panic.
Installing [b2sygna8] CVE-2020-25645: Possible information leak between encrypted geneve endpoints.
Installing [9pbc8q7r] CVE-2020-8694: Platypus Attack Mitigation.
Installing [fecvmf3c] Clean up ftrace safety guard <span class="hljs-keyword">for</span> existing Ksplice updates.
Installing [n8ho14r0] Canceled RDS operations may still be executed.
Installing [qzcfgssm] Use-after-free due to incorrect RDS operation status.
Installing [i9zgalwk] Memory corruption when processing RDS extension headers.
Installing [f5nnackz] CPU resource exhaustion when shrinking <span class="hljs-built_in">hash</span> tables.
Installing [4w115e3d] CVE-2020-12352: Information leak when handling AMP packets <span class="hljs-keyword">in</span> Bluetooth stack.
Installing [8927melz] Guest VM leaks bits into host control register, causing host to panic.
Installing [pc7kfj5f] CVE-2019-19816: Invalid memory accesses during btrfs filesystem sync.
Installing [gof9iub0] CVE-2020-25656: Use-after-free <span class="hljs-keyword">in</span> console subsystem.
Installing [nvdwvczo] CVE-2020-25668: Race condition when sending ioctls to a virtual terminal.
Installing [iqua3ysi] CVE-2020-25704: Denial-of-service <span class="hljs-keyword">in</span> the performance monitoring subsystem.
Installing [pc4efmwh] CVE-2020-27675: Race condition when reconfiguring para-virtualized Xen devices.
Installing [518x0407] CVE-2020-28974: Invalid memory access when manipulating framebuffer fonts.
Installing [om575fk9] CVE-2020-28374: Access control bypass when reading or writing TCM devices.
Installing [smtq0o16] CVE-2020-25705: ICMP rate-limiter can indirectly leak UDP port information.
Installing [gxgp7md3] CVE-2020-28915: Information leak due to out-of-bounds <span class="hljs-built_in">read</span> <span class="hljs-keyword">in</span> Framebuffer Console.
Installing [1ayz8ukr] CVE-2020-14351: Privilege escalation <span class="hljs-keyword">in</span> perf subsystem due to use-after-free.
Installing [jw5a37tf] CVE-2020-29569: Use-after-free when disconnecting Xen block devices.
Installing [e1qgj5oi] Invalid bonding state with some network interfaces.
Installing [4d68bkuy] Memory corruption <span class="hljs-keyword">in</span> RDMA IO buffers.
Installing [sxbva55v] Recover from memory pressure <span class="hljs-keyword">in</span> the network layer.
Installing [2hog7v7x] Flush the ARP cache when an RDMA interface changes its hardware address.
Installing [tqysap9f] Avoid unneeded BUG_ON when closing RDS connections.
Installing [9014r0f1] CVE-2020-15436: Use-after-free <span class="hljs-keyword">in</span> blk device locks allows privilege escalation.
Installing [5nnh5ltk] Buffer overflow when parsing some /proc/sys entries.
Installing [7bfftrhd] CVE-2020-36158: Buffer overflow when creating an ad-hoc network.
Installing [ddty3naj] Restrict NLM interval based host rebinding to UDP.
Installing [deyfa0l1] CVE-2020-29660: Use-after-free <span class="hljs-keyword">in</span> tty subsystem.
Installing [hmbv5wjj] Possible missing files when iterating NFSv4 directories.
Installing [2inwipov] CVE-2019-19947: Information leak <span class="hljs-keyword">in</span> CAN Kvaser memory allocations.
Installing [iahmns7p] CVE-2020-10768: Information leak using Spectre V2 gadgets due to incorrect prctl configuration.
Installing [67ds1ur7] CVE-2020-24490: Privilege escalation <span class="hljs-keyword">in</span> Bluetooth subsystem due to heap buffer overflow.
Installing [h7cc0lf4] CVE-2019-18808: Memory leak <span class="hljs-keyword">in</span> CCP device driver with invalid <span class="hljs-built_in">hash</span> <span class="hljs-built_in">type</span>.
Installing [dp49y68f] CVE-2020-12351: Denial-of-service <span class="hljs-keyword">in</span> L2CAP bluetooth driver.
Installing [6vd15fp9] CVE-2021-26931, XSA-362: Mishandling of errors causes DoS of Xen backend.
Installing [mbihi3b6] CVE-2021-26930, XSA-365: Bad error handing of blkback grant references.
Installing [juvadtfe] CVE-2021-26932, XSA-361: Denial-of-host-service by malicious Xen frontend.
Installing [s2yrku37] CVE-2019-19770: use-after-free <span class="hljs-keyword">in</span> the debugfs from blktrace.
Installing [cz2s2q2d] Improved update to CVE-2020-28915: Information leak due to out-of-bounds <span class="hljs-built_in">read</span> <span class="hljs-keyword">in</span> Framebuffer Console.
Installing [bt9gct3d] Use-after-free <span class="hljs-keyword">in</span> the networking TAP driver when handling a frame.
Installing [bk6uwd1c] Migration failure <span class="hljs-keyword">in</span> the Infiniband driver when an interface comes up after initialization.
Installing [3r5qfqjf] Unecessary delays when allocation a virtual host SCSI device.
Installing [oe1kvz5a] Avoid delaying the processing of completions <span class="hljs-keyword">in</span> the infiniband driver.
Installing [egsy21yt] Possible race condition whilst disconnecting SUNRPC connections.
Installing [4za2h4oi] Avoid excessive memory usage from the infiniband driver.
Installing [3pg4dv4d] High CPU utilization caused by lock contention <span class="hljs-keyword">in</span> the zone page allocator.
Installing [8f5avd0t] Possible kernel panic during IMPI reboot.
Installing [45wwoufj] CVE-2021-3348: Use-after-free due to bad locking <span class="hljs-keyword">in</span> Network block device.
Installing [jqmhutsm] CVE-2021-3347: Privilege escalation <span class="hljs-keyword">in</span> the Fast Userspace Mutexes.
Installing [flm81vdd] CVE-2020-16120: Read permission bypass with overlay filesystem.
Installing [mxu6ucv9] CVE-2021-27363, CVE-2021-27364, CVE-2021-27365: Priviledge escalation <span class="hljs-keyword">in</span> iSCSI subsystem.
Installing [ezqm5dui] Known exploit detection <span class="hljs-keyword">for</span> CVE-2016-5195.
Installing [71me89jl] Known exploit detection <span class="hljs-keyword">for</span> CVE-2019-9213.
Installing [ktm7khfr] CVE-2021-28038: Mishandling of errors causes DoS of Xen backend.
Installing [jhckhjpw] Reduce allocation latency <span class="hljs-keyword">in</span> Infiniband driver.
Installing [ibyh7gbw] CVE-2020-27170, CVE-2020-27171: Information disclosure <span class="hljs-keyword">in</span> BPF verifier.
Installing [j1fc3g2n] CVE-2021-29605: Denial-of-Service <span class="hljs-keyword">in</span> netfilter subsystem.
Installing [qq5lrnft] Denial-of-service <span class="hljs-keyword">in</span> the OCFS2 filesystem when setting file attributes
Installing [evpvzwgz] CVE-2021-28688, XSA-371: Xen Hypervisor persistant grant leakage.
Installing [226k0cjc] CVE-2021-28971: Denial-of-Service <span class="hljs-keyword">in</span> Intel PEBS performance monitoring.
Installing [hu2zpwc7] CVE-2021-28964: Race condition <span class="hljs-keyword">in</span> btrfs filesystem.
Installing [rg1g0t6f] CVE-2021-3428: Denial-of-Service <span class="hljs-keyword">in</span> ext4 subsystem.
Installing [jcfl6cfs] CVE-2021-29154: Code execution <span class="hljs-keyword">in</span> eBPF JIT compiler.
Your kernel is fully up to date.
Effective kernel version is 4.14.35-2047.503.1.el7uek
  Verifying  : uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64-20210512-0.noarch                                                                                                                    1/1 

Installed:
  uptrack-updates-4.14.35-1902.303.5.3.el7uek.x86_64.noarch 0:20210512-0    
Verificando correções aplicadas:

[root@dbm0db02 ~]<span class="hljs-comment"># uptrack-show</span>
Installed updates:
[bipgvpw6] Known exploit detection.
[lylzl1sj] Known exploit detection <span class="hljs-keyword">for</span> CVE-2017-7308.
[snvyltlq] Known exploit detection <span class="hljs-keyword">for</span> CVE-2018-14634.
[e2hf1ats] KPTI enablement <span class="hljs-keyword">for</span> Ksplice.
[1teh5owg] Known exploit detection <span class="hljs-keyword">for</span> CVE-2018-18445.
[44121bvv] Double free with SCSI LSI MPT Fusion SAS attach error.
[trh9jthq] CVE-2019-3846: Heap overflow when parsing BSS descriptor <span class="hljs-keyword">in</span> Marvell WiFi-Ex driver.
[3cqjhtx3] CVE-2019-19054: Denial-of-service <span class="hljs-keyword">in</span> the cx2388x tv card driver.
[7q5nae2r] CVE-2019-15214: Use-after-free when connecting ALSA cards.
[ff6vfhdf] CVE-2019-19536: Information leak when initializing PCAN-USB device.
[ixsnbim2] CVE-2019-7308: Out-of-bounds speculation <span class="hljs-keyword">in</span> BPF verifier.
[2lm6v1an] CVE-2020-12770: Information leak/DoS <span class="hljs-keyword">in</span> SCSI generic userspace write.
[67w4v90f] CVE-2020-12464: Use-after-free <span class="hljs-keyword">in</span> USB scatter-gather library.
[4tnet5w5] CVE-2019-19534: Information leak using PEAK PCAN-USB/USB Pro interfaces <span class="hljs-keyword">for</span> CAN 2.0b/CAN-FD.
[9teqocf3] CVE-2020-12653: Denial-of-service when scanning <span class="hljs-keyword">for</span> APs <span class="hljs-keyword">in</span> mwifiex driver.
[qdojji7h] CVE-2019-3846: Heap overflow when parsing fields <span class="hljs-keyword">in</span> Marvell WiFi-Ex driver.
[mcajph0v] CVE-2020-12654: Denial-of-service when querying WMM status <span class="hljs-keyword">in</span> mwifiex driver.
[3u8vegty] CVE-2020-10757: Flaw <span class="hljs-keyword">in</span> DAX page mapping allows privilege escalation.
[nlf0zswi] CVE-2020-10711: NULL pointer dereference when using CIPSO network packet labeling.
[ptsm3729] CVE-2019-19533: Information leak <span class="hljs-keyword">in</span> Technotrend/Hauppauge USB DEC driver.
[5pv0zta2] CVE-2020-12655: Denial-of-service when syncing data on XFS filesystem.
[aadmn3e5] Use-after-free when freeing received data over RDS socket.
[c7221zqe] Buffer overflow when dumping registers <span class="hljs-keyword">in</span> LSI Logic MegaRAID SAS RAID driver.
[9elx8r6h] CVE-2020-12652: Denial-of-service <span class="hljs-keyword">in</span> the Fusion MTP driver.
[hwmxykva] Poor NFS performances caused by excessive attribute revalidation.
[tgthi987] Denial-of-service when freezing and unfreezing an XFS filesystem.
[cya3ogzy] Improved fix <span class="hljs-keyword">for</span> CVE-2020-2732 when booting nested guests.
[e966zc48] Denial-of-service <span class="hljs-keyword">in</span> the Infiniband driver when referencing a node.
[cvdwwuzd] Use-after-free <span class="hljs-keyword">in</span> the Infiniband driver when releasing resources.
[kjk2vpux] Race condition when sending IB subnet MAD causes denial-of-service.
[hiaoskn9] CVE-2020-10766: Information leak using Spectre V4 variant.
[t439t60g] NULL-pointer dereference when shutting down DSA switch.
[t4avel7c] CVE-2019-19447: Use-after-free when unmounting corrupt ext4 filesystem.
[r4pnegf6] CVE-2020-10732: Information leak <span class="hljs-keyword">in</span> corefiles <span class="hljs-keyword">in</span> per-thread info.
[e9o5is2i] CVE-2019-19062: Denial-of-service <span class="hljs-keyword">in</span> the crypto subsystem.
[q7lx9ooy] CVE-2019-16234: NULL pointer dereference when registering Intel Wireless WiFi driver.
[d1l1wlz8] Use-after-free when releasing clocks <span class="hljs-keyword">in</span> PTP clock driver.
[3adwuqzu] CVE-2019-19037: Denial-of-service when handling empty directories <span class="hljs-keyword">in</span> ext4 filesystem.
[mx9ibtwj] CVE-2019-16232: NULL pointer dereference when registering Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards.
[jm6yd4li] Memory corruption during cgroup destruction with PSI enabled.
[bb0tzpz2] Kernel crash <span class="hljs-keyword">in</span> guest VM with machine check exception.
[clivbxob] CVE-2019-20811: Denial-of-service <span class="hljs-keyword">in</span> network device sysfs system.
[tsh471fw] Add bit <span class="hljs-keyword">for</span> guest kernel to handle kernel panic without host intervention.
[mqhc4bmw] Don<span class="hljs-string">'t return an ACK on some RDMA netlink operations.
[4ixr7sgq] CVE-2018-20169: Missing bound check when reading extra USB descriptors.
[3nkinjqi] CVE-2018-1000026: Denial-of-service when receiving invalid packet on bnx2x network card.
[5f5w0oz6] CVE-2018-18281: Information leak in mremap syscall.
[1a5n75aj] CVE-2019-19063: Denial-of-service in the rtlwifi driver.
[19lbejmu] CVE-2019-0136: Denial-of-service in Intel(R) wifi driver.
[1y4ivn6l] CVE-2018-20976: Use-after-free when mounting XFS filesystem.
[dhmgixyw] CVE-2015-2150: Denial-of-service in Xen host from the guest.
[jurvatrf] CVE-2019-19523: Use-after-free when disconnecting ADU USB devices.
[3tcll1ov] CVE-2018-16882: Privilege escalation in nested Intel KVM interrupts.
[od6vms9i] CVE-2019-19052: Memory leak when opening USB Socket CAN device driver.
[byd1fjvz] CVE-2019-15927: Out-of-bounds accesses in usb audio driver.
[rtg2jjko] CVE-2019-9506: Information disclosure when transmitting over bluetooth.
[hgb8rgcc] CVE-2019-5108: Denial-of-service of a wireless access point during roaming of a station.
[okxy9ag9] CVE-2020-10751: SELinux bypass in netlink message validation.
[l8qz0cf1] CVE-2019-15918: Out-of-bounds access during CIFS mount.
[fhoaweza] CVE-2019-2024: Use-after-free when disconnecting a Empia EM28xx USB device.
[gphk4k5r] CVE-2020-13974: Integer overflow in virtual terminal keyboard interface.
[iivjues9] CVE-2019-19528: Denial-of-service when disconnecting IO Warrior USB device.
[11uqhn6c] CVE-2020-12114: Race condition in mountpoint counter causes DoS.
[b9b9f3kf] CVE-2019-19807: Use-after-free when registering timer in ALSA driver.
[hgpl3vss] CVE-2019-15218: Denial-of-service in Siano Mobile Digital TV USB tuner probing.
[109qn2xz] CVE-2019-19530: Denial-of-service in USB CDC-ACM probing.
[bhcvif0m] CVE-2020-11565: Out-of-bounds access when mounting tmpfs.
[mveq6q0v] CVE-2019-2101: Information leak when initializing a usb video device.
[96jk0uhc] CVE-2019-15117: Out-of-bounds access when parsing USB descriptor in ALSA USB driver.
[ajidrtfz] Improved fix for CVE-2018-17972: Information leak in /proc kernel stack dumps.
[uzg2h1sb] CVE-2019-19066: Denial-of-service int SCSI bfa driver.
[5d8o75u5] CVE-2019-15118: Stack overflow when checking input source type in ALSA USB driver.
[kj8qwnw5] CVE-2019-19051: Memory leak when changing power status of Intel Wireless WiMAX Connection 2400 driver.
[dldi73w2] CVE-2018-1129: Signature check bypass of cephx message.
[6g7nqusv] CVE-2019-3900: Infinite loop in vhost_net driver under heavy load.
[fp67ub1v] CVE-2020-1749: Information disclosure in IPv6 IPSec tunneling.
[jqobfvky] CVE-2019-11487: Invalid memory access when overflowing pages refcount.
[o3vwjkah] CVE-2019-18805: Denial-of-service in IPv4 round trip time configuration.
[r6xwmr9a] CVE-2019-19535, CVE-2019-19536: Information leak when initializing PCAN-USB device.
[eirwnk56] CVE-2017-18552: Memory corruption in the RDS protocol.
[8yot03uh] CVE-2019-15921: Denial-of-service in generic netlink socket family.
[2thbpnu3] CVE-2019-20812: Soft lockup in packet sockets with zero timeout.
[7c33rkhk] CVE-2019-9458: Use-after-free in V4L2 event subscription.
[4grifv3a] CVE-2019-9455: Information leak in V4L2 when setting output buffer size.
[fb5eodub] CVE-2019-19073, CVE-2019-19074: Denial-of-service in the ath9k wireless driver.
[samo6fmn] CVE-2020-10720: Use-after-free in generic receive offload fragmentation.
[ah33pp3h] CVE-2020-0305: Use-after-free when failing to open file on character device.
[gm7wtw1w] CVE-2020-12771: Deadlock during BCache node coalesce failure.
[ap0dbd8r] CVE-2019-15902: Bounds-check bypass in sys_ptrace().
[32yey8b2] CVE-2019-10220: Privileges escalation when parsing directory from a bad SMB server.
[t36cih2j] CVE-2020-8992: Deadlock with too big journal size on ext4 filesystem.
[l16s2z79] CVE-2020-10769: Out-of-bounds memory access in authenticated encryption key parsing.
[h2zoj70m] CVE-2014-9900: Information disclosure in Wake-On-LAN driver.
[jgoq29rm] Improved fix for CVE-2019-19768: Use-after-free when reporting an IO trace.
[baczzgxp] CVE-2019-19642: Denial-of-service in kernel relay file open path.
[rb014za7] Incorrect reporting of Process Address Space ID on AMD systems.
[9npfv9rb] Connection failure after RDS peer reboot.
[b5lxrr63] CVE-2020-24394: Information leak when exporting a filesystem over NFS.
[grdlpgdc] CVE-2019-17075: Denial-of-service in Chelsio T4/T5 RDMA TPT entries.
[scfnppae] CVE-2019-16746: Buffer overflow when receiving beacon over wireless network.
[s30q18pv] CVE-2020-14331: Out-of-bounds writes in ioctls of Console display driver.
[gljcytwa] CVE-2020-16166: Confidentiality vulnerability in the generation of the device ID.
[bz7pfng5] CVE-2019-3874: Denial-of-service by consuming a large amount of memory using SCTP socket.
[kkm3c4kt] CVE-2020-10781: Denial-of-service using Zram hot_add file sysfs entry.
[6mcud0xp] CVE-2019-17133: Denial-of-service in WiFI SIOCGIWESSID ioctl().
[6gp9cs5a] CVE-2018-14613: Multiple denial-of-services in the btrfs when mounting crafted images.
[b872hl5n] CVE-2019-14898: Denial-of-service when writing to file-max sysctl.
[q4ua18de] Channel recovery on transmition timeout in the Mellanox MLX5E driver.
[hu41z827] CVE-2019-18885: Denial-of-service in BTRFS extent verification.
[l3qgca72] CVE-2020-10767: Information leak using Spectre V2 attack due to IBPB being disabled.
[hzi9zld7] Denial-of-service when changing a paging attribute to non cachable.
[sygd7ev6] CVE-2020-25212: Out-of-bounds writes in RPC operations of Network File System.
[hgwk3m10] CVE-2018-20669: Privilege escalation in ioctl of i915 driver.
[qhqi45un] CVE-2020-14386: Memory corruption when receiving a packet.
[h4n2u6me] CVE-2020-25284: Permission bypass when creating or removing a Rados block device.
[fih2hrl8] CVE-2020-25285: Denial-of-service when concurrently updating huge page sysctl parameters.
[3cogmz8j] CVE-2020-14314: Out-of-bounds memory read when splitting a directory block in the Ext4 filesystem.
[ig7kio2w] Use-after-free in the Oracle ASM driver when handling a query operation.
[7oirdwih] Re-factor memory cgroup statistic calculation.
[at9agcxc] Disable infiniband completion queue time stamping.
[eto8igfv] CVE-2019-19448: Use-after-free in Btrfs filesystem with a crafted btrfs filesystem image.
[rtplzq9k] CVE-2020-25641: Denial-of-service in biovec when zero-length biovec is issued.
[tqhmm9xx] CVE-2020-25643: Memory corruption in WAN HDLC-PPP due to missing error checking.
[stv272u2] CVE-2019-16089: Denial-of-service while checking NBD netlink status.
[dqw87z0a] CVE-2020-25211: Denial-of-service in Netfilter due to out-of-bounds memory access.
[fu9299l2] CVE-2020-14385: Denial of service in XFS filesystem.
[bua1sg0m] CVE-2019-19377: Use-after-free when unmounting a BTRFS image.
[oxfogcv8] CVE-2020-14356: NULL-pointer dereference in cgroupv2.
[l9d34kbr] CVE-2020-14390: Memory corruption when resizing the framebuffer.
[l6yeduhy] Race condition during iommu shutdown during a kernel panic.
[b2sygna8] CVE-2020-25645: Possible information leak between encrypted geneve endpoints.
[9pbc8q7r] CVE-2020-8694: Platypus Attack Mitigation.
[edt48ylb] Add ftrace safety guard for existing Ksplice updates.
[fecvmf3c] Clean up ftrace safety guard for existing Ksplice updates.
[n8ho14r0] Canceled RDS operations may still be executed.
[qzcfgssm] Use-after-free due to incorrect RDS operation status.
[i9zgalwk] Memory corruption when processing RDS extension headers.
[8w3s90uz] Avoid page fault when updating the AMD IOMMU interrupt table.
[f5nnackz] CPU resource exhaustion when shrinking hash tables.
[4w115e3d] CVE-2020-12352: Information leak when handling AMP packets in Bluetooth stack.
[8927melz] Guest VM leaks bits into host control register, causing host to panic.
[pc7kfj5f] CVE-2019-19816: Invalid memory accesses during btrfs filesystem sync.
[gof9iub0] CVE-2020-25656: Use-after-free in console subsystem.
[nvdwvczo] CVE-2020-25668: Race condition when sending ioctls to a virtual terminal.
[iqua3ysi] CVE-2020-25704: Denial-of-service in the performance monitoring subsystem.
[518x0407] CVE-2020-28974: Invalid memory access when manipulating framebuffer fonts.
[om575fk9] CVE-2020-28374: Access control bypass when reading or writing TCM devices.
[anxgy28r] CVE-2018-20784: Denial-of-service in task scheduling.
[smtq0o16] CVE-2020-25705: ICMP rate-limiter can indirectly leak UDP port information.
[gxgp7md3] CVE-2020-28915: Information leak due to out-of-bounds read in Framebuffer Console.
[1ayz8ukr] CVE-2020-14351: Privilege escalation in perf subsystem due to use-after-free.
[jw5a37tf] CVE-2020-29569: Use-after-free when disconnecting Xen block devices.
[e1qgj5oi] Invalid bonding state with some network interfaces.
[4d68bkuy] Memory corruption in RDMA IO buffers.
[sxbva55v] Recover from memory pressure in the network layer.
[2hog7v7x] Flush the ARP cache when an RDMA interface changes its hardware address.
[tqysap9f] Avoid unneeded BUG_ON when closing RDS connections.
[9014r0f1] CVE-2020-15436: Use-after-free in blk device locks allows privilege escalation.
[5nnh5ltk] Buffer overflow when parsing some /proc/sys entries.
[7bfftrhd] CVE-2020-36158: Buffer overflow when creating an ad-hoc network.
[ddty3naj] Restrict NLM interval based host rebinding to UDP.
[deyfa0l1] CVE-2020-29660: Use-after-free in tty subsystem.
[hmbv5wjj] Possible missing files when iterating NFSv4 directories.
[2inwipov] CVE-2019-19947: Information leak in CAN Kvaser memory allocations.
[iahmns7p] CVE-2020-10768: Information leak using Spectre V2 gadgets due to incorrect prctl configuration.
[67ds1ur7] CVE-2020-24490: Privilege escalation in Bluetooth subsystem due to heap buffer overflow.
[h7cc0lf4] CVE-2019-18808: Memory leak in CCP device driver with invalid hash type.
[dp49y68f] CVE-2020-12351: Denial-of-service in L2CAP bluetooth driver.
[6vd15fp9] CVE-2021-26931, XSA-362: Mishandling of errors causes DoS of Xen backend.
[mbihi3b6] CVE-2021-26930, XSA-365: Bad error handing of blkback grant references.
[juvadtfe] CVE-2021-26932, XSA-361: Denial-of-host-service by malicious Xen frontend.
[s2yrku37] CVE-2019-19770: use-after-free in the debugfs from blktrace.
[cz2s2q2d] Improved update to CVE-2020-28915: Information leak due to out-of-bounds read in Framebuffer Console.
[bt9gct3d] Use-after-free in the networking TAP driver when handling a frame.
[bk6uwd1c] Migration failure in the Infiniband driver when an interface comes up after initialization.
[3r5qfqjf] Unecessary delays when allocation a virtual host SCSI device.
[oe1kvz5a] Avoid delaying the processing of completions in the infiniband driver.
[egsy21yt] Possible race condition whilst disconnecting SUNRPC connections.
[4za2h4oi] Avoid excessive memory usage from the infiniband driver.
[3pg4dv4d] High CPU utilization caused by lock contention in the zone page allocator.
[8f5avd0t] Possible kernel panic during IMPI reboot.
[45wwoufj] CVE-2021-3348: Use-after-free due to bad locking in Network block device.
[jqmhutsm] CVE-2021-3347: Privilege escalation in the Fast Userspace Mutexes.
[flm81vdd] CVE-2020-16120: Read permission bypass with overlay filesystem.
[mxu6ucv9] CVE-2021-27363, CVE-2021-27364, CVE-2021-27365: Priviledge escalation in iSCSI subsystem.
[pc4efmwh] CVE-2020-27675: Race condition when reconfiguring para-virtualized Xen devices.
[ezqm5dui] Known exploit detection for CVE-2016-5195.
[71me89jl] Known exploit detection for CVE-2019-9213.
[ktm7khfr] CVE-2021-28038: Mishandling of errors causes DoS of Xen backend.
[jhckhjpw] Reduce allocation latency in Infiniband driver.
[ibyh7gbw] CVE-2020-27170, CVE-2020-27171: Information disclosure in BPF verifier.
[j1fc3g2n] CVE-2021-29605: Denial-of-Service in netfilter subsystem.
[qq5lrnft] Denial-of-service in the OCFS2 filesystem when setting file attributes
[evpvzwgz] CVE-2021-28688, XSA-371: Xen Hypervisor persistant grant leakage.
[226k0cjc] CVE-2021-28971: Denial-of-Service in Intel PEBS performance monitoring.
[hu2zpwc7] CVE-2021-28964: Race condition in btrfs filesystem.
[rg1g0t6f] CVE-2021-3428: Denial-of-Service in ext4 subsystem.
[jcfl6cfs] CVE-2021-29154: Code execution in eBPF JIT compiler.

Effective kernel version is 4.14.35-2047.503.1.el7uek
[root@dbm0db02 ~]# uptrack-show --available
Available updates:
None</span>
</code></pre>
<p>Sempre consulte a nota 2207063.1 antes de iniciar o processo acima descrito, algo pode mudar com o lançamento de novas versões.</p>
<p>Espero que aproveitem :)</p>
]]></content:encoded></item><item><title><![CDATA[Migrando VM'S do ODA/OVM para ODA/KVM]]></title><description><![CDATA[No post anterior aqui, abordamos sobre como configurar e gerenciar o KVM nas novas versões do ODA.
Agora, vamos falar um pouco sobre a migração de maquinas virtuais.
Como todos já sabem, a outra plataforma conhecida como “OVM” é baseada no Hypervisor...]]></description><link>https://diogofernandes.com.br/migrando-vms-do-odaovm-para-odakvm</link><guid isPermaLink="true">https://diogofernandes.com.br/migrando-vms-do-odaovm-para-odakvm</guid><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sat, 28 Dec 2024 23:09:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735427304359/a55a6dcf-c147-43f5-a4b3-ea85bc9f7bad.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>No post anterior aqui, abordamos sobre como configurar e gerenciar o KVM nas novas versões do ODA.</p>
<p>Agora, vamos falar um pouco sobre a migração de maquinas virtuais.</p>
<p>Como todos já sabem, a outra plataforma conhecida como “OVM” é baseada no Hypervisor XEN. E a grande pergunta que fica é … Como migrar as maquinas virtuais do “OVM” para o “KVM” ?</p>
<p>É isso meus amigos que vamos abordar neste artigo.</p>
<p>De forma bem simplificada e direta vamos aos detalhes da maquina virtual que vamos migrar do OVM para o KVM.</p>
<pre><code class="lang-bash">[root@odax5node1 ~]<span class="hljs-comment"># oakcli show vm MVPEP-SML-TRN</span>
The Resource is : MVPEP-SML-TRN
        AutoStart       :       restore        
        CPUPriority     :       100            
        Disks           :       |file:/OVS/Repositories/repo1/.ACFS
                                /snaps/MVPEP-SML-TRN/VirtualMachine
                                s/MVPEP-SML-TRN/7396bcf1382c42b1bf4
                                31ece9bcc23ee.img,xvda,w||,xvdb:/OV
                                S/Repositories/repo1/.ACFS/snaps/MV
                                PEP-SML-TRN/VirtualMachines/MVPEP-S
                                ML-TRN/cdrom,r|
        Domain          :       XEN_PVM        
        DriverDomain    :       False          
        ExpectedState   :       online        
        FailOver        :       <span class="hljs-literal">true</span>           
        IsSharedRepo    :       <span class="hljs-literal">true</span>           
        Keyboard        :       en-us          
        MaxMemory       :       32768M         
        MaxVcpu         :       24             
        Memory          :       32768M         
        Mouse           :       OS_DEFAULT     
        Name            :       MVPEP-SML-TRN  
        Networks        :       |bridge=net1|  
        NodeNumStart    :       1              
        OS              :       OL_5           
        PrefNodeNum     :       1              
        PrivateIP       :       None           
        ProcessorCap    :       0              
        RepoName        :       repo1          
        State           :       Online         
        TemplateName    :       otml_oraclelinux610
        VDisks          :       |oakvdk_disk120_mvpep-sml-trn_repo1
                                |              
        Vcpu            :       24             
        cpupool         :       default-unpinned-pool
        vncport         :       5901           

[root@odax5node1 ~]<span class="hljs-comment"># oakcli show vdisk disk120_mvpep-sml-trn -repo repo1</span>
The Resource is : disk120_mvpep-sml-trn_repo1
        Name            :       disk120_mvpep-sml-trn_repo1
        RepoName        :       repo1          
        Size            :       120G           
        Type            :       shared         
        VmAttached      :       1
</code></pre>
<p>A parte que nos interessa é literalmente esta:</p>
<p>Disco de Boot /OVS/Repositories/repo1/.ACFS/snaps/MVPEP-SML-TRN/VirtualMachines/MVPEP-SML-TRN/7396bcf1382c42b1bf431ece9bcc23ee.img Disco Secundario anexado /OVS/Repositories/repo1/.ACFS/snaps/oakvdk_disk120_mvpep-sml-trn/VirtualDisks/oakvdk_disk120_mvpep-sml-trn</p>
<pre><code class="lang-bash">[root@odax5node1 MVPEP-SML-TRN]<span class="hljs-comment"># oakcli show repo repo1 -node 0</span>
The Resource is : repo1_0
        AutoStart       :       restore        
        DG              :       DATA           
        Device          :       /dev/asm/repo1-341
        ExpectedState   :       Online         
        FreeSpace       :       236025.2M      
        MountPoint      :       /u01/app/sharedrepo/repo1
        Name            :       repo1_0        
        PFreeSpace      :       28.81%         
        RepoType        :       shared         
        Size            :       819200.0M      
        State           :       Online         
        Version         :       2
</code></pre>
<p>Até aqui tudo certo, temos todas as informações da VM.</p>
<p>Agora vamos para parte de “backup”</p>
<pre><code class="lang-bash">[root@odax5node1 MVPEP-SML-TRN]<span class="hljs-comment"># oakcli stop vm MVPEP-SML-TRN</span>
</code></pre>
<p>Maquina parada vamos copiar discos.</p>
<pre><code class="lang-bash">[root@odax5node1 MVPEP-SML-TRN]<span class="hljs-comment"># cd /u01/app/sharedrepo/repo1</span>

[root@odax5node1 repo1]<span class="hljs-comment"># cp .ACFS/snaps/MVPEP-SML-TRN/VirtualMachines/MVPEP-SML-TRN/7396bcf1382c42b1bf431ece9bcc23ee.img /backup/</span>
[root@odax5node1 repo1]<span class="hljs-comment"># cp .ACFS/snaps/oakvdk_disk120_mvpep-sml-trn/VirtualDisks/oakvdk_disk120_mvpep-sml-trn /backup/</span>
</code></pre>
<p>Copia finalizada, vamos sair do X5 “OVM” e vamos para o X8 KVM. OBS: Não copie nenhum arquivo para o VMSTORAGE/REPOSITORIO, neste local apenas arquivos das VM'S.</p>
<pre><code class="lang-bash">[root@odax8godata ovmstorage]<span class="hljs-comment"># cd /backup</span>

[root@odax8godata backup]<span class="hljs-comment"># ll -rths</span>
total 241G
121G -rw------- 1 root root 120G Feb 12 13:08 7396bcf1382c42b1bf431ece9bcc23ee.img
121G -rw-r--r-- 1 root root 120G Feb 12 13:56 oakvdk_disk120_mvpep-sml-trn
 64K drwx------ 2 root root  64K Feb 18 00:56 lost+found
 52K drwxr-xr-x 4 root root  20K Feb 18 19:24 old

[root@odax8godata backup]<span class="hljs-comment"># qemu-img info 7396bcf1382c42b1bf431ece9bcc23ee.img</span>
image: 7396bcf1382c42b1bf431ece9bcc23ee.img
file format: raw
virtual size: 120G (128849018880 bytes)
disk size: 120G

[root@odax8godata backup]<span class="hljs-comment"># qemu-img info oakvdk_disk120_mvpep-sml-trn</span>
image: oakvdk_disk120_mvpep-sml-trn
file format: raw
virtual size: 120G (128849018880 bytes)
disk size: 120G
</code></pre>
<p>Agora vamos renomear os discos para ficar mais fácil a compreensão.</p>
<pre><code class="lang-bash">[root@odax8godata backup]<span class="hljs-comment"># mv 7396bcf1382c42b1bf431ece9bcc23ee.img DISCO_DE_BOOT.ovm</span>
[root@odax8godata backup]<span class="hljs-comment"># mv oakvdk_disk120_mvpep-sml-trn DISCO_SECUNDARIO.ovm</span>
[root@odax8godata backup]<span class="hljs-comment"># ll -rths</span>
total 241G
121G -rw------- 1 root root 120G Feb 12 13:08 DISCO_DE_BOOT.ovm
121G -rw-r--r-- 1 root root 120G Feb 12 13:56 DISCO_SECUNDARIO.ovm
 64K drwx------ 2 root root  64K Feb 18 00:56 lost+found
 52K drwxr-xr-x 4 root root  20K Feb 18 19:24 old




[root@odax8godata backup]<span class="hljs-comment"># qemu-img info DISCO_DE_BOOT.ovm</span>
image: DISCO_DE_BOOT.ovm
file format: raw
virtual size: 120G (128849018880 bytes)
disk size: 120G

[root@odax8godata backup]<span class="hljs-comment"># qemu-img info DISCO_SECUNDARIO.ovm</span>
image: DISCO_SECUNDARIO.ovm
file format: raw
virtual size: 120G (128849018880 bytes)
disk size: 120G
</code></pre>
<p>Pronto, temos algumas informações relevantes sobre os discos, agora vamos iniciar a conversão do disco de OVM/XEN para KVM.</p>
<p>Antes de iniciar, precisamos saber pra qual tipo de disco vamos converter e quais são as propriedades do mesmo, para saber isso peguei informações de um disco já existente que foi criando de forma nativa pelo ODACLI.</p>
<pre><code class="lang-bash">[root@odax8godata vm_MACHINE19C]<span class="hljs-comment">#  qemu-img info MACHINE19C</span>
image: MACHINE19C
file format: qcow2
virtual size: 200G (214748364800 bytes)
disk size: 16G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: <span class="hljs-literal">true</span>
    refcount bits: 16
    corrupt: <span class="hljs-literal">false</span>

[root@odax8godata vdisk_VDISK1]<span class="hljs-comment"># qemu-img info VDISK1</span>
image: VDISK1
file format: raw
virtual size: 300G (322122547200 bytes)
disk size: 300G
</code></pre>
<p>Aqui identificamos que não precisaremos converter o disco secundario ou seja o VDISK, vamos precisar converter apenas o disco de boot.</p>
<p>Tendo em mãos todas as informações necessarias vamos iniciar a conversão dos discos (OBS: NUNCA FAÇA ISSO DIRETAMENTE COM O DISCO DA MAQUINA VIRTUAL DO OVM/XEN, SEMPRE EXECUTE ISSO COM UM BACKUP DO DISCO/VM).</p>
<pre><code class="lang-bash">[root@odax8godata backup]<span class="hljs-comment"># qemu-img convert -p -f raw -O qcow2 -o lazy_refcounts=on DISCO_DE_BOOT.ovm DISCO_DE_BOOT.qcow2</span>
    (100.00/100%)

[root@odax8godata backup]<span class="hljs-comment"># ll -rths</span>
total 355G

121G -rw------- 1 root root 120G Feb 12 13:08 DISCO_DE_BOOT.ovm
121G -rw-r–r-- 1 root root 120G Feb 12 13:56 DISCO_SECUNDARIO.ovm
64K drwx------ 2 root root  64K Feb 18 00:56 lost+found
52K drwxr-xr-x 4 root root  20K Feb 18 19:24 old
112G -rw-r–r-- 1 root root 112G Feb 18 19:43 DISCO_DE_BOOT.qcow2
</code></pre>
<pre><code class="lang-bash">[root@odax8godata backup]<span class="hljs-comment"># qemu-img info DISCO_DE_BOOT.qcow2</span>
image: DISCO_DE_BOOT.qcow2
file format: qcow2
virtual size: 120G (128849018880 bytes)
disk size: 112G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: <span class="hljs-literal">true</span>
    refcount bits: 16
    corrupt: <span class="hljs-literal">false</span>
</code></pre>
<pre><code class="lang-bash">[root@odax8godata backup]<span class="hljs-comment"># qemu-img info DISCO_SECUNDARIO.ovm</span>
image: DISCO_SECUNDARIO.ovm
file format: raw
virtual size: 120G (128849018880 bytes)
disk size: 120G
</code></pre>
<p>Disco convertido vamos iniciar a criação da VM.</p>
<p>Primeiro vamos criar um vdisk de 120GB (O tamanho tem quer ser exatamente o mesmo do disco/OVM). Esse disco será substituído pelo “DISCO_SECUNDARIO.img”</p>
<pre><code class="lang-bash">[root@odax8godata vdisk_VDISK1]<span class="hljs-comment"># odacli create-vdisk -n DISCO_SECUNDARIO -sh -s 120G -vms OVMSTORAGE</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  db9330e0-a124-49f0-9ffd-5b92e868c8d5
            Description:  VM disk DISCO_SECUNDARIO creation
                 Status:  Created
                Created:  February 20, 2021 2:12:38 AM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------



[root@odax8godata ~]<span class="hljs-comment"># cd /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vdisk_DISCO_SECUNDARIO</span>
[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># ll -h</span>
total 120G
-rw-r--r-- 1 root root 120G Feb 20 02:15 DISCO_SECUNDARIO
</code></pre>
<pre><code class="lang-bash">[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli create-vm -n MVPEP-SML-TRN -cp POOL12CORES -vc 24 -m 32G -vms OVMSTORAGE -s 120G -vd DISCO_SECUNDARIO -vn VNET1 -src /u01/V1003434-01.iso</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  6d3e30a1-ac79-485c-b29f-00a9ddbbc22f
            Description:  VM MVPEP-SML-TRN creation
                 Status:  Created
                Created:  February 20, 2021 2:28:48 AM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
</code></pre>
<pre><code class="lang-bash">[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli list-vms</span>
Name                  VM Storage            Node             Current State    Target State     Created                  Updated                
--------------------  --------------------  ---------------  ---------------  ---------------  -----------------------  -----------------------
MVPEP-SML-TRN         OVMSTORAGE            odax8godata     ONLINE           ONLINE           2021-02-20 02:28:59 BRT  2021-02-20 02:28:59 BRT
</code></pre>
<pre><code class="lang-bash">[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli describe-vm -n MVPEP-SML-TRN</span>
VM details                                                                      
--------------------------------------------------------------------------------
                       ID:  f18f916b-19ae-4bfd-af33-f4a49f67f625
                     Name:  MVPEP-SML-TRN
                  Created:  2021-02-20 02:28:59 BRT
                  Updated:  2021-02-20 02:28:59 BRT
               VM Storage:  OVMSTORAGE
              Description:  NONE
                  VM size:  120.00 GB
                   Source:  V1003434-01.iso
                  OS Type:  NONE
               OS Variant:  NONE
        Graphics settings:  vnc,listen=0.0.0.0
             Display Port:  :0

 Status                   
--------------------------
             Current node:  odax8godata
            Current state:  ONLINE
             Target state:  ONLINE

 Parameters               
--------------------------
           Preferred node:  NONE
              Boot option:  NONE
               Auto start:  YES
                Fail over:  NO

                            Config                     Live                     
                            -------------------------  -------------------------
                   Memory:  32.00 GB                   32.00 GB                 
               Max Memory:  32.00 GB                   32.00 GB                 
               vCPU count:  24                         24                       
           Max vCPU count:  24                         24                       
                 CPU Pool:  POOL12CORES                POOL12CORES              
        Effective CPU <span class="hljs-built_in">set</span>:  16-27,48-59                16-27,48-59              
                    vCPUs:  0:16-27,48-59              0:16-27,48-59            
                            1:16-27,48-59              1:16-27,48-59            
                            2:16-27,48-59              2:16-27,48-59            
                            3:16-27,48-59              3:16-27,48-59            
                            4:16-27,48-59              4:16-27,48-59            
                            5:16-27,48-59              5:16-27,48-59            
                            6:16-27,48-59              6:16-27,48-59            
                            7:16-27,48-59              7:16-27,48-59            
                            8:16-27,48-59              8:16-27,48-59            
                            9:16-27,48-59              9:16-27,48-59            
                            10:16-27,48-59             10:16-27,48-59           
                            11:16-27,48-59             11:16-27,48-59           
                            12:16-27,48-59             12:16-27,48-59           
                            13:16-27,48-59             13:16-27,48-59           
                            14:16-27,48-59             14:16-27,48-59           
                            15:16-27,48-59             15:16-27,48-59           
                            16:16-27,48-59             16:16-27,48-59           
                            17:16-27,48-59             17:16-27,48-59           
                            18:16-27,48-59             18:16-27,48-59           
                            19:16-27,48-59             19:16-27,48-59           
                            20:16-27,48-59             20:16-27,48-59           
                            21:16-27,48-59             21:16-27,48-59           
                            22:16-27,48-59             22:16-27,48-59           
                            23:16-27,48-59             23:16-27,48-59           
                   vDisks:  DISCO_SECUNDARIO:vdb       DISCO_SECUNDARIO:vdb     
                vNetworks:  VNET1:52:54:00:68:26:a9    VNET1:52:54:00:68:26:a9
</code></pre>
<p>Maquina criada, vamos para-la, para substituir pelos disco convertido.</p>
<pre><code class="lang-bash">[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli stop-vm -n MVPEP-SML-TRN</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  e318afa6-9190-41e2-8167-d2f24a165928
            Description:  VM MVPEP-SML-TRN stop
                 Status:  Success
                Created:  February 20, 2021 2:30:58 AM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Validate dependency resources            February 20, 2021 2:30:58 AM BRT    February 20, 2021 2:30:58 AM BRT    Success   
Stop VM                                  February 20, 2021 2:30:58 AM BRT    February 20, 2021 2:31:03 AM BRT    Success
</code></pre>
<pre><code class="lang-bash">[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli list-vms </span>
Name                  VM Storage            Node             Current State    Target State     Created                  Updated                
--------------------  --------------------  ---------------  ---------------  ---------------  -----------------------  -----------------------
MVPEP-SML-TRN         OVMSTORAGE                             OFFLINE          OFFLINE          2021-02-20 02:28:59 BRT  2021-02-20 02:28:59 BRT
</code></pre>
<pre><code class="lang-bash">[root@odax8godata backup]<span class="hljs-comment"># cd /backup/</span>

[root@odax8godata backup]<span class="hljs-comment"># ll -h</span>
total 352G
-rw------- 1 root root 120G Feb 12 13:08 DISCO_DE_BOOT.ovm
-rw-r--r-- 1 root root 112G Feb 18 19:43 DISCO_DE_BOOT.qcow2
-rw-r--r-- 1 root root 120G Feb 19 10:44 DISCO_SECUNDARIO.ovm



[root@odax8godata backup]<span class="hljs-comment"># qemu-img info DISCO_DE_BOOT.qcow2</span>
image: DISCO_DE_BOOT.qcow2
file format: qcow2
virtual size: 120G (128849018880 bytes)
disk size: 112G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: <span class="hljs-literal">true</span>
    refcount bits: 16
    corrupt: <span class="hljs-literal">false</span>

[root@odax8godata backup]<span class="hljs-comment"># qemu-img info  DISCO_SECUNDARIO.ovm</span>
image: DISCO_SECUNDARIO.ovm
file format: raw
virtual size: 120G (128849018880 bytes)
disk size: 120G
</code></pre>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># cd /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vm_MVPEP-SML-TRN</span>
[root@odax8godata vm_MVPEP-SML-TRN]<span class="hljs-comment"># ll -h</span>
total 476M
-rw------- 1 root root 121G Feb 20 02:28 MVPEP-SML-TRN
-rw-r--r-- 1 root root 4.3K Feb 20 02:28 MVPEP-SML-TRN_live.xml
-rw-r--r-- 1 root root 3.7K Feb 20 02:28 MVPEP-SML-TRN.xml

[root@odax8godata ~]<span class="hljs-comment"># cd /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vdisk_DISCO_SECUNDARIO</span>
[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># ll -h</span>
total 120G
-rw-r--r-- 1 qemu qemu 120G Feb 20 02:15 DISCO_SECUNDARIO
</code></pre>
<p>Agora vamos substituir os seguintes arquivos…</p>
<p>MVPEP-SML-TRN —&gt;&gt;&gt; DISCO_DE_BOOT.qcow2 DISCO_SECUNDARIO —&gt;&gt;&gt; DISCO_SECUNDARIO.ovm</p>
<pre><code class="lang-bash">[root@odax8godata discos_antes_migracao]<span class="hljs-comment"># cd  /backup/</span>
[root@odax8godata backup]<span class="hljs-comment"># mkdir discos_antes_migracao</span>

[root@odax8godata backup]<span class="hljs-comment"># mv /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vm_MVPEP-SML-TRN/MVPEP-SML-TRN /backup/discos_antes_migracao/</span>
[root@odax8godata backup]<span class="hljs-comment"># mv /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vdisk_DISCO_SECUNDARIO/DISCO_SECUNDARIO /backup/discos_antes_migracao/</span>
[root@odax8godata backup]<span class="hljs-comment"># ll -h /backup/discos_antes_migracao/</span>
total 121G
-rw-r--r-- 1 qemu qemu 120G Feb 20 02:15 DISCO_SECUNDARIO
-rw------- 1 root root 121G Feb 20 02:28 MVPEP-SML-TRN
</code></pre>
<p>Discos "padrões" movidos, agora vamos colocar no devido lugar o disco de boot convertido e o disco secundário/vdisk que veio do ODA X5/OVM.</p>
<pre><code class="lang-bash">root@odax8godata backup]<span class="hljs-comment"># cd /backup/</span>
[root@odax8godata backup]<span class="hljs-comment"># ll -h</span>
total 352G
-rw-r--r-- 1 root root 112G Feb 18 19:43 DISCO_DE_BOOT.qcow2
-rw-r--r-- 1 root root 120G Feb 19 10:44 DISCO_SECUNDARIO.ovm

[root@odax8godata backup]<span class="hljs-comment"># cp DISCO_DE_BOOT.qcow2 /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vm_MVPEP-SML-TRN/MVPEP-SML-TRN</span>
[root@odax8godata backup]<span class="hljs-comment"># cp DISCO_SECUNDARIO.ovm /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vdisk_DISCO_SECUNDARIO/DISCO_SECUNDARIO</span>
[root@odax8godata backup]<span class="hljs-comment"># ll -h /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vm_MVPEP-SML-TRN/</span>
total 112G
-rw-r--r-- 1 root root 112G Feb 20 02:52 MVPEP-SML-TRN
-rw-r--r-- 1 root root 4.3K Feb 20 02:28 MVPEP-SML-TRN_live.xml
-rw-r--r-- 1 root root 3.7K Feb 20 02:28 MVPEP-SML-TRN.xml

[root@odax8godata backup]<span class="hljs-comment"># ll -h /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vdisk_DISCO_SECUNDARIO/</span>
total 121G
-rw-r--r-- 1 root root 120G Feb 20 02:56 DISCO_SECUNDARIO

[root@odax8godata ~]<span class="hljs-comment"># cd /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vm_MVPEP-SML-TRN/</span>

[root@odax8godata vm_MVPEP-SML-TRN]<span class="hljs-comment"># ll -rths</span>
total 112G
4.0K -rw-r--r-- 1 root root 3.7K Feb 20 02:28 MVPEP-SML-TRN.xml
 12K -rw-r--r-- 1 root root 4.3K Feb 20 02:28 MVPEP-SML-TRN_live.xml
112G -rw-r--r-- 1 root root 112G Feb 20 02:52 MVPEP-SML-TRN

[root@odax8godata vm_MVPEP-SML-TRN]<span class="hljs-comment"># chmod 600 MVPEP-SML-TRN</span>

[root@odax8godata vm_MVPEP-SML-TRN]<span class="hljs-comment"># ll -rths</span>
total 112G
4.0K -rw-r--r-- 1 root root 3.7K Feb 20 02:28 MVPEP-SML-TRN.xml
 12K -rw-r--r-- 1 root root 4.3K Feb 20 02:28 MVPEP-SML-TRN_live.xml
112G -rw------- 1 root root 112G Feb 20 02:52 MVPEP-SML-TRN

[root@odax8godata ~]<span class="hljs-comment"># cd /u05/app/sharedrepo/ovmstorage/.ACFS/snaps/vdisk_DISCO_SECUNDARIO/</span>

[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># ll -rths</span>
total 121G
121G -rw-r--r-- 1 root root 120G Feb 20 02:56 DISCO_SECUNDARIO

[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># chown qemu:qemu DISCO_SECUNDARIO</span>

[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># ll -rths</span>
total 121G
121G -rw-r--r-- 1 qemu qemu 120G Feb 20 02:56 DISCO_SECUNDARIO
</code></pre>
<p>Discos devidamente substituídos, vamos iniciar a VM.</p>
<pre><code class="lang-bash">[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli list-vms</span>
Name                  VM Storage            Node             Current State    Target State     Created                  Updated                
--------------------  --------------------  ---------------  ---------------  ---------------  -----------------------  -----------------------
MVPEP-SML-TRN         OVMSTORAGE                             OFFLINE          OFFLINE          2021-02-20 02:28:59 BRT  2021-02-20 02:28:59 BRT
</code></pre>
<pre><code class="lang-bash">[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli start-vm -n MVPEP-SML-TRN</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  2d234ec2-df58-44cd-b603-a00b3c972acf
            Description:  VM MVPEP-SML-TRN start
                 Status:  Success
                Created:  February 20, 2021 3:07:43 AM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Validate dependency resources            February 20, 2021 3:07:43 AM BRT    February 20, 2021 3:07:43 AM BRT    Success   
Start VM                                 February 20, 2021 3:07:43 AM BRT    February 20, 2021 3:07:51 AM BRT    Success   
Save live VM configuration <span class="hljs-keyword">in</span> ACFS       February 20, 2021 3:07:51 AM BRT    February 20, 2021 3:07:51 AM BRT    Success   
Save live VM configuration <span class="hljs-keyword">in</span> metadata   February 20, 2021 3:07:51 AM BRT    February 20, 2021 3:07:51 AM BRT    Success
</code></pre>
<pre><code class="lang-bash">[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli list-vms</span>
Name                  VM Storage            Node             Current State    Target State     Created                  Updated                
--------------------  --------------------  ---------------  ---------------  ---------------  -----------------------  -----------------------
MVPEP-SML-TRN         OVMSTORAGE            odax8godata     ONLINE           ONLINE           2021-02-20 02:28:59 BRT  2021-02-20 03:07:51 BRT

[root@odax8godata vdisk_DISCO_SECUNDARIO]<span class="hljs-comment"># odacli describe-vm -n MVPEP-SML-TRN</span>
VM details                                                                      
--------------------------------------------------------------------------------
                       ID:  f18f916b-19ae-4bfd-af33-f4a49f67f625
                     Name:  MVPEP-SML-TRN
                  Created:  2021-02-20 02:28:59 BRT
                  Updated:  2021-02-20 03:07:51 BRT
               VM Storage:  OVMSTORAGE
              Description:  NONE
                  VM size:  120.00 GB
                   Source:  V1003434-01.iso
                  OS Type:  NONE
               OS Variant:  NONE
        Graphics settings:  vnc,listen=0.0.0.0
             Display Port:  :0

 Status                   
--------------------------
             Current node:  odax8godata
            Current state:  ONLINE
             Target state:  ONLINE

 Parameters               
--------------------------
           Preferred node:  NONE
              Boot option:  NONE
               Auto start:  YES
                Fail over:  NO

                            Config                     Live                     
                            -------------------------  -------------------------
                   Memory:  32.00 GB                   32.00 GB                 
               Max Memory:  32.00 GB                   32.00 GB                 
               vCPU count:  24                         24                       
           Max vCPU count:  24                         24                       
                 CPU Pool:  POOL12CORES                POOL12CORES              
        Effective CPU <span class="hljs-built_in">set</span>:  16-27,48-59                16-27,48-59              
                    vCPUs:  0:16-27,48-59              0:16-27,48-59            
                            1:16-27,48-59              1:16-27,48-59            
                            2:16-27,48-59              2:16-27,48-59            
                            3:16-27,48-59              3:16-27,48-59            
                            4:16-27,48-59              4:16-27,48-59            
                            5:16-27,48-59              5:16-27,48-59            
                            6:16-27,48-59              6:16-27,48-59            
                            7:16-27,48-59              7:16-27,48-59            
                            8:16-27,48-59              8:16-27,48-59            
                            9:16-27,48-59              9:16-27,48-59            
                            10:16-27,48-59             10:16-27,48-59           
                            11:16-27,48-59             11:16-27,48-59           
                            12:16-27,48-59             12:16-27,48-59           
                            13:16-27,48-59             13:16-27,48-59           
                            14:16-27,48-59             14:16-27,48-59           
                            15:16-27,48-59             15:16-27,48-59           
                            16:16-27,48-59             16:16-27,48-59           
                            17:16-27,48-59             17:16-27,48-59           
                            18:16-27,48-59             18:16-27,48-59           
                            19:16-27,48-59             19:16-27,48-59           
                            20:16-27,48-59             20:16-27,48-59           
                            21:16-27,48-59             21:16-27,48-59           
                            22:16-27,48-59             22:16-27,48-59           
                            23:16-27,48-59             23:16-27,48-59           
                   vDisks:  DISCO_SECUNDARIO:vdb       DISCO_SECUNDARIO:vdb     
                vNetworks:  VNET1:52:54:00:68:26:a9    VNET1:52:54:00:68:26:a9
</code></pre>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpDTHBZOGifqzZpX5YS8JxDpzbzEmUOCPjtTdJNiKCKZFLCxrzKJLmYClaU3Fz072jZxeRRQuOL7ZUuv_GRE9EC5XYB547UMtUdMeDir4TjREHhjnesEJBeLgnsU2j2SxhqrsDZ5mAelhD/s850/pos+migracao.png" alt="img1" /></p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX5umtwuVQXXfX1skPzy04GmMomwm0g8I_LZBiJcftyPKGSKVKljp4hyJDMURrrzSMy4mPxJDV0nLS5kHCmvG0OZSEoX9dsB4qrgquCYzU2Vuqnsvl3ZYXddCBX00e40t5J4GFg0Bpwo11/s797/pos+migracao+1.png" alt="img2" /></p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhlbQ8mEPAkqWRP2vVZYTV-unUyySaYi00ABsP68SzA37QnDFYWgABL_2FzTtJj0wsPgylcQZqc1pwc1XaQp5BDvqtQcyba8H7tTz4tABsMJYU7Z0EQK25tPaw32AvIToLTmWvxpveTWik/s826/pos+migracao+2.png" alt="img3" /></p>
]]></content:encoded></item><item><title><![CDATA[KVM: Criando VM's e gerenciando com o ODACLI]]></title><description><![CDATA[Até “ontem” a utilização do KVM no ODA Bare metal não era simplificada, era necessário realizar alguns ajustes e até reboot de rede estava envolvido no antigo processo, mas digo a vocês que isso acabou. Desde a versão 19.8 a Oracle adicionou vários r...]]></description><link>https://diogofernandes.com.br/kvm-criando-vms-e-gerenciando-com-o-odacli</link><guid isPermaLink="true">https://diogofernandes.com.br/kvm-criando-vms-e-gerenciando-com-o-odacli</guid><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sat, 28 Dec 2024 21:33:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735421886611/1cd75e29-5dd3-4c3c-adb0-7a17a4613b6e.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Até “ontem” a utilização do KVM no ODA Bare metal não era simplificada, era necessário realizar alguns ajustes e até reboot de rede estava envolvido no antigo processo, mas digo a vocês que isso acabou. Desde a versão 19.8 a Oracle adicionou vários recursos para administração de máquinas virtuais, desde a criação de maquinas até gerenciamento da rede(vnetworks), tudo através do ODACLI. Neste post vamos abordar os seguintes comandos:</p>
<pre><code class="lang-bash">        1 - odacli create-vmstorage
        2 - odacli create-vcpupool 
        3 - odacli create-vnetwork
        4 - odacli create-vdisk
        5 - odacli create-vm
</code></pre>
<p>Todos estes procedimentos foram executados em um ODA X8M(Patch 19.9), portanto não se aplica diretamente ao ODA X8 HA, antes de executar este procedimento em um ODA HA, peço que consulte a <a target="_blank" href="https://docs.oracle.com/en/engineered-systems/oracle-database-appliance/19.9/cmtxn/managing-oracle-database-appliance-kvm-deployment1.html#GUID-EBDB3C0D-0A4E-4172-B4D7-19CB9E17F398">documentação oficial</a>.</p>
<p>Primeiro vamos preparar a área de armazenamentoobrigatoriamente temos que criar um local ondos discos de boot e os vdisk da maquinavirtuais serão armazenados:</p>
<pre><code class="lang-bash"> [root@odax8godata ~]<span class="hljs-comment"># odacli create-vmstorage -dg DATA -n VMSTORAGE1 -s 500G</span>

df -h 

/dev/asm/vmstorage1-78              500G  2G  497G  70% /u05/app/sharedrepo/vmstorage1
</code></pre>
<p>Pronto, vmstorage criado, vamos partir para o CPU POOL.</p>
<p>Pronto, vmstorage criado, vamos partir para o CPU POOL.</p>
<p>Podemos criar o CPU POOL de 2 formas, sendo elas do tipo vm ou bare metal, como o próprio nome diz, vamos criar do tipo vm, a do tipo bare metal é exclusivo para database, mas esse é assunto para outro post. <a target="_blank" href="https://docs.oracle.com/en/engineered-systems/oracle-database-appliance/19.9/cmtxn/oracle-appliance-manager-command-line-interface-kvm.html#GUID-7589DB64-6CF1-478C-A031-47D673471C2E">Segue a documentação</a>.</p>
<p><a target="_blank" href="https://docs.oracle.com/en/engineered-systems/oracle-database-appliance/19.9/cmtxn/oracle-appliance-manager-command-line-interface-kvm.html#GUID-7589DB64-6CF1-478C-A031-47D673471C2E">Attach the BM CPU pool to databases. Bare metal CPU pools can be assigned to multiple databases</a>.</p>
<p><a target="_blank" href="https://docs.oracle.com/en/engineered-systems/oracle-database-appliance/19.9/cmtxn/oracle-appliance-manager-command-line-interface-kvm.html#GUID-7589DB64-6CF1-478C-A031-47D673471C2E">Attach VM CPU pool VM guest machines. VM CPU pools can be assigned to multiple VMs</a>.</p>
<p>Agora vamos criar um cpu pool, lembrando que ele é criado em “cores”, abaixo vamos criar com 8 cores, podendo utilizar até 16 VCPU’s.</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli create-cpupool -c 8 -n POOL8CORES -vm</span>
</code></pre>
<p>Cpu pool concluído, agora vamos para a parte de rede. Na forma antiga de configurar o KVM era possível utilizar a placa btbond1 como brigde agora não é mais permitido, apenas como vlan:</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli create-vnetwork --name VNET1 --bridge VNET1 --type bridged --interface btbond1 --ip 10.1.1.130  --gateway 10.1.1.1 --netmask 255.255.255.0</span>
DCS-10045:Validation error encountered: Cannot create a bridged vNetwork using the public interface btbond1.
</code></pre>
<p>Porém você pode utilizar a segunda placa btbond2 para criar como bridge, que por sinal, será ela que utilizaremos em nossos testes. Um detalhe muito importante… Não utilize a mesma faixa/subnet do btbond1 para criar essa vnetwork, na máquina virtual pode utilizar qualquer faixa disponível, mas para criar a vnetwork escolha uma faixa/subnet diferente da btbond1. Outro detalhe, qualquer configuração que você tenha na BTBOND2 será ELIMINADA na criação da vnetwork.</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli create-vnetwork --name VNET1 --bridge VNET1 --type bridged --interface btbond2 --ip 10.1.1.130  --gateway 10.1.1.1 --netmask 255.255.255.0</span>
</code></pre>
<p>Estamos quase lá, agora só falta criar um vdisk que é opcional, reforçando que ele não é o disco de boot, é um disco secundário de 300GB que vamos anexar em nossa máquina.</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli list-vmstorages</span>
Name                  Disk group       Volume name      Volume device                   Size        Mount Point                          Created                  Updated                
--------------------  ---------------  ---------------  ------------------------------  ----------  -----------------------------------  -----------------------  -----------------------
VMSTORAGE1            DATA             VMSTORAGE1       /dev/asm/vmstorage1-78          500.00 GB   /u05/app/sharedrepo/vmstorage1       2021-02-02 01:00:59 BRT  2021-02-02 01:00:59 BRT

[root@odax8godata ~]<span class="hljs-comment"># odacli create-vdisk -n VDISK1 -sh -s 300G -vms VMSTORAGE1</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  1b6a8361-3a80-4c66-ad7a-fe93f4f7c247
            Description:  VM disk VDISK1 creation
                 Status:  Created
                Created:  February 2, 2021 4:54:34 AM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
</code></pre>
<p>Agora vamos revisar tudo antes de criar a máquina virtual.</p>
<p>VMSTORAGE:</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli list-vmstorages</span>
Name                  Disk group       Volume name      Volume device                   Size        Mount Point                          Created                  Updated                
--------------------  ---------------  ---------------  ------------------------------  ----------  -----------------------------------  -----------------------  -----------------------
VMSTORAGE1            DATA             VMSTORAGE1       /dev/asm/vmstorage1-78          500.00 GB   /u05/app/sharedrepo/vmstorage1       2021-02-02 01:00:59 BRT  2021-02-02 01:00:59 BRT
</code></pre>
<p>CPU POOL:</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli list-cpupools</span>
Name                  Type   Configured on              Cores  Associated resources            Created                  Updated                
--------------------  -----  -------------------------  -----  ------------------------------  -----------------------  -----------------------
POOL8CORES            VM     odax8godata               8      NONE                            2021-02-02 04:14:35 BRT  2021-02-02 04:14:35 BRT
</code></pre>
<p>VNETWORKS:</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli list-vnetworks</span>
Name                  Type             Interface        Bridge                Uniform   Created                  Updated                
--------------------  ---------------  ---------------  --------------------  --------  -----------------------  -----------------------
VNET1                 Bridged          btbond2          VNET1                 NO        2021-02-02 04:40:02 BRT  2021-02-02 04:40:02 BRT
</code></pre>
<p>VDISK:</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli list-vdisks</span>
Name                  VM storage            Size        Shared      Sparse      Created                  Updated                
--------------------  --------------------  ----------  ----------  ----------  -----------------------  -----------------------
VDISK1                VMSTORAGE1            300.00 GB   YES         NO          2021-02-02 05:02:26 BRT  2021-02-02 05:02:26 BRT
</code></pre>
<p>Pronto, agora vamos para a criação da maquina virtual.</p>
<pre><code class="lang-bash">[root@odax8godata ~]<span class="hljs-comment"># odacli create-vm -n VMTESTE1 -cp POOL8CORES -vc 8 -m 32G -vms VMSTORAGE1 -s 50G -vd VDISK1 -vn VNET1 -src /u01/V1003434-01.iso</span>

Explicando o Comando:

-n VMTESTE1 ---&gt; Nome da Maquina.

-cp POOL8CORES ---&gt; Pool de CPU de 8 Cores que criamos anteriormente.

-vc 8 ---&gt; Quantidade de VCPU<span class="hljs-string">'s

-m 32G ---&gt; Memoria destinada a maquina virtual.

-vms VMSTORAGE1 --&gt; Area de storage que criamos anteriormente com 500GB, lembra ?

-s 50G ---&gt; Tamanho do disco de boot.

-vd VDISK1 ---&gt; disco de 300GB que criamos anteriormente, reforçando ... esse não é o disco de boot.

-vn VNET1 ---&gt; vnetwork que as maquinas virtuais irão utilizar.

-src /u01/V1003434-01.iso ---&gt; ISO de BOOT.


Job details                                                      
----------------------------------------------------------------
                     ID:  d4c1efa1-8d15-48a7-92b3-0cd620c78968
            Description:  VM VMTESTE1 creation
                 Status:  Created
                Created:  February 2, 2021 10:56:02 PM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------


[root@odax8godata ~]# odacli describe-job -i d4c1efa1-8d15-48a7-92b3-0cd620c78968

Job details                                                      
----------------------------------------------------------------
                     ID:  d4c1efa1-8d15-48a7-92b3-0cd620c78968
            Description:  VM VMTESTE1 creation
                 Status:  Success
                Created:  February 2, 2021 10:56:02 PM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Validate dependency resources            February 2, 2021 10:56:02 PM BRT    February 2, 2021 10:56:02 PM BRT    Success   
Validate resource allocations            February 2, 2021 10:56:02 PM BRT    February 2, 2021 10:56:02 PM BRT    Success   
Allocate resources                       February 2, 2021 10:56:02 PM BRT    February 2, 2021 10:56:02 PM BRT    Success   
Provision new VM                         February 2, 2021 10:56:02 PM BRT    February 2, 2021 10:56:06 PM BRT    Success   
Add VM to Clusterware                    February 2, 2021 10:56:06 PM BRT    February 2, 2021 10:56:08 PM BRT    Success   
Save configuration in ACFS               February 2, 2021 10:56:08 PM BRT    February 2, 2021 10:56:08 PM BRT    Success   
Save live VM configuration in ACFS       February 2, 2021 10:56:08 PM BRT    February 2, 2021 10:56:08 PM BRT    Success   
Create VM metadata                       February 2, 2021 10:56:08 PM BRT    February 2, 2021 10:56:08 PM BRT    Success   
Persist metadata                         February 2, 2021 10:56:08 PM BRT    February 2, 2021 10:56:08 PM BRT    Success   

[root@odax8godata ~]# odacli describe-vm -n VMTESTE1
VM details                                                                      
--------------------------------------------------------------------------------
                       ID:  6d6a6ed1-ef70-474e-9a92-d0d129e78a96
                     Name:  VMTESTE1
                  Created:  2021-02-02 22:56:08 BRT
                  Updated:  2021-02-02 22:56:08 BRT
               VM Storage:  VMSTORAGE1
              Description:  NONE
                  VM size:  50.00 GB
                   Source:  V1003434-01.iso
                  OS Type:  NONE
               OS Variant:  NONE
        Graphics settings:  vnc,listen=0.0.0.0
             Display Port:  :0

 Status                   
--------------------------
             Current node:  odax8godata
            Current state:  ONLINE
             Target state:  ONLINE

 Parameters               
--------------------------
           Preferred node:  NONE
              Boot option:  NONE
               Auto start:  YES
                Fail over:  NO

                            Config                     Live                     
                            -------------------------  -------------------------
                   Memory:  32.00 GB                   32.00 GB                 
               Max Memory:  32.00 GB                   32.00 GB                 
               vCPU count:  8                          8                        
           Max vCPU count:  8                          8                        
                 CPU Pool:  POOL8CORES                 POOL8CORES               
        Effective CPU set:  0-7,32-39                  0-7,32-39                
                    vCPUs:  0:0-7,32-39                0:0-7,32-39              
                            1:0-7,32-39                1:0-7,32-39              
                            2:0-7,32-39                2:0-7,32-39              
                            3:0-7,32-39                3:0-7,32-39              
                            4:0-7,32-39                4:0-7,32-39              
                            5:0-7,32-39                5:0-7,32-39              
                            6:0-7,32-39                6:0-7,32-39              
                            7:0-7,32-39                7:0-7,32-39              
                   vDisks:  VDISK1:vdb                 VDISK1:vdb               
                vNetworks:  VNET1:52:54:00:ce:25:22    VNET1:52:54:00:ce:25:22</span>
</code></pre>
<p>VM criada com sucesso, vamos ao acesso.</p>
<p>Quando executar o “describe” da máquina será listado algumas propriedades dentre elas o “display port”. O acesso a VM é feito via VNC, você pode usar qualquer ip para conectar na interface tanto do btbond1 ou do btbond2, em nosso caso a porta está em 0 então apenas com o ip de qualquer uma das interface conseguiremos acessar a VM.</p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-Np-KPYXHJitpzxGCdIftePPDNJGD6Zk49vCxyner2GSX4VunoBfQZIvybBT4j2g6Z45zLemXwvPvJgi8pNyTCX1lv33E_EaKlGvvGSfJKjxkCXoIHByAMrhmWrshAFmorpLuPuc-5oR5/s677/Captura+de+tela+2021-02-02+200152.png" alt="img1" /></p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCqcX6Gb2afuF4NHCvOsKlbLv_fXg3xvgkR-Tm1ZxcGts2tXEfIllPldACRytk1Pmy_7jIFRZEW7b-gY6Ra1X89MvvWlBQiWGrlyD-OPLpSksfUqr6rKnmpwZtUB6cCu6mGNY9jHwe_5M7/s803/Captura+de+tela+2021-02-02+150337.png" alt="img2" /></p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi30KK2etCBvswW0N232fHKgiGiIvdktflW7VG9QPSum-7fvQ0wyNVqmx4lRxPspF3p0_NNFYfxEkIehTc2dDjFKH97UUBM8thprxDypiuiPRmoc0qGmIOlsAW7KmRZ-2vSNAVsOwX4co6-/s676/Captura+de+tela+2021-02-02+150406.png" alt="img3" /></p>
<p><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR323p7lGCXp3eFsH0_V5qNpEPouOsuNYxDu_CAb-lMoo-I6CfSPeRu8A58svxfnVUTB9vg8daIoYvy9apE-ba1EQZ3L6NJxfzJIVmHRZwzS9Y67oSFKVawzkiWld7p5I36Xu4iyJq1Uu9/s1138/Captura+de+tela+2021-02-02+150434.png" alt="img4" /></p>
<p>Pronto senhores(a), daqui pra frente agora é com vocês rs.</p>
]]></content:encoded></item><item><title><![CDATA[Atualizando Banco de Dados 11G para o 19C através do ODACLI]]></title><description><![CDATA[Como é de conhecimentos de todos, sabemos que o suporte ao banco de dados 11G encerrou dia 31 de dezembro de 2020. Mediante isso, decidi escrever este artigo de como atualizar o banco de dados 11G para o 19C utilizando o ODACLI. Lembrando que este pr...]]></description><link>https://diogofernandes.com.br/upgradedbodacli</link><guid isPermaLink="true">https://diogofernandes.com.br/upgradedbodacli</guid><category><![CDATA[#oda #oracle #oracledatabase]]></category><dc:creator><![CDATA[Diogo Fernandes]]></dc:creator><pubDate>Sat, 28 Dec 2024 19:09:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735418355721/ef4177e7-5e98-4698-ad35-44265772cbef.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Como é de conhecimentos de todos, sabemos que o suporte ao banco de dados 11G encerrou dia 31 de dezembro de 2020. Mediante isso, decidi escrever este artigo de como atualizar o banco de dados 11G para o 19C utilizando o ODACLI. Lembrando que este procedimento por enquanto está disponível apenas para Single Instance. Antes de executar quaisquer dos procedimentos abaixo, realize o backup de sua base. Para o upgrade… vamos executar as seguintes etapas.</p>
<ul>
<li><p>Criar o Banco de dados UPTO19C na versão 11.2.0.4.</p>
</li>
<li><p>Criar um dbhome na versão 19.8.0.0.</p>
</li>
<li><p>Duplicar o banco para a instancia UPTO19C ainda na versão 11.2.0.4.</p>
</li>
<li><p>Atualizar o Banco de dados 11G para o 19C.</p>
</li>
</ul>
<p>Então vamos dar início ao procedimento:</p>
<p>Parte 1.</p>
<pre><code class="lang-bash">[root@oda-x8m ~]<span class="hljs-comment"># odacli create-database -n UPTO19C -u UPTO19C -r ACFS -s odb2 -cs WE8MSWIN1252 -v 11.2.0.4 </span>
    Password <span class="hljs-keyword">for</span> SYS,SYSTEM and PDB Admin: 

    Job details                                                      
    ----------------------------------------------------------------
                         ID:  54c154ef-61bc-4aca-a0a8-7cdc9bfec42f
                Description:  Database service creation with db name: UPTO19C
                     Status:  Created
                    Created:  January 21, 2021 10:49:39 PM BRT
                    Message:  

    Task Name                                Start Time                          End Time                            Status    
    ---------------------------------------- ----------------------------------- ----------------------------------- ----------



root@oda-x8m ~]<span class="hljs-comment"># odacli describe-job -i 54c154ef-61bc-4aca-a0a8-7cdc9bfec42f</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  54c154ef-61bc-4aca-a0a8-7cdc9bfec42f
            Description:  Database service creation with db name: UPTO19C
                 Status:  Success
                Created:  January 21, 2021 10:49:39 PM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Validating dbHome available space        January 21, 2021 10:49:46 PM BRT    January 21, 2021 10:49:46 PM BRT    Success   
Setting up ssh equivalance               January 21, 2021 10:49:47 PM BRT    January 21, 2021 10:49:47 PM BRT    Success   
Create DATA FileGroup DATUPTO19C         January 21, 2021 10:49:47 PM BRT    January 21, 2021 10:49:48 PM BRT    Success   
Create RECO FileGroup RDOUPTO19C         January 21, 2021 10:49:48 PM BRT    January 21, 2021 10:49:49 PM BRT    Success   
Creating volume datUPTO19C               January 21, 2021 10:49:49 PM BRT    January 21, 2021 10:50:12 PM BRT    Success   
Creating volume rdoUPTO19C               January 21, 2021 10:50:12 PM BRT    January 21, 2021 10:50:33 PM BRT    Success   
Creating ACFS filesystem <span class="hljs-keyword">for</span> DATA        January 21, 2021 10:50:33 PM BRT    January 21, 2021 10:50:50 PM BRT    Success   
Creating ACFS filesystem <span class="hljs-keyword">for</span> RECO        January 21, 2021 10:50:50 PM BRT    January 21, 2021 10:51:08 PM BRT    Success   
Validating dbHome available space        January 21, 2021 10:51:08 PM BRT    January 21, 2021 10:51:08 PM BRT    Success   
Creating DbHome Directory                January 21, 2021 10:51:08 PM BRT    January 21, 2021 10:51:08 PM BRT    Success   
Extract DB clones                        January 21, 2021 10:51:08 PM BRT    January 21, 2021 10:51:55 PM BRT    Success   
Clone Db home                            January 21, 2021 10:51:55 PM BRT    January 21, 2021 10:52:50 PM BRT    Success   
Enable DB options                        January 21, 2021 10:52:50 PM BRT    January 21, 2021 10:52:55 PM BRT    Success   
Run Root DB scripts                      January 21, 2021 10:52:55 PM BRT    January 21, 2021 10:52:55 PM BRT    Success   
configuring Net Security                 January 21, 2021 10:52:58 PM BRT    January 21, 2021 10:52:58 PM BRT    Success   
Database Service creation                January 21, 2021 10:52:59 PM BRT    January 21, 2021 10:57:54 PM BRT    Success   
Database Creation                        January 21, 2021 10:52:59 PM BRT    January 21, 2021 10:57:22 PM BRT    Success   
Place SnapshotCtrlFile <span class="hljs-keyword">in</span> sharedLoc      January 21, 2021 10:57:22 PM BRT    January 21, 2021 10:57:24 PM BRT    Success   
updating the Database version            January 21, 2021 10:57:52 PM BRT    January 21, 2021 10:57:54 PM BRT    Success   
create Users tablespace                  January 21, 2021 10:57:54 PM BRT    January 21, 2021 10:57:56 PM BRT    Success   
Clear all listeners from Databse         January 21, 2021 10:57:56 PM BRT    January 21, 2021 10:57:56 PM BRT    Success
</code></pre>
<p>Como podemos ver, a primeira etapa foi concluída com sucesso. Agora vamos para a próxima etapa.</p>
<p>Parte 2.</p>
<pre><code class="lang-bash">[root@oda-x8m ~]<span class="hljs-comment"># odacli create-dbhome -de EE -v 19.8.0.0</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  c22ae319-1dd3-4527-a9c0-984fd80b3899
            Description:  Database Home OraDB19000_home3 creation with version :19.8.0.0
                 Status:  Created
                Created:  January 21, 2021 11:01:23 PM BRT
                Message:  Create Database Home

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------





[root@oda-x8m ~]<span class="hljs-comment"># odacli describe-job -i c22ae319-1dd3-4527-a9c0-984fd80b3899</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  c22ae319-1dd3-4527-a9c0-984fd80b3899
            Description:  Database Home OraDB19000_home3 creation with version :19.8.0.0
                 Status:  Success
                Created:  January 21, 2021 11:01:23 PM BRT
                Message:  Create Database Home

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Setting up ssh equivalance               January 21, 2021 11:01:23 PM BRT    January 21, 2021 11:01:23 PM BRT    Success   
Removing ssh keys                        January 21, 2021 11:01:23 PM BRT    January 21, 2021 11:03:57 PM BRT    Success   
Validating dbHome available space        January 21, 2021 11:01:23 PM BRT    January 21, 2021 11:01:23 PM BRT    Success   
Creating DbHome Directory                January 21, 2021 11:01:23 PM BRT    January 21, 2021 11:01:23 PM BRT    Success   
Extract DB clones                        January 21, 2021 11:01:23 PM BRT    January 21, 2021 11:02:41 PM BRT    Success   
Clone Db home                            January 21, 2021 11:02:41 PM BRT    January 21, 2021 11:03:35 PM BRT    Success   
Enable DB options                        January 21, 2021 11:03:35 PM BRT    January 21, 2021 11:03:53 PM BRT    Success   
Run Root DB scripts                      January 21, 2021 11:03:53 PM BRT    January 21, 2021 11:03:53 PM BRT    Success
</code></pre>
<p>Banco de dados criado e dbhome 19c finalizado, vamos averiguar como que estão as coisas:</p>
<pre><code class="lang-bash">[root@oda-x8m ~]<span class="hljs-comment"># odacli list-databases</span>

ID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID                                
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------   
ba14cf8b-676b-4a69-a576-413e31ac6098     UPTO19C    Si       11.2.0.4.200714      <span class="hljs-literal">false</span>      Oltp     Odb2     Acfs       Configured   a60a4e83-f265-4fe0-b22a-82770743293c    


[root@oda-x8m ~]<span class="hljs-comment"># odacli list-dbhomes</span>

ID                                       Name                 DB Version                               Home Location                                 Status    
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
a60a4e83-f265-4fe0-b22a-82770743293c     OraDB11204_home5     11.2.0.4.200714                          /u01/app/oracle/product/11.2.0.4/dbhome_5     Configured
3920f434-0a4b-44f1-9a31-80bf57351586     OraDB19000_home3     19.8.0.0.200714                          /u01/app/oracle/product/19.0.0.0/dbhome_3     Configured
</code></pre>
<p>Podemos ver que o dbhome com o final “3c” está vinculado ao banco UPTO19C e que o dbhome 19C com final “86” será nosso target na atualização.</p>
<p>Parte 3.</p>
<p>Agora vamos para parte que duplicamos o database de produção para o banco UPTO19C. Não entrarei em detalhes de como fazer o duplicate neste artigo para não ficar muito longo e perdemos o foco.</p>
<pre><code class="lang-bash">Recovery Manager: Release 11.2.0.4.0 - Production on Wed Jan 20 15:12:38 2021

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: PROD (DBID=1261511516)
connected to auxiliary database: UPTO19C (not mounted)
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXX
contents of Memory Script:
{
   Alter <span class="hljs-built_in">clone</span> database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 20/01/2021 16:31:25
</code></pre>
<p>Pronto, agora nosso banco UPTO19C tem 8TB e podemos iniciar o procedimento.</p>
<pre><code class="lang-bash">SQL*Plus: Release 11.2.0.4.0 Production on Fri Jan 22 00:41:16 2021

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options


SQL&gt; @dbsize

DB_SIZE_IN_MEGAS
----------------
       7,827,649
</code></pre>
<p>Antes de iniciar o upgrade gostaria de mencionar um processo anterior que deu falha.</p>
<pre><code class="lang-bash">[root@oda-x8m ~]<span class="hljs-comment"># odacli describe-job -i 45191d6f-ca5f-43cb-9fbe-a155f8432dc2</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  45191d6f-ca5f-43cb-9fbe-a155f8432dc2
            Description:  Database service upgrade with db ids: [b5157b23-a1c7-49d5-b58a-f23dffdf5ab6]
                 Status:  Failure
                Created:  January 20, 2021 5:05:27 PM BRT
                Message:  DCS-10001:Internal error encountered: Databases failed to upgrade are : [b5157b23-a1c7-49d5-b58a-f23dffdf5ab6].

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Database Service Upgradation             January 20, 2021 5:05:27 PM BRT     January 20, 2021 5:06:35 PM BRT     Failure   
Database Service Upgradation             January 20, 2021 5:05:27 PM BRT     January 20, 2021 5:06:35 PM BRT     Failure   
Setting up ssh equivalance               January 20, 2021 5:05:27 PM BRT     January 20, 2021 5:05:27 PM BRT     Success   
Clear <span class="hljs-built_in">local</span> and remote listeners from Databse January 20, 2021 5:05:27 PM BRT     January 20, 2021 5:05:28 PM BRT     Success   
Run catnoamd.sql                         January 20, 2021 5:05:28 PM BRT     January 20, 2021 5:05:29 PM BRT     Success   
Database Upgrade                         January 20, 2021 5:05:29 PM BRT     January 20, 2021 5:06:34 PM BRT     Success   
Deleting and creating the spfile and pfile January 20, 2021 5:06:34 PM BRT     January 20, 2021 5:06:35 PM BRT     Success   
Removing ssh keys                        January 20, 2021 5:06:35 PM BRT     January 20, 2021 5:06:35 PM BRT     Success   
Database Upgrade Validation              January 20, 2021 5:06:35 PM BRT     January 20, 2021 5:06:35 PM BRT     Failure
</code></pre>
<p>Depois de várias horas olhando os logs encontrei a causa do erro.</p>
<p>Como alguns amigos dizem… “Vá para o alert e lá estarás a verdade” e depois de um tempo encontrei isso aqui:</p>
<pre><code class="lang-bash">joxcsys: release mismatch 11.2.0.4.190716 <span class="hljs-keyword">in</span> database (classes.bin) vs 11.2.0.4.200714 <span class="hljs-keyword">in</span> executable.
</code></pre>
<p>Caso este seja seu problema, execute:</p>
<p>Database em modo OPEN normal.</p>
<pre><code class="lang-bash">sqlplus / as sysdba

@<span class="hljs-variable">$ORACLE_HOME</span>/rdbms/admin/utlu112s.sql
@<span class="hljs-variable">$ORACLE_HOME</span>/rdbms/admin/catuppst.sql
@<span class="hljs-variable">$ORACLE_HOME</span>/rdbms/admin/utlrp.sql
</code></pre>
<p>Caso exista alguma entrada "Manual" no arquivo listener.ora vinculada ao database que será atualizado, deverá ser removida para a atualização.</p>
<p>Pronto, depois disso você poderá executar o upgrade sem problemas, caso o seu problema seja este.</p>
<p>Parte 4.</p>
<p>Vamos dar continuidade ao procedimento agora.</p>
<pre><code class="lang-bash">[root@oda-x8m ~]<span class="hljs-comment"># odacli list-databases</span>

ID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID                                
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------   
ba14cf8b-676b-4a69-a576-413e31ac6098     UPTO19C    Si       11.2.0.4.200714      <span class="hljs-literal">false</span>      Oltp     Odb2     Acfs       Configured   a60a4e83-f265-4fe0-b22a-82770743293c    

[root@oda-x8m ~]<span class="hljs-comment"># odacli list-dbhomes</span>

ID                                       Name                 DB Version                               Home Location                                 Status    
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
a60a4e83-f265-4fe0-b22a-82770743293c     OraDB11204_home5     11.2.0.4.200714                          /u01/app/oracle/product/11.2.0.4/dbhome_5     Configured
3920f434-0a4b-44f1-9a31-80bf57351586     OraDB19000_home3     19.8.0.0.200714                          /u01/app/oracle/product/19.0.0.0/dbhome_3     Configured
</code></pre>
<p>Explicando o comando:</p>
<p>odacli upgrade-database -i “ID do Banco de Dados no DCS, que é o ba14cf8b-676b-4a69-a576-413e31ac6098” -from “Home id da versão 11G, onde o banco está vinculado” -to “Home id da versão 19C”</p>
<pre><code class="lang-bash">[root@oda-x8m ~]<span class="hljs-comment"># odacli upgrade-database -i ba14cf8b-676b-4a69-a576-413e31ac6098 -from a60a4e83-f265-4fe0-b22a-82770743293c -to 3920f434-0a4b-44f1-9a31-80bf57351586</span>
{
  <span class="hljs-string">"jobId"</span> : <span class="hljs-string">"82020630-2ab0-4f64-9054-4490a824e62c"</span>,
  <span class="hljs-string">"status"</span> : <span class="hljs-string">"Created"</span>,
  <span class="hljs-string">"message"</span> : null,
  <span class="hljs-string">"reports"</span> : [ ],
  <span class="hljs-string">"createTimestamp"</span> : <span class="hljs-string">"January 27, 2021 15:00:19 PM BRT"</span>,
  <span class="hljs-string">"resourceList"</span> : [ ],
  <span class="hljs-string">"description"</span> : <span class="hljs-string">"Database service upgrade with db ids: [ba14cf8b-676b-4a69-a576-413e31ac6098]"</span>,
  <span class="hljs-string">"updatedTime"</span> : <span class="hljs-string">"January 27, 2021 15:00:19 PM BRT"</span>
}
</code></pre>
<p>Depois de 31 minutos nosso database está atualizado:</p>
<pre><code class="lang-bash">[root@oda-x8m ~]<span class="hljs-comment"># odacli describe-job -i 82020630-2ab0-4f64-9054-4490a824e62c</span>

Job details                                                      
----------------------------------------------------------------
                     ID:  82020630-2ab0-4f64-9054-4490a824e62c
            Description:  Database service upgrade with db ids: [ba14cf8b-676b-4a69-a576-413e31ac6098]
                 Status:  Success
                Created:  January 27, 2021 3:00:19 PM BRT
                Message:  

Task Name                                Start Time                          End Time                            Status    
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Setting up ssh equivalance               January 27, 2021 3:00:19 PM BRT     January 27, 2021 3:00:19 PM BRT     Success   
Clear <span class="hljs-built_in">local</span> and remote listeners from Databse January 27, 2021 3:00:19 PM BRT     January 27, 2021 3:00:19 PM BRT     Success   
Run catnoamd.sql                         January 27, 2021 3:00:20 PM BRT     January 27, 2021 3:00:25 PM BRT     Success   
Database Upgrade                         January 27, 2021 3:00:25 PM BRT     January 27, 2021 3:30:19 PM BRT     Success   
Deleting and creating the spfile and pfile January 27, 2021 3:30:46 PM BRT     January 27, 2021 3:31:32 PM BRT     Success   
Removing ssh keys                        January 27, 2021 3:31:32 PM BRT     January 27, 2021 3:31:34 PM BRT     Success   
Database Upgrade Validation              January 27, 2021 3:31:34 PM BRT     January 27, 2021 3:31:34 PM BRT     Success
</code></pre>
<p>Podemos ver que o database UPTO19C agora está vinculado ao dbhome 19C:</p>
<pre><code class="lang-bash">[root@oda-x8m ~]<span class="hljs-comment"># odacli list-databases</span>

ID                                       DB Name    DB Type  DB Version           CDB        Class    Shape    Storage    Status        DbHomeID                                
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
ba14cf8b-676b-4a69-a576-413e31ac6098     UPTO19C    Si       19.8.0.0.200714      <span class="hljs-literal">false</span>      Oltp     Odb2     Acfs       Configured   3920f434-0a4b-44f1-9a31-80bf57351586    

[root@oda-x8m ~]<span class="hljs-comment"># odacli list-dbhomes</span>

ID                                       Name                 DB Version                               Home Location                                 Status    
---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------
a60a4e83-f265-4fe0-b22a-82770743293c     OraDB11204_home5     11.2.0.4.200714                          /u01/app/oracle/product/11.2.0.4/dbhome_5     Configured
3920f434-0a4b-44f1-9a31-80bf57351586     OraDB19000_home3     19.8.0.0.200714                          /u01/app/oracle/product/19.0.0.0/dbhome_3     Configured
</code></pre>
<p>E que o Database UPTO19C foi atualizado com sucesso:</p>
<pre><code class="lang-bash">[oracle@oda-x8m ~]$ . oraenv
ORACLE_SID = [oracle] ? UPTO19C
The Oracle base has been <span class="hljs-built_in">set</span> to /u01/app/oracle
[oracle@oda-x8m ~]$ sqlplus / as sysdba 

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 27 16:04:47 2021
Version 19.8.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0

SQL&gt; select * from v<span class="hljs-variable">$version</span> ; 

BANNER                                                       BANNER_FULL                                                  BANNER_LEGACY                                              CON_ID
------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------ ----------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 -  Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 -  Oracle Database 19c Enterprise Edition Release 19.0.0.          0
Production                                                   Production                                                   0.0 - Production
                                                             Version 19.8.0.0.0


SQL&gt; select count (*) from dba_objects <span class="hljs-built_in">where</span> status=<span class="hljs-string">'INVALID'</span> ; 

  COUNT(*)
----------
         0
</code></pre>
]]></content:encoded></item></channel></rss>