Mostrando postagens com marcador dba. Mostrar todas as postagens
Mostrando postagens com marcador dba. Mostrar todas as postagens

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. -->

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:

segunda-feira, 24 de junho de 2013

DBA - Oracle Clusterware - Administração (ViniciusDBA)

Caros,
o blog do Marcus Vinícius possui artigos dando exemplos de administração do Cluster do Oracle.
É interessante.

Oracle Clusterware – Rotinas Administrativas – Parte 1 – Start e Stop [ver]

Oracle Clusterware – Rotinas Administrativas – Parte 2 – crsctl [ver]

Oracle Clusterware – Rotinas Administrativas – Parte 3 – srvctl [ver]

sexta-feira, 21 de junho de 2013

sexta-feira, 14 de junho de 2013

DBA - Truncate em apenas UMA partição da tabela

Olá amigos

Hoje o post é curto , porém, interessante.
Precisei atuar em um ambiente consideravelmente grande, onde havia uma tabela e suas várias partições.
O cliente solicitou o TRUNCATE em apenas uma partição. Eu atuei, o cliente validou e reportou que houve sucesso. Fiquei contente =)

Segue log de atuação:


-- Consultando partições da tabela

SQL> SELECT TABLE_NAME, PARTITION_NAME, TABLESPACE_NAME FROM DBA_TAB_PARTITIONS WHERE TABLE_NAME = 'TABLE_FISCAL';


quinta-feira, 13 de junho de 2013

DBA - Descobrindo o comando que criou a tabela

Olá queridos amigos, DBA's e Developer's.

O artigo de hoje é sobre uma DBMS que pode nos auxiliar muito ao investigar assuntos sobre criação de objetos dentro do banco de dados Oracle. É a package nativa do Oracle chamada: DBMS_METADATA.

Existe uma função dessa package chamada GET_DDL que devolve o comando de criação de objetos. Segue um exemplo abaixo pois só é possível aprender de verdade, fazendo na prática.

Vamos colocar a mão na massa.

-- Criando uma tabela para fazer o teste

SQL> create table t_able (nome varchar2(30));

Table created.

quinta-feira, 30 de maio de 2013

Função REVERSE - Invertendo Strings

Olá pessoal,
O Oracle é realmente um banco de dados fascinante. Dia-a-dia aprendemos mais e mais.
Conheci uma função simples de se usar e extremamente útil para o programador e para o DBA (em certos momentos).

Vamos colocar a mão na massa:

-- Conectei no banco de dados com o usuário fernando e a senha fernando
C:\>sqlplus fernando/fernando