Arquivo mensal: maio 2014

Matando Sessões no Oracle Database

Neste post falaremos sobre diversas maneiras de eliminar sessões num Servidor Oracle. O processo de matar sessões em um banco de dados Oracle deve ser feito com muito cuidado, pois se você eliminar uma sessão de um processo de servidor, o instância poderá
sofrer um processo de shut down.

Para isso devemos identificar primeiramente qual e a sessão que devera ser eliminada.
Para identificar de forma mais precisa qual a sessão que deverá ser eliminada, você deve pesquisar nas visões [G]V$SESSION e [G]V$PROCESS, o prefixo [G] refere as visões do banco de dados em ambientes com Oracle RAC.

Segue abaixo um exemplo de script para identificar as sessões no banco de dados:

SELECT s.inst_id,
s.sid,
s.serial#,
p.spid,
s.username,
s.program
FROM   gv$session s
JOIN gv$process p
ON p.addr = s.paddr
AND p.inst_id = s.inst_id
WHERE  s.type != ‘BACKGROUND’;

O select acima esta identifica as sessões em ambiente RAC para ambiente  single instance segue o select abaixo:

SELECT s.sid,
s.serial#,
p.spid,
s.username,
s.program
FROM   v$session s
JOIN v$process p
ON p.addr = s.paddr
WHERE  s.type != ‘BACKGROUND’;

Com os valores de SID, SERIAL#, SPID da sessão desejada utilizaremos os métodos abaixo para matar a sessão.

1 – Podemos usar o comando ALTER SYSTEM KILL SESSION

A sintaxe básica para matar uma sessão é esta abaixo:

ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’;

Em um ambiente com Oracle RAC, além dos valores SID e SERIAL#,
pode-se informar o valor de INST_ID (instrução opcional),  que indica qual a instância que se encontra a sessão.
Essa opção permite que se remova uma sessão de um Oracle RAC mesmo estando conectado num nó diferente.

ALTER SYSTEM KILL SESSION ‘SID,SERIAL#,@INST_ID’;

O comando acima não mata a sessão imediatamente, ele pede apenas para ela se matar. Nesses casos a sessão tera o status ˜marked for kill˜es.tes casos, a sessão terá um status de “marked for kill”. Se a sessão tiver uma transação ativa, um rollback deverá ocorrer e somente depois desta operação é que o usuário receberá a mensagem. Se a sessão estiver ociosa, o usuário só receberá a mensagem de erro quando tentar usar novamente o sistema vinculado àquela sessão.

O comando ALTER SYSTEM KILL SESSION possui a cláusula IMMEDIATE, que pode ser utilizada para retornar o controle da sessão imediatamente.  Sem esta cláusula, ao executá-lo, você terá que aguardar o rollback de alguma transação existente.
Segue abaixo o exemplo da sintaxe ALTER … KILL SESSION IMMEDIATE:

ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’  IMMEDIATE; – para ambiente   single instance
ALTER SYSTEM KILL SESSION ‘SID,SERIAL#,@INST_ID’  IMMEDIATE;  para ambiente RAC

2 – Usando o comando comando ALTER SYSTEM KILL DISCONNECT SESSION

A  sintaxe ALTER SYSTEM DISCONNECT SESSION  é um método alternativo para matar sessões Oracle.
Ao contrário do comando  KILL SESSION que pede a sessão para matar-se, o comando DISCONNECT SESSION mata o processo servidor dedicado, que é equivalente a matar o processo do servidor do sistema operacional. A sintaxe básica é semelhante ao  comando KILL SESSION com a adição da cláusula POST_TRANSACTION (aguarda transações em execução terminarem, sem forçar rollback) ou IMMEDIATE (finaliza e faz rollback nas transações em execução, imediatamente).

ALTER SYSTEM KILL DISCONNECT SESSION ‘SID,SERIAL#’  IMMEDIATE;
ALTER SYSTEM KILL DISCONNECT SESSION ‘SID,SERIAL#’  POST_TRANSACTION;

para ambiente RAC executamos o seguinte commando:

