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 →

Verificando a consistência dos instaladores Oracle

Certamente você já fez o download de algum instalador Oracle e ao descompactar e/ou mesmo durante o processo de instalação obteve erros em função do arquivo estar corrompido. Legal mesmo é quando nossas atividades possuem horas determinadas para início e fim pois impactam diretamente no trabalho da organização e descobrimos que o arquivo esta corrompido bem quando vamos utiliza-lo. Complicado não é?

Apesar de não termos culpa se ocorreu alguma queda na Internet ou problemas na copia do arquivo, ainda assim podemos nos sentir culpados pois poderíamos ter evitado este fator de forma muito simples e rápida.

Através da OTN (oracle.com) podemos encontrar um valor cksum para cada arquivo baixado. Quando verificado o numero de retorno deve ser igual ao especificado ao lado do arquivo na OTN, caso contrário o download deve ser refeito.




Via MOS (My Oracle Support) a Oracle disponibiliza o SHA-1 e MD5, ambos utilizados para garantir a consistência de cada arquivo sendo aplicado o mesmo critério acima. Se o retorno for igual ao do MOS o arquivo esta integro caso contrario o download deve ser refeito.

Para que o SHA-1 e MD5 seja apresentado junto aos links de download deve-se clicar em “View Digest Details” conforme demonstrado abaixo:



Verificando a integridade via MD5:


Verificando a integridade via SHA-1:




No Doc Id 549617.1 a Oracle também disponibiliza um vídeo demonstrando a utilização:


Acesse o vídeo, clicando aqui.


Mais informações sobre a verificação de integridade dos arquivos em outras plataformas pode ser acessado através da nota:


Mais informações →

sexta-feira, 4 de julho de 2014

Convertendo manualmente um banco de dados single para RAC

Converter um banco de dados Oracle single para RAC (Real Application Clusters) pode parecer para muitos uma tarefa complicada, cheia de mistérios… mas de fato, NÃO é!

A Oracle nos disponibiliza algumas ferramentas para esta conversão, dentre elas o próprio DBCA (Database Configuration Assistant) e o RCONFIG. Para saber mais sobre a conversão de single para RAC através destas ferramentas acesse Oracle® Real Application Clusters Installation Guide

Neste artigo estará sendo abordado uma conversão MANUAL de single para RAC (2 nodes), mas atente-se, o exemplo parte do ponto em que você já tenha o ambiente RAC montado (GI + ORACLE Database Software) e a base SINGLE que será convertida já migrada/clonada para o ambiente RAC.

Confirmando que nossa base é single.

[oracle@rac1 ~]$ sqlplus
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 4 08:14:17 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Enter user-name: / as sysdba
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
 
SQL> select * from v$active_instances;
 
no rows selected
 
SQL> show parameter cluster;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database                     boolean     FALSE
cluster_database_instances           integer     1
cluster_interconnects                string

Primeiramente criamos os redo log online e a undo tablespace para o segundo nó dos cluster. Cada nó do cluster requer um conjunto individual de redo log e de segmentos de undo. 

Cada instance precisa de no mínimo 2 grupos de redo log online, preferencialmente multiplexados em discos diferentes com a finalidade de recuperação de falhas. 

Para cada instance é atribuído um número de thread, iniciando em 1, quando adicionamos mais arquivos de log é importante nos certificarmos que estamos atribuindo esta nova thread, de modo que os arquivos de log serão adicionados à instância correta.

--REDO THREAD 2
SQL> alter database add logfile thread 2 group 8 ('+REDOA/teste/redo08a.log','+REDOB/teste/redo08b.log') size 500m;
 
Database altered.
 
SQL> alter database add logfile thread 2 group 9 ('+REDOA/teste/redo09a.log','+REDOB/teste/redo09b.log') size 500m;
 
Database altered.
 
SQL> alter database add logfile thread 2 group 10 ('+REDOA/teste/redo10a.log','+REDOB/teste/redo10b.log') size 500m;
 
Database altered.
 
SQL> alter database add logfile thread 2 group 11 ('+REDOA/teste/redo11a.log','+REDOB/teste/redo11b.log') size 500m;
 
Database altered.
 
SQL> alter database enable public thread 2;
 
Database altered.
 
--UNDO TABLESPACE
SQL> create undo tablespace UNDOTBS2 datafile  '+DATA' size 500M;
 
Tablespace created.
Criado os redo logs e a undo para a segunda thread, execute o catclust.sql que ira criar as views de dicionário de dados do RAC. 

O catclust.sql está localizado dentro de $ORACLE_HOME/rdbms/admin ou simplesmente execute conforme abaixo.

SQL> @?/rdbms/admin/catclust
 
Package created.
 
Package body created.
 
PL/SQL procedure successfully completed.
 
View created.
 
Synonym created.
 
Grant succeeded.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
PL/SQL procedure successfully completed.
 
SQL>
Como nossa base ainda não possui nenhuma parametrização para o cluster, precisamos ajustar alguns parâmetros para dar continuidade na conversão da base single para RAC, desta forma criei um pfile para ajustar os parâmetros necessários.

SQL> create pfile from spfile;
 
File created.
teste1.undo_tablespace='UNDOTBS1'
teste2.undo_tablespace='UNDOTBS2'
teste1.instance_number=1
teste2.instance_number=2
teste1.thread=1
teste2.thread=2
*.remote_listener='oracle-scan:1521'
*.cluster_database_instances=2
*.cluster_database=TRUE
Observe que foi especificado o nome da instance frente a algum parâmetros. Isto significa que o parâmetro é único para aquela instance, quando especificado * significa que ele é valido para todas as instances do RAC. 

Foi atribuído a undo tablespace UNDOTBS2 criada acima para a instance teste2 e especificado a thread2 e instance_number para as bases conforme exemplo acima. 

O parâmetro CLUSTER_DATABASE_INSTANCES especifica a quantidade de instances que fazem parte do RAC, enquanto o CLUSTER_DATABASE habilita o database em modo cluster. 

O REMOTE_LISTENER é o “single name” do SCAN (11g +), necessário para balanceamento de carga (load balance) entre os RACs. Caso o ambiente seja 10g é necessário criar uma entrada no TNSNAMES.ora. 

Feito os ajustes no pfile irei subir a base utilizando este pfile modificado, criar um SPFILE dentro do ASM para que seja compartilhado entre as instances e apontar este SPFILE dentro do pfile local da instance em cada nó do RAC.

SQL> show parameter spf
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/11.2.0
                                                 .4/dbhome_1/dbs/spfileteste.o
                                                 ra
 
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
 
[oracle@rac1 ~]$ export ORACLE_SID=teste1
[oracle@rac1 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 4 09:35:11 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup pfile='initteste.ora'
ORACLE instance started.
 
Total System Global Area 1.6034E+10 bytes
Fixed Size                  2269072 bytes
Variable Size            4764729456 bytes
Database Buffers         1.0972E+10 bytes
Redo Buffers              294916096 bytes
Database mounted.
Database opened.
 
SQL> create spfile='+DATA/teste/spfileteste.ora' from pfile='initteste.ora';
 
File created.
[oracle@rac1 ~]$ echo "SPFILE='+DATA/teste/spfileteste.ora'" > $ORACLE_HOME/dbs/initteste1.ora
 
--NODE2
[oracle@rac2 ~]$ echo "SPFILE='+DATA/teste/spfileteste.ora'" > $ORACLE_HOME/dbs/initteste2.ora
--voltando NODE1
[oracle@rac1 ~]$ sqlplus
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 4 09:43:55 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Enter user-name: / as sysdba
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
 
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
Agora é preciso registrar o database e instances no CRS utilizando o utilitário SRVCTL. A partir do momento que o CRS gerencie o database/instances cadastradas com sucesso é possível reiniciar o servidor que as bases serão iniciadas na sequencia sem depender de uma intervenção manual para iniciá-las, claro, desde que não haja falhas.

[oracle@rac1 ~]$ srvctl add database -d teste -o $ORACLE_HOME
[oracle@rac1 ~]$ srvctl add instance -d teste -i teste1 -n rac1
[oracle@rac1 ~]$ srvctl add instance -d teste -i teste2 -n rac2
Subindo o database utilizando o SRVCTL podemos ver que nosso RAC já possui 2 instances ativas:

[oracle@rac1 ~]$ srvctl start database -d teste
[oracle@rac1 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 4 09:52:39 2014
 
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, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
 
SQL> select * from v$active_instances;
 
INST_NUMBER INST_NAME
----------- ------------------------------------------------------------
          1 rac1:teste1
          2 rac2:teste2
Dúvidas, necessidades ou compartilhamentos extra deixem um comentário. 

Referências: 
http://docs.oracle.com/cd/B28359_01/install.111/b28264/cvrt2rac.htm#RILIN1101 http://allthingsoracle.com/convert-single-instance-to-rac-part-2-manually-convert-to-rac/
Mais informações →

quarta-feira, 4 de junho de 2014

Inscrições abertas - GUOB Tech Day 2014


As inscrições para o GUOB TECH DAY 2014 começaram. Garanta sua presença!

Estarão presentes palestrantes como Alex Zaballa, Roy Swonger, Ronald Vargas, Francisco Alvarez, Gustavo Gonzalez, David Peake, Deiby Gomez, Gustavo Rene Antunez, Eduardo Guedes, Wagner Bianchi e Rodrigo Mufalani.

Este ano teremos mais de 28 sessões em 5 linhas: DBA, Desenvolvimento, Business intelligence, Oracle E-Business Suite e Oracle APEX.

INSCRIÇÕES ABERTAS: Acesse o site GUOB TECH DAY 2014
Mais informações →
Postagens mais antigas Página inicial

Translate

Marcadores

Postagens populares