MigraTI - Soluções em banco de dados

quinta-feira, 28 de julho de 2011

GUOB Hidden Features

Bom irei começar a pegar o material sobre o GUOB e tentar, só tentar passar mais ou menos o que houve nas palestras.
Vocês podem cadastrar no GOUB (o que eu recomendo) e baixar todas as palestras por si só.

Mesmo assim vou postar algumas coisas que penso ser interessante.

Sobre a palestra do Graham wood vou dividila em duas partes e a primeira segue abaixo

Hidden Features.

SQL_TRACE.

Como todos sabem o sql_trace é gratuito pela oracle, mas há algumas funções diferentes no 11G que não existiam no 10G ou no 9i ou sofrerão mudanças nas próximas versões.

Vamos la.
DBMS_MONITOR.SESSION_TRACE

Serve para efetuar trace de uma seção.
Habilita:
EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE();
Desabilita:
EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE();

Você tem varias opções a mais para utilizar esta ferramenta, conforme abaixo.
DBMS_MONITOR.SESSION_TRACE_ENABLE(
      session_id IN BINARY_INTEGER DEFAULT NULL,
      serial_num IN BINARY_INTEGER DEFAULT NULL,
      waits IN BOOLEAN DEFAULT TRUE,
      binds IN BOOLEAN DEFAULT FALSE,
      plan_stat IN VARCHAR2 DEFAULT NULL);



ALTER SESSION SET EVENTS

Serve para habilitar trace individual de apenas um ou mais comandos.
Este vou por na pratica, acho que fica mais fácil de entender.

sselect sql_id, sql_text
from v$sql
where sql_text = 'select instance_name from v$instance';

SQL_ID        SQL_TEXT
————
————————— ———————————————————————————————————
17d40vwcct4g6 select instance_name from v$instance



alter session set events 'sql_trace [sql:17d40vwcct4g6]';

SQL> select instance_name from v$instance

instance_name
————————————————
lana

SQL> alter session set events 'sql_trace [sql:17d40vwcct4g6] off';

Session altered.
and here is output:
PARSING IN CURSOR #1 len=18 dep=0 uid=0 oct=3 lid=0 tim=1237831879652913 hv=942515969 ad=’e5f92ab0′ sqlid=’17d40vwcct4g6′
...



Abaixo é o spoll do trace.



DBMS_XPLAN
Este foi na minha opinião o que mais me chamou atenção.

Conforme palavras de Graham wood o explain plan convencional ({ORACLE_HOME}/rdbms/admin/dbmsxpln.sql) esta obsoleto

Então vamos a pratica.

SQL> explain plan for
  2  select instance_name from v$instance;

Explained.

SQL> SELECT * FROM TABLE(dbms_xplan.display);

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------
Plan hash value: 2848324471

-------------------------------------------------------------------------------------
| Id  | Operation             | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |             |   100 |  5700 |     0   (0)| 00:00:01 |
|   1 |  MERGE JOIN CARTESIAN |             |   100 |  5700 |     0   (0)| 00:00:01 |
|   2 |   MERGE JOIN CARTESIAN|             |     1 |    57 |     0   (0)| 00:00:01 |
|*  3 |    FIXED TABLE FULL   | X$KSUXSINST |     1 |    23 |     0   (0)| 00:00:01 |
|   4 |    BUFFER SORT        |             |     1 |    34 |     0   (0)| 00:00:01 |
|*  5 |     FIXED TABLE FULL  | X$KVIT      |     1 |    34 |     0   (0)| 00:00:01 |
|   6 |   BUFFER SORT         |             |   100 |       |     0   (0)| 00:00:01 |
|   7 |    FIXED TABLE FULL   | X$QUIESCE   |   100 |       |     0   (0)| 00:00:01 |
-------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter("KS"."INST_ID"=USERENV('INSTANCE'))
   5 - filter("KVITTAG"='kcbwst')



Varias outras opções podem ser setadas neste package, mas a principal é esta.



A Próxima parte da palestra eu falo amanhã pois acho que muda um pouco o foco, continua sendo sobre performance, mas já muda para a parte de estatísticas.

 PS: Após dez anos de blogspot, descobri como organizar os textos em SQL. \o/