ALTER SYSTEM KILL DISCONNECT SESSION ‘SID,SERIAL#,@INST_ID’ IMMEDIATE;

Este comando significa que você nunca deve precisar usar comandos para o sistema operacional para matar sessões, o que reduz as chances de matar o processo errado.
Além disso, caso as clausulas POST_TRANSACTION or IMMEDIATE seja omitidas na sintaxe do comando,  você receberá uma mensagem de erro:

SQL> alter system disconnect session ‘30,7’;
alter system disconnect session ‘30,7’
*
ERROR at line 1:
ORA-02000: missing POST_TRANSACTION or IMMEDIATE keyword

SQL>

3 – Eliminando Sessões através do Sistema Operacional

Em Ambiente WINDOWS

Para matar a sessão no sistema operacional Windows, primeiro devemos identificar a sessão e em seguida, substituir os valores relevantes SID e SPID para o seguinte comando emitido a partir da linha de comando:

C:>  orakill  ORACLESID  spid

Após a execução do comando acima, o processo e morto imediatamente e todos os recursos são liberados.

Em Ambiente Linux / UNIX

Para matar a sessão em sistemas operacionais UNIX ou Linux,  primeiro identificar a sessão, em seguida, substituir o relevante SPID para o comando a seguir.

kill spid

Se depois de alguns minutos, o processo não parou, encerrar a sessão usando o seguinte.

kill -9 spid

Espero ter ajudado. Ate o próximo post.

Oracle Flashback

O Objetivo do post desta semana é proporcionar uma visão básica da ferramenta Flashback da ORACLE e de seus principais recursos.
A Oracle, traz a partir da versão 9i e vem evoluindo com as  versões 10g e 11g, constituindo se  mais um recurso aos administradores de banco de dados chamado  pela própria ORACLE de flashback, uma ferramenta capaz de minimizar o impacto no caso de uma perda de dados ou de objetos do banco de dados,
contribuindo com a disponibilidade e reduzindo o tempo de serviço acordado com a empresa, chamado Service Level Agreement (SLA).
Embora haja diversos recursos aliados a esse objetivo, o tempo de disponibilidade e de solução para os incidentes no banco de dados estão cada vez mais agressivos, fazendo com que os DBAs tenham que recorrer a planos emergenciais cada vez mais assertivos, para que consigam suportar as demandas, tais como o flashback.

Oracle Flashback Technology

Oracle Flashback Technology é um grupo de ferramentas do banco de dados Oracle que permite o administrador verificar um determinado estado passado no banco de dados e/ou retornar objetos para um estado anterior sem usar o recurso Point-in-Time Recovery.

Utilizando esse recurso conseguimos realizar as seguintes tarefas:

  • Executar consultas para retornar dados passados;
  • Executar consultas para retornar dados referentes aos objetos do banco de dados que mostra os detalhes históricos de mudanças;
  • Recuperar tabelas ou linhas de um determinado ponto;
  • Voltar uma transação e suas dependências enquanto o banco de dados permanece online;

Há sete tipos ou modos de utilização desse recurso, sendo eles:

  • Flashback Drop;
  • Flashback Query;
  • Flashback Version Query;
  • Flashback Transaction Query;
  • Flashback Table;
  • Flashback Data Archive;
  • Flashback Database;

A. Flashback Drop
O método de Flashback Drop utiliza a lixeira do banco de dados Oracle (Recycle Bin) para recuperar os objetos.
Caso haja espaço suficiente no tablespace (partição lógica), objetos removidos do banco de dados poderão ser restaurados para seus schemas originais com os indexes, triggers, e constraints .

B. Flashback Query
O método de Flashback Query recupera informações de dados que sofreram alteração no passado. A query explicitamente referência o tempo passado ou o número  de mudança no sistema (SCN).  A mesma retorna dados que sofreram commit e que estava atualmente em um ponto do passado.
Esse método é utilizado principalmente para recuperar perda de dados ou dados inseridos erroneamente no banco de dados .

