Oração do DBA

AVE BANCO CHEIO DE DADOS
MILHÕES DE REGISTROS CONVOSCO
BENDITO SOIS VÓZ ENTRE AS ESTATÍSTICAS
BENDITO A ALTA DISPONIBILIDADE … STANDBY
SANTA PACIÊNCIA MÃE DO DBA
ASSIM COMO NÓS ADMINISTRAMOS NOSSOS DADOS
E NÃO NOS DEIXEI CAIR EM DESESPERO
AGORA E NA HORA DO RESTORE
AMÉM

Kenia Milene

Regras Básicas de Tuning de Banco de Dados

Antes de começar a trabalhar é importante ressaltar algumas regras de performance. São elas:
1 - Verifique os problemas de software e hardware antes de mexer com o banco, muitas vezes o hardware não é adequado ou a aplicação não tem um bom fluxograma;

2 - Tenha um enfoque global, entenda todos as partes do sistema (hardware, S.O, rede, Banco de Dados, SQL e a própria aplicação. A baixa performance pode não estar ligada ao Banco e sim aos outro componentes que acabam afetando o banco;

3 - Modifique uma parte de cada vez, divida a tarefa em partes, analise, altere e veja os resultados um de cada vez. Muitas vezes ao modificar vários procedimentos ao mesmo tempo acaba-se dificultando a resolução caso algum imprevisto;

4 - NÃO PRATIQUE TUNING POR ESPORTE. Tuning é coisa séria e um parâmetro mal configurado por onerar ou até mesmo fazer com que o Banco pare de funcionar;

5 – Não tente resolver todos os problemas. Segundo Pareto 80% da resolução dos problemas são resultantes de 20% de ajustes, sendo assim, não perca tempo;

6 - Acima de tudo entenda o seu tipo de aplicação. Aplicações Web, OLTP ou DW requerem atenções diferentes.

CAUSA DOS PROBLEMAS

65% das causas de baixa performance em Bancos de Dados são causadas pelas aplicações. Dificilmente temos no mesmo ambiente um DBA Desenvolvedor ou um Desenvolvedor DBA, sendo assim, muito , mas muito cuidado na criação das consultas.

25% são causados pelos modelos de dados. Banco mal modelado tende a ser terrível. A melhor forma é normalizar o modelo, com isso ganhamos economia de espaço e a não repetição dos dados. Porém é necessário uma análise, pois em relatórios muito grandes não é aconselhável normalização quando falamos de ganho de performance.

5% são problemas do SGDB, acontece do gerenciador do banco não ter um algoritmo eficiente, ou não consegue manter as informações necessárias na memória por tempo eficiente. Atenção na aplicação de patchs e upgrades de versões.

5% são causadas por configurações ou deficiências do Sistema Operacional. Atenção no fluxo da rede, muitas vezes o servidor esta com uma placa de rede não adequada para a quantidade de fluxo de informações que trafega. Verificações de parâmetros de Kernel também são consideráveis, pois o S.O pode não estar deixando o banco escalonar que influencia no impacto do sistema.

TIPOS DE APLICAÇÕES

WEB - O Banco de dados costuma ser menor do que a memória disponível. Por ser pequeno, todo o seu conteúdo cabe na memória As consultas são bem simples e a quantidade de escrita é bem pequena.

OLTP - Nesse caso o Banco é grande e não cabe na memória, podendo chegar a 1TB. 20 a 40% das consultas são de pequeno porte e cresce consideravelmente a quantidade de escrita dos dados em disco.

DW - São bancos de grande porte variando de 100GB a 100TB. Esse tipo de banco tem cargas muito pesadas de dados e a escrita de dados costuma ser por meio de cargas com horários determinados, mas o volume de consultas é grande, sendo que, essas consultas na sua grande maioria sao complexas usadas para alimentação de relatórios.

PRIORIDADES NO SISTEMA OPERACIONAL

Cada tipo de aplicação demanda uma prioridade diferente no sistema operacional, levando-se em contas as considerações acima.

WEB - CPU, RAM, I/O. Na sua maioria o Banco esta em memória, sendo assim, o maior consumo é de CPU para o processamento das informações;

OLTP - I/O, RAM, CPU. A característica desse tipo de banco é justamente o grande volume de gravação em disco. Como grande parte do consumo é de I/O (Disco), deve-se dar uma atenção especial para eles em bancos desse porte. Um equilíbrio entre discos e memória é muito interessante nesse tipo de Banco de Dados;

DW - RAM, CPU, I/O. DataWareHouse tem a característica de ser um banco para consultas, muito usado em soluções de BI. A metodologia de uso de um DW varia de empresa para empresa, mas o ideal seriam cargas com horários pré-determinados (Madrugada, por exemplo) e as consultas durante o dia. Sendo assim o recurso mais consumido é a memória para retornar o valor das consultas, portanto é de extrema importância que o servidor de DW tenha uma quantidade grande de memória para evitar o uso de SWAP.

Obtive parte dessas informações no curso de Tuning de PostgreSQL, mas elas cabem para qualquer que seja o Banco de Dados.

Kenia Milene

Backup Oracle com Recovery Manager (RMAN)

Bom um assunto bastante delicado é backup …
Qualquer DBA que se preze faz backup né minha gente …..
Existem algumas formas de backup, como dump por exemplo, mas nesse caso vou falar um pouco do RMAN acho que pode ajudar galerinha ai ….

Bem antes de tudo é necessário colocar o banco em archivelog, senão nada acontece !!!!:

1 – Baixe o banco
shutdown immediate

2 – Suba o banco em mount
startup mount

3 – Ative o arquive log
Alter database archivelog;

4 – Suba o Banco
Alter database open;

5 – Verifique o status com:
archive log list

Agora o próximo passo é criar o catalogo. O catalogo é uma espécie de índice que vai armazenar as informações dos backup executados

6 – Inicie o serviço do banco como sys e crie o usuário RMAN. Esse é o usuário utilizado para o gerenciamento do backup.
sqlplus “sys/oracle@BANCO as sysdba”
create user rman identified by rman;
alter user rman default tablespace sysaux temporary tablespace temp;
alter user rman quota unlimited on sysaux;
grant connect, resource, recovery_catalog_owner to rman;

7 – É necessário também criar o schema CATALOG para armazenar o catalogo. No prompt:
rman catalog rman/rman@BANCO
create catalog tablespace sysaux;
exit;

8 – O próximo passo é registrar o banco no catalogo ja criado
rman catalog rman/rman@BANCO target sys/oracle@BANCO
register database;
exit;

9 – Conecte no catalogo para dar andamento nos outros procedimentos. No prompt ….
rman target sys/oracle@BANCO
connect catalog rman/rman@BANCO

10 – O próximo passo é configurar o paralelismo, ou seja, em quantos discos será gerado o backup (nesse caso 4 discos).
Report schema;
Configure device type disk parallelism 4;

10 – Na cópia indique o caminho onde serão gerados os discos, e o nome de cada um. (Lembrando que o diretório deve existir)
copy
datafile 1 TO ‘u01/oracle/product/10.2.0/rman/DISK1.DBF’,
datafile 2 TO ‘
u01/oracle/product/10.2.0/rman/DISK2.DBF’,
datafile 3 TO ‘
u01/oracle/product/10.2.0/rman/DISK3.DBF’,
datafile 4 TO ‘
u01/oracle/product/10.2.0/rman/DISK4.DBF’;

10 – Verifique se a cópia foi executada com sucesso
List copy;
Exit;

Espero que possa ajudar
Kenia Milene

Recuperar Tablespace no Oracle

Outro dia ai eu postei como recuperar controfile.
Mas pode acontecer de termos problemas com a tablespace também.
Sendo assim segue como recuperar uma tablespace ….

1 – Tirar a supervisao da tablespaces

alter tablespace users offline

2 – Copie a tablespace do backup para a oradata

3 – Faça a recuperacao da tablespace logicamente

recover tablespace users

vai ser sugerido o o proximo arquive log de onde ele parou apartir do controfile.

4 – Coloque a tablespace no ar novamente.

alter tablespace users online;

5 – Faca um count para conferencia

select count(*) from scott.x;

Espero que seja útil

Kenia Milene

Export de Alguns Registros de Uma Tabela Oracle

Essa é muito boa … e útil …

Imagina que você tenha aquela tabelinha bem pequena de uns 24 milhões de registros e ai eis que aquele ser iluminado pede o seguinte:

Preciso que seja exportado SOMENTE OS REGISTROS DE MAI/2007 e que seja importado em outra tabela …

Aeeeeee agora eu quero ver … exportar somente X quantidade de registros de uma tabela????

Isso pode ser feito de 2 formas:

1 – Chama o Chuck Norris e pede pra ele olhar feio pra tabela e dizer: “Registros de mai/2007 já pra fora !!!!!”

2 – Se não funcionar você pode usar o comando export com uma clausula WHERE.

[oracle@host ~]$ export user/senha@banco contraints=y indexes=y
grants=y tables=’oracle.grandetabela’ query=”WHERE dat LIKE “mai/2007”” file=export.dmp

Essa salvou o dia hein !!!!

Kenia Milene

Recuperar Controfile no Oracle

Esse post é dedicado a todo que já tiveram um controfile corrompido e suaram frio como eu …

Quando um controfile é perdido ou corrompido, para o desespero do peão não é possível subir o banco sem ele e você terá a triste visão do erro ORA-00205 error in identifying control file, check alert log for more info.

O que fazer ??? pedir ajuda ai RMAN e restaurar o backup????
Bem pode ser, mas existe uma outra maneira menos desastrosa do que restore

1 – Abra o arquivo de alerta no BDUMP, por exemplo do alert_dbauxlog

2 – Procure a linha que contenha controfile

‘C:\Oracle\Product\10.0.1\oradata\DNAUX\control01.CTL’
ORA-27041: Unable to open file

3 – Nesse caso o controfile problemático é o número 1, faça uma copia do 2 e renomeie para 1

4 – Suba o banco

Viu …. não doeu nada ….
Boa Sorte
Kenia Milene

O Relacionamento

Relacionamento

s. m.,
acto de relacionar ou relacionar-se;
relacionação;
relação;
capacidade de relacionar-se ou conviver com os outros;
comportamento pessoal e social.

Relacionar

v. tr.,
referir;
narrar;
expor;
mencionar ou dispor em rol, lista, relação;
arrolar;
estabelecer ou fazer relação entre;
confrontar;
cotejar;
v. refl.,
adquirir relações com alguém;
travar conhecimento com outrem.

Relação

do Lat. relatione
s. f.,
acto ou efeito de relatar;
narração;
notícia;
descrição;
informação;
rol;
lista;
ligação;
conexão;
analogia;
comparação entre duas quantidades comensuráveis;
quociente;
ligação entre pares de elementos;
espaço entre dois sons, na música;
tribunal judicial de segunda instância;
(no pl. ) convivência;
(no pl. ) pessoa ou pessoas com quem se convive;
(no pl. ) conhecimentos;
(no pl. ) cópula;
(no pl. ) acto sexual.

Relacionar-se com alguém, adquirir relações com alguém, conexão, convivência. Existe algumas definições sobre relacionamento, vai ai a minha definição, não sei se é a melhor …. mas é a minha definição.

Relacionamento é quando duas pessoas passam a conviver uma com a outra, não necessariamente no mesmo espaço físico, mas imprescindível que na mesma sintonia.

Quando estamos sozinhos agimos do nosso jeito sem se preocupar muito com o que esta ao redor, preocupado apenas no nosso bem estar.

Mas quando se tem um relacionamento as coisas não funcionam bem assim. Deixamos de fazer algumas coisas para o beneficio do parceiro e para o bem estar da relação, faz-se novas coisas que beneficiam os dois.

Se sua parceira pede que você coloque o lixo para fora ( uma tarefa um tanto chata) e você faz, evita-se uma briga ou chateação por um motivo que para voce é irrelevante mas para ela é importante.

Se ele pede que deixe ver o jogo de futebol quetinho sem interferência (coisa mais chata ainda é futebol) e você faz, evita-se outra briga e chateação.

Mas o mundo ideal seria se juntos lavassem a louça onde um lava e outro enxuga ou ainda assistirem o jogo de futebol juntos.

Isso significa que estão colaborando um como outro, evitando a sensação de ter que fazer TUDO em casa ou não conseguir tem um minuto de paz e sossego. E lembre-se ela trabalha tanto quanto você na rua, ainda chega em casa e tem que lavar, passar, cozinhar, etc …. então valorize !!!!

Algumas pessoas têm dificuldades de expressar seus sentimentos, e se por algum milagre conseguirem dizer alguma coisa, se expressou de alguma forma, é de extrema importância respeitar e ouvir, mesmo porque já foi muito difícil se expressar, então o mínimo que é esperado é que seja respeitado.

Há quem diga que um relacionamento não sobrevive sem AMOR;
Há quem diga que um relacionamento não sobrevive sem CONFIANÇA;
Mas na minha opinião se não houver RESPEITO, não á amor que resista, e acredite fica muito difícil confiar em alguém que não se respeita.

Limite

do Lat. limite
s. m.,
linha de demarcação;
raia;
fronteira;
meta;
baliza;
grandeza constante, da qual outra pode aproximar-se indefinidamente sem nunca a atingir.

Um ponto muito importante é saber respeitar os LIMITES do seu parceiro, entenda que o seu espaço termina onde começa o do outro. Se ela esta com dor de cabeça por favor não ouça a TV alta demais. Se ele esta vendo o jogo, não ligue a batedeira agora, deixe pra quando o jogo acabar.

Saiba respeitar o limite do seu parceiro, e entenda que uma atitude pode ser ridícula para você, mas para o seu parceiro é de extrema importância. Se ela pede para você não fazer algo que aborreça, chateia, magoa ou seja lá o que for…. Não faça …. e vice versa, você não sabe o quanto é ruim pedir alguma coisa a pessoa que você ama, dizer o quanto aquilo te atinge e ele(a) simplesmente ignorar essa informação e fazer assim mesmo ….

A gente se sente pequeno …

A falta de respeito e ultrapassar os limites são coisas que estragam qualquer relação. Em um relacionamento deixamos de fazer algumas coisas e nos beneficiamos em outras …

Sejam felizes…. transformem o dia de vocês no dia mais feliz de suas vidas todos os dias….
A vida é muito curta .. e quando se der conta … PUFF !!! já ficou velho … ande de mãos dadas na rua, admire a lua, compre um presente sem data especifica, mime, ligue no meio do dia só pra dizer que ama, faça uma surpresa …..
Façam coisas juntos que faça vocês se sentirem bem … ame um ao outro todos os dias …

Conquiste seu parceiro varias e varias vezes …

E se possível tente entender quais são as expectativas que seu parceiro tem em relação a você e ao relacionamento de vocês.

Espero que possam refletir sobre isso
T+

Kenia Milene

Verificar Objetos Invalidos no Banco Oracle

Imagina a cena:

Um ser iluminado de um desenvolvedor liga e pede que você crie e execute uma package no banco.através de um santo script.

Eis que depois da execução o cara cisma que N objetos ficaram inválidos. E agora ??? como provar que estava inválidos antes do procedimento????

Eis que uma amiga minha uma heroína chamada Vilma Moreira tinha um script para evitar esse tipo de problema, ele verifica objetos inválidos no banco.

spool y:\execute\OBJETOS_INVALIDOS_ANTES.lst
set head off echo off feed off array 2
select ‘Global Name : ‘||global_name
from global_name
union
select ‘SysDate : ‘||to_char(sysdate, ‘Month dd, yyyy’)
from dual
union
select ‘SysTime : ‘||to_char(sysdate, ‘hh24:mi:ss’)
from dual
union
select ‘Username : ‘||username
from user_users
/

set head on feed on pages 100 lines 120
select * from all_objects

where status <> ‘VALID’;

spool off

Execute esse script antes do procedimento que o desenvolvedor pediu, mude o nome para INVALIDOS_DEPOIS e execute novamente, ai então você pode comparar os objetos inválidos antes e depois.

Espero que seja útil como foi pra minha amiga Vilma (Amiga essa que me ajudou muito la na empresa). Obrigada por tudo viu Vilma.

Kenia Milene