Precisando de Consultoria, monitoramento ou analise em Banco de dados? Clique aqui. 

terça-feira, 26 de julho de 2011

Recuperando um standby com RMAN

Devido a necessidade de efetuar tal processo fui procurar minha documentação para efetuar um backup incremental no servidor de produção para recuperalo no servidor de standby e não encontrei este passo a passo que já havia me salvado a pele em outras ocasioes.
Como eu não havia ideia onde eu havia colocado meu tutorial, pedi socorro ao Alessandro da Teiko que me mandou de prontidão o mini tutorial.

Para que eu não esqueça mais desses comandos vou postalo aqui, talvez assim eu consiga ajudar mais pessoas alem de mim.

Mãos a Obra.


--Levantar o banco em modo mount;
SQL > startup mount;

--Efetuar o select abaixo (STB)
SQL > SELECT to_char(Current_scn, '9999999999999999') FROM V$DATABASE;


--Pegar o resultado e guardar para utilizalo no backup incremental.
19803943325


--Executar um backup incremental do servidor de produção.
RMAN> run{
allocate channel d1 type disk FORMAT '/oraarchive/standby/ForStandby_%U' maxpiecesize 3000M;
BACKUP INCREMENTAL FROM SCN 19803943325 database format '/oraarchive/standby/ForStandby_%U' tag 'FORSTANDBY';
BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/oraarchive/standby/ForStandbyCTRL.bck';
}

--Gerar um ultimo archive no produção
SQL > alter system switch logfile;

--Copiar os ultimos archives para o caminho correto no standby.
--Enviar os arquivos gerados pelo Rman para o servidor de standby.


--Conectar no rman do standby e efetuar o catalogamento dos arquivos
CATALOG START WITH '/oraarchive/standby/';


--Efetuar o restore do database de standby.
RMAN> RECOVER DATABASE NOREDO;


--Efetuar o recover do control file.
RMAN> SHUTDOWN;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE STANDBY CONTROLFILE FROM '/oraarchive/standby/ForStandbyCTRL.bck';

--Efetuar shutdown do standby.
--Neste passo você poderá executar tanto pelo rman como pelo sqlplus.
RMAN> SHUTDOWN;
RMAN> STARTUP MOUNT;


--Conectar no standby.
SQL > alter database recover automatic standby database;

--Após aplicar todos os archives efetuar o comando no standby.
SQL > alter database open read only;


Agora nunca mais eu perco.

[]'s

Precisando de Consultoria, monitoramento ou analise em Banco de dados? Clique aqui.

segunda-feira, 25 de julho de 2011

Serviços do linux

Boa Noite.

Em muitos casos instalamos linux em nossos servidores pelo seu gerenciamento de memória e pelo alto desempenho em que este SO pode oferecer tanto para um servidor oracle, como para qualquer serviço que dependa de uma maquina on line 24 horas e relativamente segura.

Mas será que estamos utilizando ao Maximo o SO?
Será que por não termos um conhecimento a fundo da administração do SO, não utilizamos muito mais memória do que o necessário?

Escrevi alguma coisinha para ajudalos a identificar alguns serviços no linux que não são necessário para um servidor Linux que sua unica função é manter o banco de oracle.

Primeiramente não há a necessidade de mantermos o X startado.

Nota: Pra quem não sabe o "X" é o ambiente gráfico do linux.

para desabilitalo vamos fazer uma configuração bem simples.

basta você alterar o arquivo "/etc/inittab"

Verifique estas linhas do arquivo:
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

depois efetuem o comando cat juntamente com um |grep para pegar apenas a linha que desejam.

Banco=dbprod-> cat /etc/inittab |grep id:
id:5:initdefault:
Banco=dbprod->

Observe que o Numero do ID é 5 e conforme documento o id:5 é para levantar o modo Grafico ou modo X11

# 5 - X11

Mudaremos então para modo 3 "# 3 - Full multiuser mode" assim ele irá economizar memória ao não levantar o serviço do X.
E você não perderá nenhuma funcionabilidade, de seu sistema, a única diferença é que você não poderá acessar o ambiente grafico do servidor.