C. Flashback Version Query
O método Flashback Version Query permite que você recupere dados obsoletos do banco de dados e fornece um nível mais preciso de detalhes do que o método de Flashback Query. Enquanto os outros métodos recuperam dados de um determinado tempo, esse método irá retornar o histórico inteiro de uma coluna da tabela entre dois SCNs ou períodos .

D. Flashback Transaction Query
Nesse método de Flashback, não há referencia às tabelas que sofreram transações de DML (Data Manipulation Language), invés disso,  esse recurso utiliza consultas nos dados da tabela do dicionário de dados do banco de dados, chamada Flashback_Transaction_Query.
Essa tabela fornece informações de todas as mudanças no banco de dados, incluindo operações de DDL (Data Definition Language),
dessa maneira o administrador ou usuário poderá recuperar dados das transações ocorridas em um determinado perÌodo e até mesmo o  comando para retornar dados passados.

E. Flashback Table
Esse método permite a recuperação de linhas da tabela a partir de um determinado período passado, incluindo os indexes, triggers e constraints  enquanto o banco de dados permanece online, aumentado a disponibilidade do banco de dados.

F. Flashback Data Archive
Esse método está disponível a partir da versão do Oracle 11g, e é implementado nativamente no Oracle, o administrador deve escolher uma ou mais áreas de repositório, escolher o período de retenção para os objetos e então marcar as apropriadas tabelas que deverão ser mapeadas.
Esse método somente grava operações de update e delete na área de repositório .

G. Flashback Database
Esse recurso permite a recuperação do banco de dados para um determinado período passado, é muito útil para casos de teste, onde o usuário necessita  recuperar o banco de dados no estado inicial após o ciclo de teste. Esse método utiliza a área flashback nomeada Flashback Database Logs.

EXEMPLOS DE FLASHBACK

exemplos FlashBack:

  • FLASHBACK DROP

SQL> DROP TABLE tab;

Table dropped.

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
—————- —————————— ———— ——————-
TAB              BIN$/SatkkavEDfgQKjAhdkgmg==$0 TABLE        2014-07-01:14:09:34
SQL>

SQL> flashback table tab to  before drop ;

Flashback complete.

SQL> desc tab
Name                                      Null?    Type
—————————————– ——– —————————-
X                                                  NUMBER
Y                                                  VARCHAR2(10)

  • FLASHBACK TABLE

SQL> ALTER TABLE tab enable ROW MOVEMENT;

Table altered.

SQL>  select current_scn from v$database;

CURRENT_SCN
———–
975869

SQL> delete tab where x like ‘1%’;

2 rows deleted.

SQL> commit;

Commit complete.

SQL>  select current_scn from v$database;

CURRENT_SCN
———–
975922

SQL> select count(*) from tab;

COUNT(*)
———-
8

SQL> FLASHBACK TABLE tab to scn 975869;

Flashback complete.

SQL> select count(*) from tab;

COUNT(*)
———-
10

  • FLASHBACK VERSION QUERY

SQL>  SELECT current_scn, TO_CHAR(SYSTIMESTAMP, ‘YYYY-MM-DD HH24:MI:SS’) FROM v$database;

CURRENT_SCN TO_CHAR(SYSTIMESTAMMP, ‘YYYY-MM-DD HH24:MI:SS’)
———– ——————-
976410 2014-07-01 14:33:29

SQL> select count(*) from tab;

COUNT(*)
———-
10

SQL> delete  tab where x like ‘1%’;

2 rows deleted.

SQL> commit;

Commit complete.

SQL> select count(*) from tab;

COUNT(*)
———-
8

SQL>  SELECT current_scn, TO_CHAR(SYSTIMESTAMP, ‘YYYY-MM-DD HH24:MI:SS’) FROM v$database;

CURRENT_SCN TO_CHAR(SYSTIMESTAMMP, ‘YYYY-MM-DD HH24:MI:SS’)
———– ——————-
976506 2014-07-01 14:35:37

Ou

SQL> SELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime,
versions_xid, versions_operation, X
from  tab
VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP (‘2014-07-01 14:33:29′,’YYYY-MM-DD HH24:MI:SS’)
and TO_TIMESTAMP (‘2014-07-01 14:35:37′,’YYYY-MM-DD HH24:MI:SS’)
WHERE x = 1;

