MigraTI - Soluções em banco de dados

Guob 2017

quinta-feira, 10 de novembro de 2011

Outra forma visualizar os archives gerados por hora (pivot)

Após descobrir como verificar quantos arquivos estão sendo gerados por hora com o post do Maycon Tomiasi, resolvi postar para vocês uma forma diferente de pegar os históricos dos archives de sua instância.
Se acompanharem o oraclehome vocês verão que esta tecnica foi postada lá ontem Pivot ou CrossTab Post de nosso adm Rafael Stoever.
Esta Forma pode ser de escolha de algumas pessoas para diagnostificar algum desvio padrão no comportamento dos archives.

Leia mais...

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

terça-feira, 1 de novembro de 2011

SQL Loader

Hoje precisei utilizar um import de um arquivo de texto delimitado pela string # e não soube como fazer.
Sabia que para atingir meu objetivo eu precisava efetuar um sql loader, mas não sabia como.
Para que ninguém mais passe por apertos iguais a esse vou mostrar o Basico de um SQL Loader.
Leia mais...


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

sexta-feira, 2 de setembro de 2011

oraclehome.com.br


A alguns dias eu e o DBA Rafael stoever, conversando tivemos a idéia de unir nossos blogs.
A idéia foi crescendo, fomos conversando, fomos avaliando novas idéias, excluindo algumas, remodelando outras e Tan, tararannnnnn.... Criamos o oraclehome.com.br após alguns dias para decidir o nome. ;)

Qual a idéia do oraclehome?
A sua idéia principal é se tornar um blog, com conteúdo diversificado voltado para oracle, que cresce sozinho.

Como fazer um blog crescer sozinho?
Com muitos integrantes, qualquer um pode se cadastrar no blog e criar seu perfil e sair postando.
Com conteúdo revisado pelos administradores.

O que eu ganho com isso?
Conhecimento, Ao divulgar um post seu, você estará também lendo post de outros usuários.
O nome disso é troca de conhecimento, e o melhor as vezes com pessoas que você nunca viu na vida.

Para acessar o site clique aqui

Aceito sugestões caso alguém tenha alguma ;) 

sexta-feira, 12 de agosto de 2011

Tabela SYS.NOEXP$

Hoje encontrei um erro no banco de um cliente bem curioso:


EXP-00056: ORACLE error 3113 encountered
ORA-03113: end-of-file on communication channel
EXP-00056: ORACLE error 24324 encountered
ORA-24324: service handle not initialized

Ai vocês devem estar se questionando, o porque não coloquei o tópico deste post com estes erros?
Por que é simples, não quero falar sobre o erro, quero falar sobre algo que descobri com ele ;), no caso a tabela NOEXP$.

Neste erro a solução da oracle é mudar a rotina de backup para DataPump, pois há um bug no exp para a versão 10.2.0.4 que não consegue exportar alguns tipos de tabelas com XML.

Porem no DataPump ele não exporta tabelas com XML.
ORA-39139: Data Pump does not support XMLSchema objects. TABLE_DATA:"LANA"."LANA_XML" will be skipped.

Foi ai que eu descobri a tabela NOEXP$

Esta tabela faz com que o export da oracle simplesmente não exporte a tabela.

Exemplos:


Lana-> exp teikobkp/******* file=teste.dmp log=teste.log owner=LANA


...
Current user changed to LANA
. . exporting table          LANA_LANA          7 rows exported
. . exporting table          LANA_XML
EXP-00056: ORACLE error 3113 encountered
ORA-03113: end-of-file on communication channel
EXP-00056: ORACLE error 24324 encountered
ORA-24324: service handle not initialized

...


SQL> insert into NOEXP$ values ('LANA','LANA_XML','2');

1 row created.


SQL> commit;


Commit complete.


SQL> exit


...



Lana-> exp teikobkp/******* file=teste.dmp log=teste.log owner=LANA
...
. about to export LANA's tables via Conventional Path ...
. . exporting table          LANA_LANA               7 rows exported
. . exporting table          TESTE_SEQUENCE          0 rows exported
. . exporting table          TESTE_TRIGGER           3 rows exported
...

. exporting statistics
Export terminated successfully with warnings.




Segue o describe da tabela:


SQL> desc NOEXP$
 Name                  Null?    Type
 --------------------- -------- ------------


 OWNER                 NOT NULL VARCHAR2(30)
 NAME                  NOT NULL VARCHAR2(30)
 OBJ_TYPE              NOT NULL NUMBER





Onde OBJ_TYPE você pode pegar na "obj$" com a seguinte query.


SQL> select name,type# from obj$ where name = 'LANA_XML';


NAME                                TYPE#
------------------------------ ----------
LANA_XML                                2

Dica:
Este OBJ_TYPE é o tipo do objeto, logo se for tabela sempre será 2.

Considerações Finais.
Palavras de Rafael Stoever: Muito interessante, perigoso, mas interessante.

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

segunda-feira, 1 de agosto de 2011

--- Failed to shutdown DBConsole Gracefully ---

Segue a dica para quem não esta conseguindo baixar o Enterprise Manager.

O EM salva o seu Id de processo em um arquivo nos seus arquivos de configuração.

Ele fica localizado no endereço abaixo.

$ORACLE_HOME/'hostname'_$ORACLE_SID/emctl.pid

Observe abaixo:


rac1.lana.com.br:db:oracle> emctl stop dbconsole
TZ set to Brazil/East
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.
http://rac1:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
--- Failed to shutdown DBConsole Gracefully ---
 failed.

rac1.lana.com.br:db:oracle> cat /oraprd01/app/oracle/product/10.2.0/db/rac1_lana1/emctl.pid
20240

rac1.lana.com.br:db:oracle> ps -ef |grep 20240
oracle    1042 27813  0 18:06 pts/3    00:00:00 grep 20240
oracle   20240     1  0 15:49 pts/1    00:00:42 /oraprd01/app/oracle/product/10.2.0/db/jdk/bin/java -server -Xmx256M -XX:MaxPermSize=96m -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -DORACLE_HOME=/oraprd01/app/oracle/product/10.2.0/db -Doracle.home=/oraprd01/app/oracle/product/10.2.0/db/oc4j -Doracle.oc4j.localhome=/oraprd01/app/oracle/product/10.2.0/db/rac1_lana1/sysman -DEMSTATE=/oraprd01/app/oracle/product/10.2.0/db/rac1_lana1 -Doracle.j2ee.dont.use.memory.archive=true -Djava.protocol.handler.pkgs=HTTPClient -Doracle.security.jazn.config=/oraprd01/app/oracle/product/10.2.0/db/oc4j/j2ee/OC4J_DBConsole_rac1_lana1/config/jazn.xml -Djava.security.policy=/oraprd01/app/oracle/product/10.2.0/db/oc4j/j2ee/OC4J_DBConsole_rac1_lana1/config/java2.policy -Djava.security.properties=/oraprd01/app/oracle/product/10.2.0/db/oc4j/j2ee/home/config/jazn.security.props -DEMDROOT=/oraprd01/app/oracle/product/10.2.0/db/rac1_lana1 -Dsysman.md5password=true -Drepapi.oracle.home=/oraprd01/app/oracle/product/10.2.0/db -Ddisable.checkForUpdate=true -Djava.awt.headless=true -jar /oraprd01/app/oracle/product/10.2.0/db/oc4j/j2ee/home/oc4j.jar -config /oraprd01/app/oracle/product/10.2.0/db/oc4j/j2ee/OC4J_DBConsole_rac1_lana1/config/server.xml

rac1.lana.com.br:db:oracle> kill -9 20240

rac1.lana.com.br:db:oracle> emctl stop dbconsole
TZ set to Brazil/East
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.
http://rac1:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
 ...  Stopped.

rac1.lana.com.br:db:oracle>

rac1.lana.com.br:db:oracle> emctl start dbconsole
TZ set to Brazil/East
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.
http://rac1:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 10g Database Control ........................... started.
------------------------------------------------------------------
Logs are generated in directory /oraprd01/app/oracle/product/10.2.0/db/rac1_lana1/sysman/log

rac1.lana.com.br:db:oracle>


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

Fica a Dica!

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.

terça-feira, 7 de junho de 2011

GUOB

Venho atravéz deste Divulgar um encontro de profissionais Oracle, que ocorrerá em São Paulo (Morumbi).


Para maiores interessados pelo encontro abaixo tem o link da Agenda do evento.

Agenda

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

quinta-feira, 19 de maio de 2011

Rename datafiles in ASM

Como renomear datafiles no oracle quando o mesmo esta via ASM


Primeiro temos de setar a tablespace em offline.

depois vamos para o rman e execute o comando de copy.
RMAN> COPY DATAFILE '+DATA/datafile/datafile.dbf' TO '+DATA_NEW/datafile/datafile.dbf';

Depois alternamos para o novo datafile.
RMAN> SWITCH DATAFILE '+DATA/datafile/datafile.dbf' TO 'COPY;


Após isto conecte no oracle e certifique-se de que realmente copiou o datafile.
SQL> SELECT file_name FROM dba_data_files;


Caso tudo tenha ocorrido com sucesso você já pode setar a tablespace para online.
Após isso entre no Gerenciador do ASM (asmcmd) e apague o datafile manualmente

asmcmd
ASMCMD> rm DATA/datafile/datafile.dbf
ASMCMD>

quinta-feira, 24 de março de 2011

Oracle para atualizações para o Processador Itanium

Hoje a Oracle anunciou que não irá continuar a desenvolver atualizações para a plataforma Itanium da HP/UX.

Então pense bem em comprar um processador Itanium para sua empresa, você poderá ficar na mão mais para frente.

Noticia completa aqui.

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

quarta-feira, 23 de março de 2011

Recuperar datafile apagado, sem backup

Hoje aprenderemos a fazer mágica.

Como assim recuperar um arquivo deletado sem backup?
Primeiro preciso lhes dizer que esta tecnica só funciona em linux ou UNIX.
Quando a instância é iniciada, o DBWR adquire um lock do Sistema Operacional em todos os datafiles.
Desta forma, se um datafile for apagado com o comando rm, apenas o seu ponteiro é removido, o arquivo continuará gravado no filesystem, embora não pareça.
É por esse mesmo motivo que em Unix, ao se remover um grande arquivo de log (por exemplo, diag.log),
o espaço livre não é liberado até o processo que estava gravando nele seja reiniciado.
Isto também acontece com o LGRW e os REDOs.

Nota: Ao reiniciar o oracle, ai sim este arquivo será perdido.

WARNING: Não Faça este teste em produção.

Vou fazer um passo a passo em minha instancia de testes para lhes mostrar como efetuar este processo.
Vamos ao Teste:

SQL> startup;
ORACLE instance started.

Total System Global Area 451964928 bytes
Fixed Size 1344812 bytes
Variable Size 272632532 bytes
Database Buffers 171966464 bytes
Redo Buffers 6021120 bytes
Database mounted.
Database opened.

SQL> select name from v$datafile;

NAME
--------------------------------------------------
/u01/app/oracle/oradata/lana/system01.dbf
/u01/app/oracle/oradata/lana/sysaux01.dbf
/u01/app/oracle/oradata/lana/undotbs01.dbf
/u01/app/oracle/oradata/lana/users01.dbf
/u01/app/oracle/oradata/lana/TEIKO.dbf
/u01/app/oracle/oradata/lana/lana_LOB.DBF

6 rows selected.

SQL> !rm /u01/app/oracle/oradata/lana/lana_LOB.DBF

SQL> select name from v$datafile;

NAME
--------------------------------------------------
/u01/app/oracle/oradata/lana/system01.dbf
/u01/app/oracle/oradata/lana/sysaux01.dbf
/u01/app/oracle/oradata/lana/undotbs01.dbf
/u01/app/oracle/oradata/lana/users01.dbf
/u01/app/oracle/oradata/lana/TEIKO.dbf
/u01/app/oracle/oradata/lana/lana_LOB.DBF

6 rows selected.

SQL> exit

Agora precisamos pegar o pid do dbwriter

-bash-3.1$ ps -ef | grep dbw
oracle 4023 1 0 14:37 ? 00:00:00 ora_dbw0_lana

Com o pid do dwhr temos de executar o comando lsof para ver quais arquivos este pid esta utilizando
Devemos pegar a quarta coluna deste comando para guardarmos

-bash-3.1$ lsof -p 4023 | grep lana_LOB.DBF
oracle 4023 oracle 264uW REG 8,1 52436992 785490 /u01/app/oracle/oradata/lana/lana_LOB.DBF (deleted)
Apenas por curiosidade vou entrar na pasta em que ficam os ponteiros no Linux e listar
-bash-3.1$ cd /proc/4023/ld
-bash-3.1$ ls -lrt 264*
lrwx------ 1 oracle dba 64 Mar 23 14:44 264 -> /u01/app/oracle/oradata/lana/lana_LOB.DBF (deleted)

Agora é que vem a mágica
Temos de efetuar alguns comandos no banco sequencialmente.
Enter user-name: / as sysdba

Connected to:
Oracle Database 11g Release 11.2.0.2.0 - Production

SQL> alter tablespace LANA_LOB READ ONLY;
alter tablespace LANA_LOB READ ONLY
*
ERROR at line 1:
ORA-01116: error in opening database file 6
ORA-01110: data file 6: '/u01/app/oracle/oradata/lana/lana_LOB.DBF'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3

SQL> !
É normal dar estes erros

bash-3.1$ pwd
/proc/4023/fd
bash-3.1$ cat 264 > /u01/app/oracle/oradata/lana/lana_LOB.DBF

Basta efetuarmos um cat do arquivo 264 que é o arquivo listado pelo lsof para dentro do arquivo deletado


bash-3.1$ exit
exit

SQL> alter tablespace LANA_LOB OFFLINE;

Tablespace altered.

SQL> alter tablespace LANA_LOB online;

Tablespace altered.

SQL> !ls -lrt /u01/app/oracle/oradata/lana/lana_LOB.DBF
-rw-r--r-- 1 oracle dba 52436992 Mar 23 14:48 /u01/app/oracle/oradata/lana/lana_LOB.DBF
Tae o seu arquivo Deletado.



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

FLASH CACHE

Hoje pela manhã recebi varios documentos do consultor Jailson, e alguns (os mais interessantes) vou postando para os leitores.

O Oracle 11gR2 possui o FLASH CACHE, onde você pode especificar um disco FLASH para ser utilizado como intermediário entre a RAM e o Storage.
Esta é uma das tecnologias utilizadas pelo EXADATA, que você pode utilizar em seu ambiente, com um hardware relativamente barato.
O parâmetro DB_FLASH_CACHE_FILE indica qual Device contém o dispositivo, e o DB_FLASH CACHE_SIZE limita seu tamanho, em Gigabytes.

SQL> SHOW PARAMETER flash_cache

NAME TYPE VALUE
———————————— ———– ——————————
db_flash_cache_file string
db_flash_cache_size big integer 0
SQL>

O FLASH CACHE só pode ser habilitado em Solaris ou Oracle Enterprise Linux. Daí vcês têm uma idéia de como a Oracle dá importância a esta New Feture.

O FLASH CACHE deve ser utilizado quando os Top Wait Events são db file sequential read e db file scattered read,
e o v$DB_CACHE_ADVICE indica que dobrar o tamanho do Cache irá ser benéfico.
Para ser realmente útil, o FLASH CACHE deve ser de 2 a 10 vezes o tamanho do Buffer Cache.

Se estiver utilizando RAC, o FLASH CACHE deve ser habilitado em todos os nós.

terça-feira, 15 de março de 2011

Criar Catalogo do Rman

Passo a Passo para criar um catalogo do Rman em sua base de dados.
Muito útil para gerenciar varias bases de dados em um único ponto.

###############################
# Criar Tablespace do Rman #
###############################
create tablespace rman datafile '+DGDADOS/tksup/rman01.dbf' size 100M AUTOEXTEND ON NEXT 20M MAXSIZE 2000M force logging;


#######################
# Criar owner #
#######################

create user rman identified by rman default tablespace RMAN temporary tablespace temp quota unlimited on RMAN;

#######################
# Grants #
#######################

grant recovery_catalog_owner to rman;
grant connect, resource to rman;


#######################
# criação do catalogo #
#######################

rman catalog rman/rman

create catalog;


########################
# Registrar database #
########################

rman catalog=rman/rman target=rman/rman
register database;

Standby via Rman

Boa Noite!

Segue abaixo o comando para montar um standby via rman.

rman catalog=rman/senha_owner_rman@conexão_produção target sys/senha_sys@conexão_produção auxiliary / log=rman.log
run {
allocate auxiliary channel T1 device type disk;
restore controlfile from 'CAMINHO';
alter database mount;
set until time "to_date('DD-MM-YYYY 17:40:00','dd-mm-yyyy hh24:mi:ss')";
duplicate target database for standby;
}

legal lembrar que é interessante setar corretamente no init os caminhos de db_file_convert ou setar no proprio rman os parametros de set_new_name

"DB_FILE_NAME_CONVERT = ('/PRIM/','/STBY/');"#Parametro a ser inserido no init.
"set newname for datafile 5 to '/u01/oradata/lana.dbf';" #Parametro a ser colocado antes do comando de duplicate no rman.

Qualquer duvida!

segunda-feira, 7 de março de 2011

sqlplus: error while loading shared libraries

ERRO:
$ORACLE_HOME/bin/sqlplus
/u01/app/oracle/product/11.1.0/bin/sqlplus: error while loading shared libraries: /u01/app/oracle/product/11.1.0/lib/libnnz11.so: cannot restore segment prot after reloc: Permission denied


Solução:

1. Login como root

2. vi /etc/selinux/config

3. desabilitar o SELINUX conforme abaixo:
SELINUX=disabled

4. reiniciar o servidor.

Problema Resolvido.

É interessante já na instalação do Linux desabilitar o SELINUX, mas muita gente mantém habilitado pensando estar fazendo um bem para a segurança do SO. Bem se você já não vai abrir o seu linux para o publico (http, ftp, etc) Fica difícil alguém tentar burlar alguma falha de segurança!

Para maiores detalhes sobre SELINUX visite o site http://pt.wikipedia.org/wiki/SELinux

O fato é que não adianta você habilitar o SELinux e não criar políticas de segurança pra ele, é igual instalar o Active Directory e não configurar.(apenas comparação)

Resolvido junto com Reginaldo

Upgrade 11.2.0.2

É importante notar uma grande mudança na forma em que a Oracle passa a tratar os Upgrades de versões a partir da nova versão 11.2.0.2.

Para diminuir o Downtime do serviço ela passou a efetuar o upgrade com a base no ar.

Nesta nova versão você pode efetuar o upgrade com a sua base de produção rodando, parando apenas para efetuar o DBUA, ou melhor dizendo o upgrade na base. Conforme Note 1189783.1 Você poderá efetuar o upgrade deste patch de duas formas.

Out-of-place upgrade: Recomendado pela oracle. Você instalará o patch de uma nova localização para o ORACLE_HOME. Você apenas deverá certificar que há espaço disponível em seu ambiente para um novo ORACLE_HOME.
Após este processo você deverá conferir/modificar os arquivos de tnsnames, listener e oratab. (Conferir todas rotinas que possam influenciar no sistema para direcioná-las para o novo ORACLE_HOME).


In-place upgrade: Modo antigo de atualizar. Parar banco, efetuar backup do ORACLE_HOME, efetuar upgrade de maneira convencional. Oracle só recomenda esta atualização para ambientes que não tenham espaço em disco.
Requer backup de todas as instancias ligadas ao ORACLE_HOME a ser atualizado.


Com esta mudança na atualização ficou significativamente mais facil de efetuar o Upgrade do banco, tempo de parada menor, menos possibilidades de erros e maior facilidade de rollback.

Muito bom esta linha de raciocínio da Oracle.

Erro no Enterprise Manager após mudanças de Horário de verão.

Buenas.

Este erro ocorre em 100% dos Bancos que estão configurados o EM, ao trocar a hora no server referente ao horário de verão o EM até levanta mas mostra vários erros na tela se tornando impossível trabalhar.

Para resolver este problema vou postar um script muito útil que poderá lhe ajudar apenas executando um comando.

Vale lembrar que este script é utilizado apenas para plataforma UNIX.
Antes de rodar o script, certifique-se de que a variável TZ esteja configurada no server.

Copiar e colar o script abaixo em um arquivo sh e mandar executar.

#######################################
# SCRIPT NAME: set_agent_tzrgn.sh
# PURPOSE: Update the timezone for dbsoncole. FYI - database timezone should be updated first.
# USAGE . ./set_agent_tzrgn
# Configure the oracle home and ORACLE_SID before sourcing this script.
#
#set -vx

echo "Report the current timezone from the OS."
echo $TZ

echo "Check to see if the reported timezone is supported by the agent."
grep $TZ $ORACLE_HOME/sysman/admin/supportedtzs.lst

echo "Check to see the current timezone as configured for the agent."
grep TZ $ORACLE_HOME/`hostname`_$ORACLE_SID/sysman/config/emd.properties

# Just a reporting step.
emctl status agent

echo "This should display current timezone as reported by OS TZ value."
emctl config agent getTZ



echo "Take OS TZ and update emd.properties."
echo "resetTZ may send output to the screen on the next command needed in sqlplus."
emctl resetTZ agent
grep TZ $ORACLE_HOME/`hostname`_$ORACLE_SID/sysman/config/emd.properties

# Review and set the EMDROOT then validate the new timezone
emctl getemhome
export EMDROOT=$ORACLE_HOME/`hostname`_$ORACLE_SID
emdctl validateTZ agent $TZ

echo "Make sure the dbconsole is shutdown."
emctl stop dbconsole

# Just a reporting step.
emctl config agent getTZ

# These should be the same port and server as reported by the resetTZ command
hostname=`hostname`
agentport=`grep "Agent Port" $ORACLE_HOME/install/portlist.ini|grep $ORACLE_SID|awk '{print $7}'`

# Create timezone update sql script.
echo "
set echo on verify on feedback on autocommit off;
WHENEVER OSERROR EXIT SQL.SQLCODE ROLLBACK
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK
prompt Updating dbconsole timezone for &1
alter session set current_schema = SYSMAN;
exec mgmt_target.set_agent_tzrgn('&2:&3','&4');
commit;
exit SQL.SQLCODE
" > /tmp/set_agent_tzrgn_""$$"".sql

echo "\nExecute set_agent_tzrgn.sql script to update the dbconsole config for sysman."
$ORACLE_HOME/bin/sqlplus -S "/ as sysdba" @/tmp/set_agent_tzrgn_""$$"".sql $ORACLE_SID $hostname $agentport $TZ
SQLRESULT=$?
if \[ $SQLRESULT -eq 0 \] ; then
echo "\nBrowse to the URL as reported by the startup of dbconsole."
else
echo "\nFAILED: The set_agent_tzrgn task failed."
fi
rm /tmp/set_agent_tzrgn_""$$"".sql

emctl start dbconsole

echo "\nTimezone update for dbconsole is finished."
echo "\nFor further details on resetTZ and set_agent_tzrgn see:"
echo "Oracle® Enterprise Manager Advanced Configuration 10g Release 5 (10.2.0.5) E10954-02 March 2009."
set +vx