Com o X devidamente fora do caminho vamos aos serviços.

Pra quem conhece bem o windows o que vamos fazer é basicamente igual a ir la no services e desabilitar serviços não necessários.

Para fazer isso o comando utilizado le chkconfig.
Este comando tem algumas sintaxes e são bem fáceis de identificar.

Basicamente é isso
--add para adicionar um serviço na inicialização.
--list para listar os serviços da inicialização
--del para remosver serviços da inicialização.
--level para setar um level como on ou off


Vamos aos exemplos
chkconfig --add Oracle10g ## Adiciona o serviço ao inicializador
chkconfig --level 3 Oracle10g on ## Seta para o serviço inicializar on no livel 3
chkconfig --list ##lista todo o inicializador
chkconfig --del Oracle10g ##Remove o inicializador

Vamos a Pratica.

[root@Lana ~]# chkconfig --list
isdn 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
cups 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off


Observem estas 8 colunas.
Cada coluna com o número na frente representa o level de inicialização
Logo
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

O sshd esta on line para os níveis 2,3,4,5
se o linux inicializar no nível 3 que setarmos no /etc/inittab ele irá levantar o sshd pois o nível 3 esta on "3:on"

Acho que deu para entender o mecanismo para efetuar as mudanças né?

Agora la vai a lista.
# chkconfig anacron off
Serviço igual ao crontab mas pode ser agendados serviços offline.

# chkconfig arptables_jf off
Serviços de rede

# chkconfig atd off
Mais um serviço de crontab.

# chkconfig autofs off
Serviço para automatizar montagens de dispositivos CD/DVD/NFS/USB

# chkconfig cups off
# chkconfig cups-config-daemon off
Serviços de servidores de impressão

# chkconfig gpm off
Serviço de copiar e colar via mouse

# chkconfig iptables off
Serviço de firewall

# chkconfig isdn off
Serviço de conexão via ISDN

# chkconfig lvm2-monitor off
lvm = Linux volume manager Serviço para storage.

# chkconfig mdmonitor off
Serviço para monitoramento de raid

# chkconfig microcode_ctl off
Scripts para processador intel IA32 (Caso seu Processador seja este não desabilite).

# chkconfig netfs off
# chkconfig nfslock off
Serviço para pontos de montagem NFS

# chkconfig pcmcia off
Serviço para cartões PCMCIA

# chkconfig portmap off
Mais um serviço para pontos de montagem NFS

# chkconfig readahead off
# chkconfig readahead_early off
Serviço de cache para boot.

# chkconfig rhnsd off
Serviço de atualização do Red Hat.

# chkconfig rpcgssd off
Mais um serviço para pontos de montagem NFS

# chkconfig rpcidmapd off
Mais um serviço para pontos de montagem NFS

# chkconfig sendmail off
Serviço para enviar email's (habilitar somente se for necessário)

# chkconfig smartd off
Serviço para monitoramento de HD

# chkconfig haldaemon off
Usado pelo X

# chkconfig kudzu off
Serviço para detecção de hardware. Muito util para desktops.
(aconselho a habilitalo antes de efetuar a instalação de algum dispositivo)

# chkconfig messagebus off
Serviço para notificação de rede compatível com windows

Vale lembrar, que cada serviço deverá ser levantado a necessidade de cada ambiente.

Mas estes acima são os menos utilizados

Qualquer duvida ou sugestão, serão bem vindas via comentários.

Precisando de Consultoria, monitoramento ou analise em Banco de dados? Clique aqui.

segunda-feira, 18 de julho de 2011

GUOB Tech Day

É com grande prazer que pude participar do evento.

Achei fantásticas as palestras, principalmente de Arup Nanda e Graham Wood.
Infelizmente não pude participar de todas as palestras que gostaria, pois queria ter ido nas palestras sobre rac do Kai yu, mesmo assim me surpreendi com palestras que pensava não ser de meu interesse, e mesmo assim gostei.

