domingo, 29 de maio de 2011

10 Motivos para utilizar o RMAN

Segue alguns motivos :

(1) RMAN vem com software da Oracle e é livre para usar (a partir da versão 8 do Oracle).

(2) RMAN se torna mais simples a cada dia. O simples backup BACKUP DATABASE banco de dados.

(3) Quando você usa o RMAN você está 100% certo de que é feito o backup do banco de dados.

(4) Com o RMAN pode validar um banco de dados antes de backup e também validar um banco de dados depois de ter backup.

(5) RMAN é a única ferramenta que oferece suporte a backup incremental.

(6) O RMAN faz a compressão e criptografia dos seus dados.

(7) Detecta e corrigi blocos conrropidos.

(8) Pode ter backup em paralelo e também restaurar a operação pode ser feita por paralelo.

(9) Vários relatórios e consultas através do RMAN.

(10) RMAN é uma ferramenta inteligente que nos ajudam a decidir consulta diversos como quais arquivos precisam ter backup, backup, que é obsoleto, que backup é expirado.

sábado, 28 de maio de 2011

ora-01115 io error reading block from file

Problema que um cliente me relatou no log do backup (export full=y) .

EXP-00056: ORACLE error 1115 encountered

ORA-01115: IO error reading block from file 1 (block # 112022)

ORA-01110: data file 1: 'C:\ORACLE\ORADATA\SYSTEM01.DBF'

ORA-27091: skgfqio: unable to queue I/O

OSD-04006: ReadFile() failure, unable to read from file

O Banco de dados não estava em archivelog e o backup era feito apenas com export, o que fazia que uma tabela não tivesse seus dados exportados. O que podemos fazer neste caso ?

Tentativa 1
Primeiro tentei recuparar o datafile com o Oracle dbv (database verify utility)

dbv file='C:\ORACLE\ORADATA\SYSTEM01.DBF'

Infelizmente o procedimento não resolveu o nosso problema ....

Tentativa 2

Parti para tentar descobri que informações estão contidas no bloco do S.O defeituosos.

SELECT *
FROM DBA_EXTENTS
WHERE FILE_ID= :p1
AND :p2 BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS;


onde :p1 é o numero do datafile e :p2 é o numero do bloco defeituoso.

o que consegui fazer ? fiz um tabela clone (com a mesma estrutura da tabela com informacao em perigo) e fiz uma cópia de todas as informações possíveis.

Depois disso fiz um truncate na tabela com os dados com problema (no meu caso esta tabela não tinha relacionamento que outra tabela tivesse chave dependente).

Movi a tabela para uma nova tablespace temporário e preenchi esta tabela com os dados da tabela temporária.Depois disso fiz uma exportação Full da informação do SGDB.Troquei o HD defeituoso e refizemos a instalação do banco e o import dos dados.

Infelizmente a situação não garantiu em 100% a recuperação dos dados mas existiu uma forma de converter o problema e não torna-lo em algo ainda pior.

é muito importante uma politica de Backup segura !!!

Segue o link que me ajudou para chegar a uma solucao :

http://forums.oracle.com/forums/thread.jspa?threadID=2127758

quarta-feira, 18 de maio de 2011

Importancia do Modo archivelog

Vejo que existe muitas pessoas que questionam a utilização do modo "Archivelog". Eu mesmo ja pensei que com a utilização do bom e funcional Exp ou Expdp estariamos tento um backup seguro do banco.Na verdade o Exp e o ExpDp nos garante um bom backup sim ,mas um backup referente a informação contida no database.Apesar de funcional temos algumas complicações quando definimos este tipo de backup ,pois no momento do restore a janela necessária para se refazer o ambiente do database e o recuperacao da informação podem ser fatores que prejudiquem e muito o ambiente que esta utilizando o SGDB.

Com a utilizaçao do Rman conjuntamente o uso do Archivelog,temos um ambinete que alem de proteger as informações do SGDB de certa forma protege também todo o ambiente configurado do SGDB.Vou dar um exemplo :

Imaginemos um ambiente que trabalha 24 horas,7 dias da semana e que o backup utilizando o Rman só pode ser feito 3 dias na semana,ou seja dia sim ,dia não. Suponhamos que 20 horas após o ultimo backup schedulado,tivemos a perda de um datafile de uma tablespace muito importante.Apesar de conseguir fazer o restore com o Rman , perderiamos cerca de 20 horas de informações preciosas.Neste momento o archivelog vem nos salvar.Com os arquivos de archive ,conseguimos recuperar essas 20 horas de informação entre o backup do Rman e a pane que levou a perda do datafile.Muitas pessoas me perguntam a diferenca do recovery e do restore no Rman e fica um exemplo.

Portanto archivelog Sim !!!

Perda de um datafile de uma Tablespace

O que podemos fazer .

Exemplo considerando uso do modo archivelog e backup com Rman

(1) De um shutdown no database

(2) pelo Rman faça um restore dos datafiles que foram perdidos.

(3) pelo Rman faça um recovery do Banco.

(4) passe o banco para o status de open (startup open)

(5) Faça um backup das informações (exp ou Expdp)

(6) verifique a integridade da recuperação do Arquivo.

terça-feira, 17 de maio de 2011

Perda dos controlfiles

o que podemos fazer para tentar recuperar as informações do controlfile perdido .

(1) Tenta levantar o banco em modo open,se não for possível , faça em modo nomount.
(2) execute o arquivo de trace,com o comando de recriação de datafile.
(3) Agora levante o banco em modo open.
(4) Faça backup full de seus dados.
(5) Analise a saúde do seu database.

Perda de Grupo de redo Log Online inativo

O que podemos fazer :
(1) shutdown immediate ;
(2) Startup mount ;
(3) Checar com view v$log para determinar se o arquivo foi arquivado.
(4) Checar no V$datafile para determinar se há algum datafile offline,que possa requere o log que não foi arquivado para traze-lo de volta.Faça um commando alter database clear logfile.As palavras unrecoverable datafile são necessárias.
(5) O datafile e sua tablespace devem ser dropadas,porque o redo necessário para traze-lo de volta para online foi "limpo" e não há cópia dele.
(6) adicione um novo grupo de redo log exemplo :
alter database add logfile group xxx size xx mb.
(7) drop o group file danificado
alter database drop logfile gorup xxxx onde xxxx é o group danificado
(8) adicione os menbros restantes do grupo excluido no novo grupo criado.
(9) abra o banco e faça um backup full dos seus dados.

quarta-feira, 11 de maio de 2011

Savepoints


Segue um exemplo bem simples de um comando que vejo ser muito pouco utilizado no controle de transações, o Savepoints .

insert into empregados (id_empregado,nome,sobrenome,salario) values (1,'Patricia','Moreira',1000) ;

insert into empregados (id_empregado,nome,sobrenome,salario) values (1,'Bruno','Gomes',1000) ;

COMMIT ;

UPDATE EMPREGADOS
SET SALARIO = 5000
WHERE SOBRENOME = 'MOREIRA';

SAVEPOINT BANDA_MOREIRA ;

UPDATE EMPREGADOS
SET SALARIO = 6000
WHERE SOBRENOME = 'GOMES';

SAVEPOINT BANDA_GOMES ;

SELECT SUM(salrio)
FROM empregados;

ROLLBACK TO SAVEPOINT BANDA_GOMES ;

UPDATE EMPREGADOS
SET SALARIO = 4000
WHERE SOBRENOME = 'GOMES' ;

commit ;

DML , DDL , DCL E TCL

Você sabe a diferença entre DML , DDL , DCL E TCL ? Se pretende fazer uma prova oracle é bom ter isso na cabeça.

DML (Data manipulation Language)
Select,Insert,Update,Delete e Merge

DDL(Data Defenition Language)
Create,Alter,Drop,Rename,Truncate e Comment

DCL ( Data Control Language)
Grant e Revoke

TCL (Transaction Control Language)
Commit,RollBack e Savepoint .

segunda-feira, 9 de maio de 2011

Exemplo de Cold Backup para Servidores Windows

Segue um exemplo de cold Backup :

Para o melhor funcionamento,devemos ter no servidor a seguinte estrutura de diretórios :

C:\cold_bkp_orcl\script .

Dentro do diretório C:\cold_bkp_orcl\script teremos os seguintes script

COLDBK.bat com o seguinte conteúdo :

rem --------------COLDBK.bat---------------
c:
cd\
cd cold_bkp_orcl
del *.* /F /Q
sqlplus "system/senha" @C:\cold_bkp_orcl\script\coldbk.SQL

sqlplus "system/senha" @C:\cold_bkp_orcl\script\Spfile-copy.SQL

COLDBK.sql com o seguinte conteúdo :

--------------COLDBK.SQL---------------
set term off
set head off
set feedback off
set verify off
spool C:\cold_bkp_orcl\startcopy.bat
select 'copy '||name||' C:\cold_bkp_orcl' from v$datafile;
select 'copy '||name||' C:\cold_bkp_orcl' from v$controlfile;
select 'copy '||name||' C:\cold_bkp_orcl' from v$tempfile;
select 'copy '||member||' C:\cold_bkp_orcl' from v$logfile;
create pfile='C:\cold_bkp_orcl\spfile.ora' from spfile ;
spool off
shutdown IMMEDIATE
host C:\cold_bkp_orcl\startcopy.bat
startup
host del C:\cold_bkp_orcl\startcopy.bat
set term on
set head on
set feedback on
set verify on
-------------------------------

basicamente fazemos o shutdown do banco de dados e depois fazemos cópias dos seguintes arquivos

datafiles
controlfiles
tempfiles
logfiles
SPfile

sexta-feira, 6 de maio de 2011

Apostila de RMAN - Conceitos Básicos

Pessoal . Fiz um "cata cata"de artigos bons sobre RMAN na internet e fiz esta pequena apostila, bem básica sobre a utilização e configuração do RMAN.

Segue o Link do material :

https://rapidshare.com/files/460918067/RMAN_-_CONCEITOS_BASICOS.pdf