VERSIONS_STARTSCN  VERSIONS_STARTTIME     VERSIONS_ENDSCN   VERSIONS_ENDTIME          VERSIONS_XID    V  X
—————– ———————- —————-   ———————   —————-  – —
976440  01-JUL-14 02.34.34 PM            976440   01-JUL-14 02.34.34 PM   0100030066020000  D  1

SQL> SELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime,
versions_xid, versions_operation, X
from  tab
VERSIONS BETWEEN  SCN   976410 and 976506
WHERE x = 1;

VERSIONS_STARTSCN  VERSIONS_STARTTIME     VERSIONS_ENDSCN   VERSIONS_ENDTIME          VERSIONS_XID    V  X
—————– ———————- —————-   ———————   —————-  – —
976440  01-JUL-14 02.34.34 PM            976440   01-JUL-14 02.34.34 PM   0100030066020000  D  1

Vimos durante o post que a tecnologia Flashback é muito útil quando precisamos realizar recuperações lógicas envolvendo perda de dados ou alterações  em objetos realizados erroneamente no banco de dados, sendo um recurso mais rápido comparado ao tempo de recuperação de um banco de dados físico.
Essa tecnologia não substitui as estratégias de backup e recovery, visto que a mesma inclui além das recuperações lógicas, a recuperação física.
O DBA  que utilizar esse tipo de recurso deve mapear os recursos afetados de acordo com o uso dessa tecnologia, por exemplo,
uma má avaliação da área de retenção utilizada por essa tecnologia poderá ocasionar impacto na infraestrutura de todo o ambiente.
Outro fator importante deve ser a criação de uma política interna nas empresas para que os usuários não utilizem esse recurso como um aliado no dia a dia, visto que poderá impactar nas atividades administrativas do DBA da empresa.

Certificação OCP 11g

Esse post é a continuação do assunto iniciado no ultima semana, falaremos da certificação OCP.

O que é a OCP?

Assim como a OCA, a OCP  Oracle Certified Professional também foi atualizada e passou a se chamar ACP  (Administrator Certified Professional). Esse é o nível de certificações Oracle para administradores, neste nível o candidato fará uma prova.  Ela é obrigatória para que o candidato  se torne um ACP .

Atualmente, para obter a certificação “Administrator Certified Associate” (ACA), é necessário realizar um exame da Oracle University em um centro autorizado Pearson Vue.

Para quem já possui  certificação  ACP(antiga OCA), esta é a única prova necessária para conquistar a certificação  ACP(antiga OCP).

  • 1Z0-053 Oracle Database 11g: Administration II.

Para obtenção desta certificação, é obrigatório a realização de treinamento oficial num centro treinamento recomendado Oracle University.

Após a aprovação no exame 1Z0-053, o candidato deverá fazer a submissao do ID do treinamento oficial no site da person vue e aguardar o OK da Oracle e dentro de 40 a 60 dias, o candidato estara recebendo o certificado pelos correios.

Para se tornar um Oracle Certified Professional é a oportunidade que o profissional tem de ganhar mais visibilidade e um maior acesso as oportunidades oferecidas pelo mercado de TI.

Captura de Tela 2014-07-08 às 12.38.56

 

Material de Estudo

Nada melhor que ter uma material oficial para estudar, ele foca nas perguntas e respostas que podem cair na prova, aconselho a estudar pelo material oficial, caso não consiga, existem diversos livros dedicados a certificação que não são oficiais.
Para aqueles que querem obter a certificação, eu aconselho não somente estudar os materiais oficiais do exame pretendido,
como também praticar em ambiente real o que foi aprendido. Realizar um curso para o exame pretendido se possível não seria ruim,  o problema é que atualmente estes cursos são muito caros.

Segue abaixo a relação de links para iniciar os estudos e melhor se preparar para as provas:

Para informações mais detalhadas sobre certificação e outros artigos relacionados ao assunto, acesse o site Oracle Certification Program

Certificação OCA 11g

