segunda-feira, 25 de julho de 2016

Problemas no startup do Oracle agent 12c: 'Target Interaction Manager failed at Startup java.lang.OutOfMemoryError: Java heap space' - gcagent_errors.log

Na tentativa de iniciar o agent do Oracle Enterprise Manager Coud Control em um servidor me deparei com alguns alertas informando estouro de memória do Java "OutOfMemoryError". Realizei o aumento de memória através do parâmetro agentJavaDefines encontrado dentro do arquivo de configurações $AGENT_HOME/sysman/configemd.properties, contudo o problema persistiu. 

Buscando no MOS encontrei a solução via Doc ID 1902124.1 - "EM12c: emctl start agent Fails With 'Target Interaction Manager failed at Startup java.lang.OutOfMemoryError: Java heap space' reported in gcagent_errors.log"

Abaixo visão do problema e solução.

Tentativa de startup (falha):

srvtst-banco=orcl-> $AGENT_HOME/emctl start agent
Oracle Enterprise Manager Cloud Control 12c Release 5
Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.
Starting agent .............................................. failed.
Fatal agent error: State Manager failed at Startup
Fatal agent error: State Manager failed at Startup
Fatal agent error: State Manager failed at Startup
EMAgent is Thrashing. Exiting watchdog
Consult emctl.log and emagent.nohup in: /u01/app/oracle/agent/agent_inst/sysman/log

Verificando log1:

srvtst-banco=orcl-> vi /u01/app/oracle/agent/agent_inst/sysman/log/emagent.nohup

2016-07-02 14:56:02,661 [1:main] WARN - Missing filename for log handler 'opsscfg'
Agent is going down due to an OutOfMemoryError

Verificando log2:
srvtst-banco=orcl-> vi /u01/app/oracle/agent/agent_inst/sysman/log/gcagent.log

2016-07-02 14:56:16,299 [1:main] FATAL - Fatal error: Target Interaction Manager failed at Startup
java.lang.OutOfMemoryError: Java heap space

Executando procedimento do Doc ID 1902124.1 

1. Parando todos os processos do agent:

$AGENT_HOME/bin/emctl stop agent
ps -ef | grep java | grep 'diretório do agent'
ps -ef | grep perl

Finalize qualquer processo JAVA / PERL ativo no diretório do Oracle agent (AGENT_HOME)

kill -9  numero_do_processo

2. Movendo arquivos antigos para um novo diretório:

srvtst-banco=orcl-> mv $AGENT_HOME/sysman/emd/state/* /orabackup/bkp_cloud/

3. Executando o "clearstate agent"

srvtst-banco=orcl-> $AGENT_HOME/bin/emctl clearstate agent
Oracle Enterprise Manager Cloud Control 12c Release 5
Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.
EMD clearstate completed successfully


NOTA: O agent mantém internamente informações e status dos componentes que ele monitora, afim de evitar um tráfego de rede desnecessário junto ao OMS, contudo se ocorrer alguma mudança no alvo monitorado o agent inicia o upload das informações. O comando clearstate agent obriga o agente a realizar uma nova leitura de cada componentes e reenvia-las ao OMS.

Segundo a DOC, este comando deve ser executado apenas quando o suporte da Oracle recomenda.

4. Fazendo backup do arquivo de parâmetros e aumentando a memória Java:

srvtst-banco=orcl-> cd $AGENT_HOME/sysman/config
srvtst-banco=orcl-> cp emd.properties emd.properties.bkp

atual:
#
# These are the optional Java flags for the agent
#
agentJavaDefines=-Xmx128M -XX:MaxPermSize=96M

para:

#
# These are the optional Java flags for the agent
#
agentJavaDefines=-Xmx512M -XX:MaxPermSize=96M

* alterado o valor do -Xmx de 128M para 512M

5. Iniciando novamente o agent:

srvtst-banco=orcl-> $AGENT_HOME/bin/emctl start agent
Oracle Enterprise Manager Cloud Control 12c Release 5
Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.
Starting agent ........................... started.
srvtst-banco=orcl-> $AGENT_HOME/bin/emctl status agent
Oracle Enterprise Manager Cloud Control 12c Release 5
Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.
---------------------------------------------------------------
Agent Version          : 12.1.0.5.0
OMS Version            : 12.1.0.5.0
Protocol Version       : 12.1.0.1.0
Agent Home             : /u01/app/oracle/agent/agent_inst
Agent Log Directory    : /u01/app/oracle/agent/agent_inst/sysman/log
Agent Binaries         : /u01/app/oracle/agent/core/12.1.0.5.0
Agent Process ID       : 18183
Parent Process ID      : 18003
Agent URL              : https://srvtst:3872/emd/main/
Local Agent URL in NAT : https://srvtst:3872/emd/main/
Repository URL         : https://srvtst:4900/empbs/upload
Started at             : 2016-07-02 15:02:31
Started by user        : oracle
Operating System       : Linux version 2.6.39-400.126.1.el5uek (amd64)
Last Reload            : (none)
Last successful upload                       : 2016-07-02 15:03:01
Last attempted upload                        : 2016-07-02 15:03:01
Total Megabytes of XML files uploaded so far : 0.41
Number of XML files pending upload           : 0
Size of XML files pending upload(MB)         : 0
Available disk space on upload filesystem    : 48.47%
Collection Status                            : Collections enabled
Heartbeat Status                             : Ok
Last attempted heartbeat to OMS              : 2016-07-02 15:02:52
Last successful heartbeat to OMS             : 2016-07-02 15:02:52
Next scheduled heartbeat to OMS              : 2016-07-02 15:03:53

---------------------------------------------------------------
Agent is Running and Ready
srvtst-banco=orcl->


Espero ter ajudado.!
Mais informações →

sábado, 9 de julho de 2016

Monitorando as baterias no Exadata


As controladoras de disco no Exadata Storage e servidores de banco de dados possuem uma bateria que permite a utilização de um cache de gravação, seu proposito é acelerar o desempenho de operações de escrita uma vez que os blocos são mantidos inicialmente em cache e apenas escritos em disco quando o cache estiver cheio ou uma requisição de escrita exigida. (WriteBack) 

Se a carga da bateria se degrada de tal forma que já não é mais possivel garantir a proteção dos dados em cache para uma perda de energia de 48 horas ou superior, então o cache de gravação é "desativado" e a controladora de disco passa a realizar além das gravações em cache as gravações diretas no disco o que acaba prejudicando o desempenho/tempo total de gravação. (WriteThrough)

[root@db01 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aALL | grep "Cache Policy" | head -n 2
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU

O Exadata Storage Server gera um alerta quando a capacidade de carga da bateria é insuficiente ou quando a temperatura é alta, e quando a bateria deve ser substituída. 

A capacidade de carga da bateria se degrada ao longo do tempo e sua expectativa de vida é proporcional a temperatura de funcionamento. 

A tabela a seguir demonstra a expectativa de vida da bateria.



A temperatura da bateria pode ser verifica atraves do seguinte comando:

[root@db01 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -a0 | grep BatteryType; /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -a0 | grep -i temper
BatteryType: iBBU08
Temperature: 23 C
  Temperature                             : OK

Em nota a Oracle indica que se a temperatura for maior ou igual a 55 graus Celsius, deve ser determinado a causa e corrigido o problema. Para monitorarmos a capacidade da bateria utilizamos o seguinte comando:

[root@db01 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -a0 | egrep  "Full Charge|Max Error" | sort
  Full Charge Capacity: 1324 mAh
  Max Error: 0 %

Uma ação proativa de troca da bateria pode ser realizada quando a capacidade (Full Charge Capacity) for menor que 800 mAh e a quantidade máxima de erros (Max Error) for inferior a 10%. 

Realize um substituição imediata de qualquer bateria onde a capacidade for inferior a 674 mAh ou a quantidade máxima de erros for superior a 10%. 

Podemos filtrar ainda por "Battery Replacement required" para saber se a troca é necessária ou não.

[root@db01 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -a0 | grep "Battery Replacement required"
  Battery Replacement required            : No

Para visualizar todas as informações:

[root@db01 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -a0

BBU status for Adapter: 0

BatteryType: iBBU08
Voltage: 3827 mV
Current: 0 mA
Temperature: 23 C
Battery State: Optimal
Design Mode  : 48+ Hrs retention with a non-transparent learn cycle and moderate service life.

BBU Firmware Status:

  Charging Status              : None
  Voltage                                 : OK
  Temperature                             : OK
  Learn Cycle Requested                   : No
  Learn Cycle Active                      : No
  Learn Cycle Status                      : OK
  Learn Cycle Timeout                     : No
  I2c Errors Detected                     : No
  Battery Pack Missing                    : No
  Battery Replacement required            : No
  Remaining Capacity Low                  : No
  Periodic Learn Required                 : No
  Transparent Learn                       : No
  No space to cache offload               : No
  Pack is about to fail & should be replaced : No
  Cache Offload premium feature required  : No
  Module microcode update required        : No

BBU GasGauge Status: 0x0180
  Relative State of Charge: 58 %
  Charger System State: 1
  Charger System Ctrl: 0
  Charging current: 0 mA
  Absolute state of charge: 51 %
  Max Error: 0 %
  Battery backup charge time : 48 hours +

BBU Capacity Info for Adapter: 0

  Relative State of Charge: 58 %
  Absolute State of charge: 51 %
  Remaining Capacity: 765 mAh
  Full Charge Capacity: 1324 mAh
  Run time to empty: Battery is not being charged.
  Average time to empty: 1 Hour, 32 Min.
  Estimated Time to full recharge: Battery is not being charged.
  Cycle Count: 1

BBU Design Info for Adapter: 0

  Date of Manufacture: 01/21, 2014
  Design Capacity: 1500 mAh
  Design Voltage: 4100 mV
  Specification Info: 0
  Serial Number: 3384
  Pack Stat Configuration: 0x0000
  Manufacture Name: LS36691
  Firmware Version   :
  Device Name: bq27541
  Device Chemistry: LION
  Battery FRU: N/A
  Transparent Learn = 0
  App Data = 0

BBU Properties for Adapter: 0

  Auto Learn Period: 28 Days
  Next Learn time: None  Learn Delay Interval:1 Hours
  Auto-Learn Mode: Disabled
  BBU Mode = 7

Exit Code: 0x00

Replacing Batteries in Disk Controllers: 

If the battery charge capacity in the disk controllers falls below the minimum threshold, then Oracle will replace the failed batteries at no extra charge, if the system is covered either by the Oracle Premier Support for Systems or occurs during the warranty period. For customers with Premier Support for Systems, Oracle attempts to proactively replace the batteries in Oracle Exadata Rack before the end of the estimated lifetime, on a best efforts basis.

Referência:
http://docs.oracle.com/cd/E50790_01/doc/doc.121/e51951/app_fru.htm#DBMMN21578
Mais informações →

terça-feira, 16 de fevereiro de 2016

Removendo TAGs RTF no Oracle

O RTF (Rich Text Format) ou "Formato Rico de Texto" é um formato de arquivo de documento desenvolvido e de propriedade da Microsoft para intercâmbio de documentos entre diversas plataformas. Sua base consiste em um formato de texto simples permitindo que a maioria dos processadores de texto sejam capazes de ler e escrever documentos RTF. 

Embora legível(human-readable), visualizar as TAGs RTF quando utilizamos este tipo de documento pode gerar certo desconforto ou mesmo uma grande poluição visual.

Muitas ferramentas disponíveis na internet permitem uma "leitura limpa" do formato (sem as tags), e/ou mesmo sua conversão para outros tipos de formatos, como doc, pdf, etc. mas, recuperar um RTF diretamente no banco de dados Oracle sem as TAGs também é possível.
--criando uma tabela exemplo com RTF
SQL> CREATE TABLE EXEMPLO_RTF
  AS
  SELECT '{\rtf1\ansi\deff0{\fonttbl{\f0\fnil Arial;}{\f1\fnil\fcharset0 Arial;}{\f2\fnil MS Sans Serif;}}
{\colortbl ;\red0\green0\blue0;\red0\green0\blue128;}
\viewkind4\uc1\pard\cf1\lang1046\f0\fs20 Teste RTF ...........................XX
\par XXXXXX - TESTE RTF - XXXXXX
\par 
\par 
\par 
\par Isto é um teste no formato RTF
\c1.\f0 
\par \cf2\f2\fs16 
\par \cf1\f0\fs20  
\par }' AS texto_rtf
    FROM DUAL;

Table created.
--criando a package rtf que executa a chamada do java rtf
SQL> CREATE OR REPLACE PACKAGE rtf
  IS
      PROCEDURE convertToText ( rtf_in IN VARCHAR2, plain_text OUT VARCHAR2 )
      IS
         language java
         name 'rtf.convertToText( java.lang.String, java.lang.String[] )';

      FUNCTION to_text ( rtf_in IN VARCHAR2 )
      RETURN VARCHAR2
      IS
         language java
         name 'rtf.to_text( java.lang.String ) return java.lang.String';

  END rtf;
  /

Package created.
--criando o rtf java
SQL> CREATE OR REPLACE AND COMPILE
JAVA SOURCE NAMED "rtf"
AS
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.rtf.RTFEditorKit;
import java.io.*;

public class rtf extends Object
{
   public static void convertToText( java.lang.String p_in,
                                     java.lang.String[] p_out )
   throws IOException, BadLocationException
   {
      // test for null inputs to avoid java.lang.NullPointerException when input is null
      if ( p_in != null )
      { RTFEditorKit kit = new RTFEditorKit();
        Document doc = kit.createDefaultDocument();
        kit.read(new StringReader(p_in), doc, 0);
        p_out[0] = doc.getText(0, doc.getLength());
      }
      else p_out[0] = null;
   }

   public static String to_text(String p_in)
   throws IOException, BadLocationException
   {
      // test for null inputs to avoid java.lang.NullPointerException when input is null
      if (p_in != null)
      { RTFEditorKit kit = new RTFEditorKit();
        Document doc = kit.createDefaultDocument();
        kit.read(new StringReader(p_in), doc, 0);
        return doc.getText(0, doc.getLength());
      }
      else return null;
   }
}
/

Java created.
--exemplo de chamada1
SQL> SELECT rtf.to_text( texto_rtf ) AS TEXTO
  2  FROM EXEMPLO_RTF;

TEXTO
--------------------------------------------------------------------------------
Teste RTF ...........................XX
XXXXXX - TESTE RTF - XXXXXX



Isto é um teste no formato RTF.




--exemplo de chamada2
SQL> set lines 200
SQL> set serveroutput on
SQL> DECLARE
   l_text_out VARCHAR2(4000);
BEGIN
     rtf.convertToText
      (
       '{\rtf1\ansi\deff0{\fonttbl{\f0\fnil Arial;}{\f1\fnil\fcharset0 Arial;}{\f2\fnil MS Sans Serif;}}
{\colortbl ;\red0\green0\blue0;\red0\green0\blue128;}
\viewkind4\uc1\pard\cf1\lang1046\f0\fs20 Teste RTF ...........................XX
\par XXXXXX - TESTE RTF - XXXXXX
\par 
\par 
\par 
\par Isto é um teste no formato RTF
\c1.\f0 
\par \cf2\f2\fs16 
\par \cf1\f0\fs20  
\par }
'
       , l_text_out
      );

    DBMS_OUTPUT.PUT_LINE( l_text_out );

END;
/
Teste RTF ...........................XX
XXXXXX - TESTE RTF - XXXXXX



Isto é um teste no formato RTF.




PL/SQL procedure successfully completed.

Referencia:
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:25695084847068
Mais informações →

segunda-feira, 28 de dezembro de 2015

quinta-feira, 5 de novembro de 2015

Exadata: ssh to oracle account gives access denied.

https://bandrtpeg.wordpress.com/2012/03/23/exadata-ssh-to-oracle-account-gives-access-denied/

[root@ndcxdb01 log]# pam_tally2
Login           Failures Latest failure     From
oracle             53    12/15/11 16:12:05  10.108.26.153

From above its clear that account was locked due to 53 number of failure attempts.

In Exadata( Linux), ssh behavior is  mainly control by file /etc/pam.d/sshd and login by /etc/pam.d/login.

pam_tally2 -r -u oracle  # this will reset oracle account.
Mais informações →

segunda-feira, 16 de março de 2015

Alterando o endereço do SCAN Listener

O SCAN(Single Client Access Name) para quem ainda não o conhece, é uma nova característica introduzida no Oracle Real Application Clusters (RAC) a partir da versão 11gR2 ao qual propõe um nome único (single name) para acesso ao Oracle Database rodando em cluster.




O benefício é que as conexões do client não precisam mais serem alteradas se um node for adicionado ou removido do cluster além de proporcionar load balance e failover para as conexões do client.


O SCAN Listener é criado e configurado durante a implementação do Grid Infrastructure podendo ser:

1. Um single name no DNS(Domain Name Service):

Necessário solicitar ao administrador de rede que crie um nome único no DNS que resolva 3 endereços de IP utilizando o algoritmo round-robin.

2. ou; Utilizando o Grid Naming Service(GNS):

Onde são informados 3 IPs que serão adquiridos a partir de um serviço DHCP que cria e resolve o nome único de entrada para o SCAN.

Apesar de ser criado e configurado no deploy do GI ainda podemos gerenciar o SCAN posteriormente.

Abaixo segue exemplo de como trocar o endereço(single name) do SCAN:

Testando a resolução do novo single name utilizando o nslookup:

[root@teste01 ~]$ nslookup oracle-scantst2
Server:         192.168.250.203
Address:        192.168.250.203#53
 
Name:   oracle-scantst2.oraclehome.com.br
Address: 192.168.250.197
Name:   oracle-scantst2.oraclehome.com.br
Address: 192.168.250.198

Logado com o usuário GRID:

GRID-> srvctl config scan
SCAN name: oracle-scantst, Network: 1/192.168.250.0/255.255.255.0/bond0
SCAN VIP name: scan1, IP: /oracle-scantst/192.168.250.196
SCAN VIP name: scan2, IP: /oracle-scantst/192.168.250.195
GRID->

Parar o scan e scan listener:

GRID-> srvctl stop scan_listener
GRID-> srvctl stop scan
GRID-> srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is not running
SCAN VIP scan2 is enabled
SCAN VIP scan2 is not running

Logado como ROOT alterar o endereço “single name“:



ROOT-> srvctl modify scan -n oracle-scantst2

Logando novamente como GRID, verificar as alterações:

GRID-> srvctl config scan
SCAN name: oracle-scantst2, Network: 1/192.168.250.0/255.255.255.0/bond0
SCAN VIP name: scan1, IP: /oracle-scantst2/192.168.250.198
SCAN VIP name: scan2, IP: /oracle-scantst2/192.168.250.197

Efetuar o update da configuração do serviço (-u) e iniciar:



GRID-> srvctl modify scan_listener -u
GRID-> srvctl start scan_listener
GRID-> srvctl status scan
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node teste02
SCAN VIP scan2 is enabled
SCAN VIP scan2 is running on node teste01
GRID->
Mais informações →

segunda-feira, 22 de setembro de 2014

Escolhendo meu DBID

Para que a alteração de DBID seria útil?

Bom, pode ser pelo mero prazer de ter uma base com o DBID do seu gosto (1,2,3..24..666) ou pelo fato da licença da sua aplicação estar vinculada ao DBID do banco de modo que se ele for alterado a aplicação para de funcionar!

Antes de começar lembre-se que é de suma importância executar um backup FULL do database!

Verificando o dbid atual da base:

SQL> select dbid from v$database;
 
      DBID
----------
3464458105

Efetuando um shutdown limpo da base e na sequencia abrindo como READ ONLY:

SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup open read only;
ORACLE instance started.
 
Total System Global Area 1138368512 bytes
Fixed Size                  1364088 bytes
Variable Size             318771080 bytes
Database Buffers          788529152 bytes
Redo Buffers               29704192 bytes
Database mounted.
Database opened.

Agora basta executar o script abaixo que ele irá pedir o NOVO DBID da base e após você inserir ele irá fazer todo o trabalho. Baixe o script clicando AQUI.

SQL> set serveroutput on
SQL> declare
   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:='Recuperando DBID Atual.' ;
      select dbid, name, name into v_old_dbid, v_new_db_name, v_old_db_name  from v$database;

      select TO_NUMBER('&NOVO_DBID') into v_new_dbid from dual;

      w_action:='Executando a Procedure (dbms_backup_restore.nidbegin).';
      dbms_output.put_line('New NAME='||V_NEW_DB_NAME);
      dbms_output.put_line('Old NAME='||V_OLD_DB_NAME);
      dbms_output.put_line('New DBID='||V_NEW_DBID);
      dbms_output.put_line('Old DBID='||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:='Executando a Procedure (dbms_backup_restore.nidprocesscf).';
      dbms_backup_restore.nidprocesscf( v_chgdbid,v_chgdbname);

      dbms_output.put_line('ControlFile.......: ');
      dbms_output.put_line('  => Change Name..: '  ||to_char(v_chgdbname));
      dbms_output.put_line('  => Change DBID..: '  ||to_char(v_chgdbid));

      w_action := 'Alterando os Datafiles, procedure (dbms_backup_restore.nidprocessdf).';
      for i in (select file#,name from v$datafile)
      loop
         dbms_output.put_line('DataFile..........: '  ||i.name);
         dbms_output.put_line('  => Skipped......: '  ||to_char(v_skipped));
         dbms_output.put_line('  => Change Name..: '  ||to_char(v_chgdbname));
         dbms_output.put_line('  => Change DBID..: '  ||to_char(v_chgdbid));
         dbms_backup_restore.nidprocessdf(i.file#,0, v_skipped,v_chgdbid,v_chgdbname);
      end loop;

      w_action := 'Alterando os Tempfiles, procedure (dbms_backup_restore.nidprocessdf).';
      for i in (select file#,name from v$tempfile)
      loop
         dbms_output.put_line('TempFile..........: '  ||i.name);
         dbms_output.put_line('  => Skipped......: '  ||to_char(v_skipped));
         dbms_output.put_line('  => Change Name..: '  ||to_char(v_chgdbname));
         dbms_output.put_line('  => Change DBID..: '  ||to_char(v_chgdbid));
         dbms_backup_restore.nidprocessdf(i.file#,1,v_skipped,v_chgdbid,v_chgdbname);
      end loop;
   dbms_backup_restore.nidend;
 end;
 /
Enter value for novo_dbid: 1
old  16:      select TO_NUMBER('&NOVO_DBID') into v_new_dbid from dual;
new  16:      select TO_NUMBER('1') into v_new_dbid from dual;
New NAME=DBTRN
Old NAME=DBTRN
New DBID=1
Old DBID=3464458105
ControlFile.......:
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd02/oradata/dbtrn/system01.dbf
=> Skipped......:
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd02/oradata/dbtrn/sysaux01.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd02/oradata/dbtrn/users01.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd02/oradata/dbtrn/veys01.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd02/oradata/dbtrn/FAROL01.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd02/oradata/dbtrn/teste01.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd02/oradata/dbtrn/teste02.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd03/oradata/dbtrn/system02.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
DataFile..........: /oraprd03/oradata/dbtrn/undotbs01.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
TempFile..........: /oraprd02/oradata/dbtrn/temp01.dbf
=> Skipped......: 0
=> Change Name..: 0
=> Change DBID..: 1
 
PL/SQL procedure successfully completed.

Terminado a execução do script podemos ver que todos os arquivos tiveram o DBID alterado para 1 e que nenhum foi pulado (SKIPPED). Efetuando novamente um shutdown e abrindo a base com OPEN RESETLOGS pois alteramos o controlfile!

SQL> startup mount
ORACLE instance started.
 
Total System Global Area 1138368512 bytes
Fixed Size                  1364088 bytes
Variable Size             318771080 bytes
Database Buffers          788529152 bytes
Redo Buffers               29704192 bytes
Database mounted.
SQL> alter database open resetlogs;
 
Database altered.

Verificando o novo DBID do banco de dados:

SQL> select dbid from v$database;
 
      DBID
----------
         1

No script também existe a variavel v_new_db_name que lhe mertite alterar junto com o DBID o DBNAME da base, basta ajustá-lo e voilá! tudo de uma só vez.

Referências:
Mais informações →
Postagens mais antigas Página inicial

Translate

Marcadores

Postagens populares