Sobre o evento acho que foi muito bem organizado e espero que tenhamos mais algumas palestras organizadas pelo GUOB, talvez mais perto de Blumenau :).

Vamos falar um pouco sobre as palestras.

A primeira foi do Pablo Ciccarello, com a palestra "OTN Latin America", ele falou basicamente sobre o site da OTN, e sinceramente achei fantástica toda a cobertura que ele falou do site, depois de sua palestra eu mesmo decidi me cadastrar na OTN.

A segunda e a terceira palestra foram de Graham Wood falou sobre "Oracle Exadata live" e sobre "Hidden Features".
Sobre estas palestras já temos algo a mais para ser comentadas.
Sobre Exadata, ele mostrou o funcionamento básico de um exadata e como é o comportamento desse sistema num caso de carga em um ambiente.
Também mostrou que há alternativas mais rápidas e viáveis para se efetuar uma carga de base, (Acho que os adoradores do EXPDP não curtiram muito isso)
Sobre os Hidden features deu uma aula sobre mudanças para a versão 11G sobre algumas features conhecidas do 9i ou do 10G.

A quarta Palestra foi com Arup Nanda, ele falou sobre "Exadata for Oracle DBAs", ou como ele mesmo definiu, "Como se tornar um DMA"
Nesta palestra achei fantástica a maneira como ele explicou um exadata, e como se tornar uma administrador dessa tecnologia, com uma didática simples, trouxe para o "português" os mistérios do exadata.

Após o almoço me decepcionei um pouco com a forma em que foi separada as salas das palestras, pois a palestra mais interessante ficou na sala ametista II e ficou impossível conseguir uma vaga nesta sala, acho que esta palestra pela importância que teve deveria ter ficado na maior sala e com mais cadeiras.
Com isso tive de assistir a palestra da Debra Lilley que falava sobre oracle fusion, achei muito interessante a tecnologia, mas acho que ela poderia ter feito uma palestra real e não em cima de um vídeo. Achei meio fraca essa palestra, mas como eu mesmo disse não conheço nada sobre tal assunto.

Na sexta palestra eu fui para ametista 3 ver a palestra de Kleuber Matta sobre "Simplifique Gerenciamento Bancos de Dados Oracle", achei uma palestra mais comercial do que técnica mesmo assim achei bem interessante o software da Quest "Foglight".

Na sétima palestra vimos "Certificação para profissionais Oracle, OCP, OCA, OCE, OCM" com Rodrigo Mufalani, vou ser bem sincero, meu motivo de ver esta palestra foi mais conhecer o Rodrigo do que no assunto, mesmo assim consegui tirar algumas duvidas sobre o premio ACE e até conheci um OCM que estava na palestra. Muito boa a didática do Rodrigo e como existia muito universitário na sala acho que foi de grande ajuda para muita gente.

Na palestra sobre "Oracle RAC Extended Cluster" com Marcus Vinicius, foi a palestra mais rapida que eu já vi, mas também não ficou um pingo de duvida sobre o assunto, e como eu não conhecia a tecnologia de cluster estendido achei fantástica a solução. Caríssima, porem fantástica.

Como a Palestra do Marcos foi rápida ainda consegui pegar uma boa parte da palestra do Kuassi Mensah sobre net services.
Nesta palestra ele mostrou muita coisa para manter a disponibilidade dos listeners nos rac's, também mostrou algumas configurações já conhecidas por mim para segurança, mas mesmo assim achei bem interessante, nada contra a palestra do Marcus, mas acho que eu teria ganhado mais se eu tivesse visto a palestras do Kuassi inteira.

E por ultimo, mas não tão importante a brilhante palestra do Arup Nanda sobre melhores praticas para DBA's
Não concordo com tudo que ele falou, mas mesmo assim ele passou muita dica que eu achei muito interessante, tanto para iniciante como para DBA experiente.


Logicamente não pude falar sobre todas as palestras, pois não há como, mas as que eu pude participar, eu comentei.

Nota geral do evento: 9


Link para o site da OTN que fez a cobertura do evento.

Precisando de Consultoria, monitoramento ou analise em Banco de dados? Clique aqui.