Bem, esse post tem o intuito de apresentar a para aqueles que iniciam na carreira Oracle, a certificação OCA.
Ele traz várias informações, espero que você goste, caro(a) leitor(a).

O que é a OCA?

A OCA,  Oracle Certified Associate  passou a se chamar “Administrator Certified Associate”  é o nível inicial para certificações Oracle,  neste nível o candidato fará as provas, de acordo com a carreira que escolheu. Este nível de certificação reconhece os candidatos que estão iniciando sua formação.
Ela é obrigatória para que o candidato posteriormente se torne um OCP (Oracle Certified Professional),  que também passou a se chamar  “Administrator Certified Professional”.

Abaixo o caminho da certificação ACA 11g:

Captura de Tela 2014-07-08 às 12.40.04

Atualmente, para obter a certificação “Administrator Certified Associate” (ACA), é necessário realizar 2 provas da Oracle University em um centro autorizado Pearson Vue.

A prova de ACA é divida em duas fases, na primeira fase podemos escolher um teste dos 2 tipos que s„o fornecidos pela Oracle University, sobre os títulos que estão abaixo:

1a Fase

  • 1Z0-047 Oracle Database SQL Expert;
  • 1Z0-051 Oracle Database 11g: SQL Fundamentals I;

Obtendo sucesso em uma das duas provas acima, o proximo passo é realizar o segundo exame num centro autorizado Pearson Vue.

2a Fase

  • 1Z0-052 Oracle Database 11g: Administration I.

Para obtenção desta certificação, não é obrigatório a realização de treinamento oficial num centro treinamento recomendado Oracle University.

Segue algumas dicas interessantes:

  • A prova 1Z0-051 é a prova mais recomendada pelos centros de treinamento, pois é o conteúdo de muitos cursos de formação oficial e não-oficial para DBA Oracle;
  • A prova 1Z0-047 possui o mesmo conceito de SQL da prova 1Z0-051,  porem com perguntas mais complexas;
  • A 1Z0-047 cai expressıes regulares;
  • A prova 1z0-051 pode ser feito online, sem necessidade de comparecer ao centro autorizado Pearson Vue,
  • O único DETALHE é que eles marcam no certificado que a prova foi realizada em CASA e não em um centro autorizado;
  • A 1Z0-047 forÁa o candidato ter conhecimentos mais avançados do SQL, como Flashback, funções de ROLLUP e CUBE, sub-queries e external table;
  • Com a prova 1Z0-047 vai conquistar uma certificação adicional;
  •  A prova 1Z0-007 seria equivalente a prova 1Z0-051,  porem ainda remanescente da versão 9i.  Por questões de alta compatibilidade,  esta prova ainda é  aceita para ACA 11g, Servindo  apenas para quem já realizou esta prova há tempos atrás,  e com isto ainda pode aproveitar a aprovação desta mesma prova como requisito para a OCA 11g.
  • A prova 1Z0-007 foi aposentada em 31 de Julho de 2013, portanto não é possível realizá-la num centro autorizado.
  • A prova 1Z0-052 contempla questões de Arquitetura do Banco de Dados Oracle; preparação do ambiente para instalação e configuração;

Criação e manutenção de bases, instâncias e rede; conceitos de performance, backup e recovery;
Esta é efetivamente uma prova para testar conhecimentos de Administração de Banco de Dados, ou seja, tarefas típicas e básicas de um DBA.

Material de Estudo

Nada melhor que ter uma material oficial para estudar, ele foca nas perguntas e respostas que podem cair na prova,  aconselho a estudar pelo material oficial, caso você não consiga, existem diversos livros dedicados a certificação que não são oficiais.
Para aqueles que querem obter a certificação, eu aconselho não somente estudar os materiais oficiais do exame pretendido, como também praticar em ambiente real o que foi aprendido. Realizar um curso para o exame pretendido se possível não seria ruim, o problema é que atualmente estes cursos são muito caros.

Segue abaixo a relação de links para iniciar os estudos e melhor se preparar para as provas:

Para informações mais detalhadas sobre certificação e outros artigos relacionados ao assunto, acesse o site Oracle Certification Program