sábado, 27 de julho de 2013

DBA - Resolvendo ORA-00054 - resource busy and acquire with NOWAIT specified

Olá meus amigos,

Ao tentar truncar um tabela no banco de dados, me deparei com o erro ORA-00054.
Este erro significa que você está tentando manipular algum objeto (digo objeto e não arquivo, pois pode tratar-se de um índice) que já está sendo utilizado por outro recurso. Gerando lock no objeto. Neste caso, era realmente um índice que estava com o status UNUSABLE, impedindo o funcionamento do comando TRUNCATE na tabela específica.

Vamos ver uma maneira de resolver tal problema.


domingo, 21 de julho de 2013

DBA - Usando seu Backup Online e aplicando Archives

Olá amigos,
Conforme todo bom DBA sabe: "backup bom é o backup que volta". Ou seja, nada adianta backupear 1TB de dados e na hora de voltar, tudo estar corrompido. Com isso, iniciei meus estudos sobre o funcionamento dos backups realizados via RMAN. E hoje vou representar meu pensamento através deste artigo. Vou apenas representar um raciocício. Os comandos técnicos serão abordados posteriormente em outro artigo.

Respondendo a mim mesmo, as perguntas abaixo:

Meu banco está em ARCHIVELOG mode?
Quando ocorreu a falha?
Qual backup posso usar?
Quais archives vou precisar?

Obs.: Tudo isso pode ser encontrado no Capítulo 2 do livro OCP 11g - Preparatório para o exame 1Z0-053: Configurando a Capacidade de Recuperação do Banco de Dados


Pois bem, feito a pergunta. Vamos a resposta.

Imagine o seu banco de dados identificado de 1 até 10:


Cada bloco acima, representa um estado em que o banco estava.

Agora imagine que você tem um backup para cada estado do banco e um grupo de archives para cada estado do bloco do banco de dados (Os chamados SCN)

BACKUPS

ARCHIVES


Temos o seguinte cenário:

Agora vamos raciocinar. Para que diabos eu vou precisar do backup online e dos archives?

Vamos lá!

1) Exemplo: Os metadados foram corrompidos no bloco 9.

2) Você decide fazer o restore utilizando o backup do bloco 6:

Maravilha!
Seu banco de dados perdeu tudo o que foi feito nos blocos 7 e 8?
A resposta é não!

Pois você é um bom DBA e tem todos os archives necessários!

Para que o banco de dados retorne ao momento anterior à falha que ocorreu no bloco 9, você terá que avançar do bloco 6 ao bloco 8. Faça isso aplicando archives:

3) Aplicando os archives dos blocos 7 e 8.

Parabéns! A sua postura gerou a imagem abaixo:

Pronto. Você acabou de garantir seu ambiente.

Obs.: Tudo isso só irá funcionar se você configurou seu banco de dados para trabalhar em ARCHIVELOG mode.
Para consultar se o seu banco de dados está neste modo, utilize a query abaixo:

SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG


Obrigado e até o próximo artigo.





sábado, 20 de julho de 2013

ASM - Processos de background RBAL ASMB e ARBn



Olá meus amigos,
Hoje vou comentar sobre alguns processos de background que li sobre, no livro que estou estudando para passar no exame 1Z0-053.

A partir do Oracle 10g, tais processos são essenciais para o funcionamento da estrutura (ORACLE + ASM).

quinta-feira, 18 de julho de 2013

DBV em datafiles - ASM (ORA-19566)

Bom dia,

Hoje no trabalho, precisei realizar a validação de um erro que estava acontecendo em um  backup full do ambiente flashcopy. 
Ocorreu o seguinte erro:


RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================

RMAN-03009: failure of backup command on t1 channel at 07/18/2013 03:45:42

ORA-19566: exceeded limit of 0 corrupt blocks for file ++DATA/producao/datafile/datafile01.dbf


Tudo estava tranquilo, pois sabia que se algo estivesse corrompido, era só solicitar que o fashcopy fosse reprocessado.
Porém, na informática existem coisas difíceis de se explicar e eu travei ao tentar rodar um DBVerify em um datafile alocado automaticamente pelo sistema (ASM).

Precisava informar a cláusula userid porém, não tenho a senha do SYS (meu usuário do S.O. estava no grupo oraadmin).

Daí então, tive o auxílio do DBA Sênior que com muita tranquilidade e ainda mais (humildade + simplicidade) iluminou meus pensamentos e me lembrou do usuário SCOTT.
A senha padrão do bendito é TIGER. Ou seja, com privilégios do grupo oraadmin e um pouco de "inteligência alheia", consegui rodar o DBV da seguinte maneira:

[useroracle@hostname01:/home] dbv file='+DATA/producao/datafile/datafile01.dbf' userid=scott/tiger logfile=log_dbv_datafile.log

Após atuação, gravei em mente que:
1) Datafile em ASM devem ser informado através de aspas simples.
2) Jamais esqueça das raízes de seus estudos (scott/tiger)

Para entender melhor do que se trata um DBV, leia isso.

Bom, por hoje, é isso.

Até a próxima. -->

domingo, 7 de julho de 2013

DBA - Usando BIND Variable para ganhar performance



Bom dia DBA's,

Está mais do que provado que há ganhos de performance quando você utiliza Bind Variables em instruções SQL no Oracle. No artigo de hoje, vou demonstrar isso na prática e disponibilizar os comandos para que você também faça o teste em seu ambiente de estudo.

Vamos colocar a mão na massa!

Primeiro, o que é Bind Variable?

quinta-feira, 4 de julho de 2013

DBA - Tarefas, Salários e Cursos



Olá meus amigos,

Hoje vou falar um pouco sobre dois artigos do blog do Instrutor/DBA Fábio Prado.
São assuntos que interessam a todos os DBA's. Principalmente àqueles que estão iniciando suas carreiras: