Olas meus caros,
Depois de 2 meses ausente, finalmente consegui um tempo pra postar um tópico. Desde o início da confusão envolvendo Piquet filho, Renault e Briatore fiquei quietinho só observando. Não sei se podemos qualificar como maior escândalo da história da F1, pois só nos últimos dois anos tivemos dirigente fazendo orgia com temática nazista, engenheiro vendendo informações de um time pro outro, piloto e equipe mentindo na cara dura pra ganhar 1 ponto a mais na corrida. Enfim, dali podemos esperar qualquer coisa.
De qualquer forma não me lembro de algo tão ardil nesses 25 anos que acompanho a F1.
Disso tudo apenas um detalhe me veio à cabeça. Imaginem se o Hamilton não passa pelo glock e o título do ano passado fica nas mãos do Massa. Daí 1 ano depois, surge esse escândalo, e chegamos a conclusão que se não fosse a tramoia o Alonso terminaria a prova atrás do Hamilton, que por sua vez terminaria a prova em segundo e somaria 8 pontos ao invés de 6. Ou seja, a presepada da Renault teria mudado o vencedor do campeonato. Já pensaram nisso? o título de 2008 agora estaria sob júdice.
Só um detalhe que dá a dimensão de onde o Piquet filho se meteu.
[]'s
Marcio.
quarta-feira, 23 de setembro de 2009
sexta-feira, 24 de julho de 2009
Palpites para a Hungria
Bem pessoal, estou de volta!
Começo deixando um link pra apreciarem uma volta virtual no circuito de Hungaroring. http://esporte.ig.com.br/grandepremio/f12009/f12009.html
Meu palpite pra corrida é que dê Brawn. Porque? porque a pista da Hungria favorece o grip mecanico mais ajustado da equipe de Ross. Os carros da Red Bull tem como grande trunfo a aerodinâmica, marca registrada do Adrian desde os tempos das Willians de outro planeta. Só da Red Bull se chover ou se a temperatura cair muito. A primeira hipótese é mais louvável, já a segunda acho díficil, na Hungria nessa época sempre faz muito calor.
Particularmente vou torcer pra Red Bull vencer, pra dar mais emoção ao campeonato!
Minha aposta é Button em primeiro, Rubens em segundo e Vettel em terceiro. Nelsinho que corre contra a degola não deve fazer grande coisa e acredito que será demitido no fim da prova.
Abraço a todos.
Boa corrida.
Começo deixando um link pra apreciarem uma volta virtual no circuito de Hungaroring. http://esporte.ig.com.br/grandepremio/f12009/f12009.html
Meu palpite pra corrida é que dê Brawn. Porque? porque a pista da Hungria favorece o grip mecanico mais ajustado da equipe de Ross. Os carros da Red Bull tem como grande trunfo a aerodinâmica, marca registrada do Adrian desde os tempos das Willians de outro planeta. Só da Red Bull se chover ou se a temperatura cair muito. A primeira hipótese é mais louvável, já a segunda acho díficil, na Hungria nessa época sempre faz muito calor.
Particularmente vou torcer pra Red Bull vencer, pra dar mais emoção ao campeonato!
Minha aposta é Button em primeiro, Rubens em segundo e Vettel em terceiro. Nelsinho que corre contra a degola não deve fazer grande coisa e acredito que será demitido no fim da prova.
Abraço a todos.
Boa corrida.
Marcadores:
Adrian Newey,
Button,
Hungaroring,
Nelsinho,
Ross Brawn
segunda-feira, 13 de julho de 2009
Rubinho foi roubado?
olá prezado leitor,
Depois de algumas semanas ausentes por falta de tempo pra escrever estou de volta.
O assunto do dia nas rodas de conversa sobre F1 é de novo, Rubens Barrichello, não porque ganhou, mas porque mais uma vez perdeu e saiu dizendo que foi roubado.
Pra quem não viu a corrida, O Rubens teve um problema no segundo pit e perdeu 5 segundos, voltando 3 ou 4 segundos à frente do Button. E pra surpresa geral (não minha), ele foi chamado antes do Button aos boxes para fazer o terceiro e ultimo re-abastecimento. E como era previsto foi ultrapassado pelo inglês, numa manobra clara de favorecimento ao primeiro piloto (agora declarado). Ora, caro leitor, se você fosse o dono da equipe e tivesse que decidir em favor de 1 piloto você escolheria o que esta na liderança e tem chance claras de ser campeão ou optaria por não intervir na disputa? mesmo sabendo que disputa essa vale milhões de dólares e muitíssimo prestígio no fim do ano...nem precisa pensar muito né. Basta lembrar do Massa ano passado que perdeu o título por 1 ponto apenas. Porque a Ferrari em Xangai não chamou Kimi aos boxes pra que Massa ganhasse 1 ponto a mais no fim da corrida? essa atitude poderia ter dado o título a ele no fim do ano. Se a Ferrari tivesse feito isso algum brasileiro iria reclamar? alguém sairia em defesa do pobre finlandês?
Voltando a corrida...Prefiro ver a manobra da Brown por outro prisma. Rubinho andou na frente do Button o final de semana inteiro, é verdade, mas na corrida teve a chance de ganhar 1 ou 2 segundos antes do primeiro pit e poder voltar à pista antes do Massa. O que poderia ter mudado sua sorte, já que voltando atrás, perdeu mais de 15 segundos, que no fim fez falta. Chegando na frente das Red Bulls ele teria contribuído enormemente para o bem da equipe já que tiraria pontos preciosos dos rivais e deixaria o chefe feliz. O erro no segundo pit existiu e tirou dele, como já disse antes, 5 segundos, mas daí dizer que foi um ato deliberado, que foi proposital pra prejudicá-lo e depois dar a Button sua posição é demais. Mais uma vez a imprensa que transmite tenta encobrir a realidade e mostrar ao publico que o brasileirinho é prejudicado em detrimento do inglês, filme mais do que visto nos tempos de Ferrari. O que ninguém fala e que está na cara, é que Rubens não foi rápido quando devia e poderia ser. A imagem do Button balançando o carro de um lado pro outro pra aquecer os pneus e tentar extrair o máximo do equipamento mostra a diferença de atitude dos dois pilotos.
Não pretendo aqui no blog malhar o Rubinho como tem sido de costume por estas bandas nos últimos 15 anos, até porque acho que ele é sim um ótimo piloto. Mas não dá pra defendê-lo numa situação como esta. Mais uma vez ele passou do limite nas declarações e no dia seguinte voltou atrás, essa falta de postura é que tem sido o grande algoz do piloto desde o início de carreira.
E por fim, à equipe não interessa em nada prejudicar o Rubinho e devolvê-lo à pista atrás da Red Bull de Vettel, que todos sabem é o grande rival de Button desde o início da temporada. E muito me surpreende ver jornalistas sérios entrarem no embalo e corroborar as declarações infelizes do brasileiro, da TV oficial isso é normal, são sensacionalistas e ufanistas mesmo....
Quanto à corrida, esta foi mais divertida. Teve mais variações e a definição do vencedor, ao contrário das provas anteriores, só ocorreu na segunda metade da prova.
Webber, um dos mais antipáticos pilotos da F1 ganhou com justiça sua primeira prova e comemorou muito. Verdade seja dita, ele começou o ano tomando pau do Vettel e mostrou frieza pra equilibrar a disputa. Mas ainda acho o Vettel é muito mais piloto. A tempos atrás disse que o Alemão ainda não está pronto pra ser campeão, pois é muito jovem e comete muitos erros, mas se tem alguém que pode jogar areia na farofa do inglês, esse alguém, ainda é Vettel.
[ ] 's
Ate o proximo post
Marcio Almeida.
Depois de algumas semanas ausentes por falta de tempo pra escrever estou de volta.
O assunto do dia nas rodas de conversa sobre F1 é de novo, Rubens Barrichello, não porque ganhou, mas porque mais uma vez perdeu e saiu dizendo que foi roubado.
Pra quem não viu a corrida, O Rubens teve um problema no segundo pit e perdeu 5 segundos, voltando 3 ou 4 segundos à frente do Button. E pra surpresa geral (não minha), ele foi chamado antes do Button aos boxes para fazer o terceiro e ultimo re-abastecimento. E como era previsto foi ultrapassado pelo inglês, numa manobra clara de favorecimento ao primeiro piloto (agora declarado). Ora, caro leitor, se você fosse o dono da equipe e tivesse que decidir em favor de 1 piloto você escolheria o que esta na liderança e tem chance claras de ser campeão ou optaria por não intervir na disputa? mesmo sabendo que disputa essa vale milhões de dólares e muitíssimo prestígio no fim do ano...nem precisa pensar muito né. Basta lembrar do Massa ano passado que perdeu o título por 1 ponto apenas. Porque a Ferrari em Xangai não chamou Kimi aos boxes pra que Massa ganhasse 1 ponto a mais no fim da corrida? essa atitude poderia ter dado o título a ele no fim do ano. Se a Ferrari tivesse feito isso algum brasileiro iria reclamar? alguém sairia em defesa do pobre finlandês?
Voltando a corrida...Prefiro ver a manobra da Brown por outro prisma. Rubinho andou na frente do Button o final de semana inteiro, é verdade, mas na corrida teve a chance de ganhar 1 ou 2 segundos antes do primeiro pit e poder voltar à pista antes do Massa. O que poderia ter mudado sua sorte, já que voltando atrás, perdeu mais de 15 segundos, que no fim fez falta. Chegando na frente das Red Bulls ele teria contribuído enormemente para o bem da equipe já que tiraria pontos preciosos dos rivais e deixaria o chefe feliz. O erro no segundo pit existiu e tirou dele, como já disse antes, 5 segundos, mas daí dizer que foi um ato deliberado, que foi proposital pra prejudicá-lo e depois dar a Button sua posição é demais. Mais uma vez a imprensa que transmite tenta encobrir a realidade e mostrar ao publico que o brasileirinho é prejudicado em detrimento do inglês, filme mais do que visto nos tempos de Ferrari. O que ninguém fala e que está na cara, é que Rubens não foi rápido quando devia e poderia ser. A imagem do Button balançando o carro de um lado pro outro pra aquecer os pneus e tentar extrair o máximo do equipamento mostra a diferença de atitude dos dois pilotos.
Não pretendo aqui no blog malhar o Rubinho como tem sido de costume por estas bandas nos últimos 15 anos, até porque acho que ele é sim um ótimo piloto. Mas não dá pra defendê-lo numa situação como esta. Mais uma vez ele passou do limite nas declarações e no dia seguinte voltou atrás, essa falta de postura é que tem sido o grande algoz do piloto desde o início de carreira.
E por fim, à equipe não interessa em nada prejudicar o Rubinho e devolvê-lo à pista atrás da Red Bull de Vettel, que todos sabem é o grande rival de Button desde o início da temporada. E muito me surpreende ver jornalistas sérios entrarem no embalo e corroborar as declarações infelizes do brasileiro, da TV oficial isso é normal, são sensacionalistas e ufanistas mesmo....
Quanto à corrida, esta foi mais divertida. Teve mais variações e a definição do vencedor, ao contrário das provas anteriores, só ocorreu na segunda metade da prova.
Webber, um dos mais antipáticos pilotos da F1 ganhou com justiça sua primeira prova e comemorou muito. Verdade seja dita, ele começou o ano tomando pau do Vettel e mostrou frieza pra equilibrar a disputa. Mas ainda acho o Vettel é muito mais piloto. A tempos atrás disse que o Alemão ainda não está pronto pra ser campeão, pois é muito jovem e comete muitos erros, mas se tem alguém que pode jogar areia na farofa do inglês, esse alguém, ainda é Vettel.
[ ] 's
Ate o proximo post
Marcio Almeida.
segunda-feira, 8 de junho de 2009
Título é de Button, só resta saber em qual prova
Bem, estou de volta pra comentar o GP da Turquia...
Encerrado o domínio do Massa, com nova vitória do Button. É o melhor início de temporada desde que o Schumaquer venceu 12 das 13 primeiras provas em 2004. O erro do Vettel logo no início da corrida não mudou em nada o resultado. Foi visível o ritmo mais forte que o Button imprimiu, e me arrisco a dizer que ele teria vencido do mesmo modo se o Vettel não tivesse errado. Provavelmente o superaria após a primeira rodada de pit stop's.
Como disse na última coluna o rival do Button é o Vettel e não Rubens, e sendo assim, este já tem 32 pontos de vantagem e não tenho mais dúvidas de que será campeão. Acredito que ele pode até mesmo quebrar o record do Mansel, que foi campeão com 5 provas de antecipação em 1992 -.
Vettel cometeu um erro infantil, complicou sua prova e mostrou que ainda não está pronto pra ser campeão. Depois com a mudança de estratégia, que no meu modo de pensar foi válida sim, pois colocou de volta o Vettel na corrida e se esse tivesse conseguido ultrapassar Button e abrir vantagem teria chance de vencer a prova. Mas acabou ficando atrás do inglês, e sequer tentou atacar. Com isso perdeu tempo e a segunda posição pro Webber no fim da corrida. A atitude da Red Bull mandando Vettel tirar o pé e não forçar uma briga desnecessária com o Webber tirou um pouco da emoção no final da prova, embora do ponto de vista de equipe foi a atitude mais sensata.
Webber, superou Vettel e completou a prova em segundo - ninguém fala dele, mas já é o quarto no campeonato e está a apenas 1,5 ponto atrás do companheiro, que se tratando do alemão não é demérito nenhum -.
Rubinho teve azar de novo - incrível como tudo dá errado no carro dele e nunca no do companheiro - e abandonou a prova com problemas no câmbio.
No mais, a corrida foi chata e sem grandes alterações. Massa foi sexto, mostrando que a evolução apresentada em Mônaco foi mais pelas características da pista do que pelas inovações apresentadas. Piquet de novo não foi bem e deve ser demitido no fim do ano.
[ ]'s
Márcio Almeida.
quarta-feira, 3 de junho de 2009
Features 10 g - Data Pump - I
Olá pessoal,
Estou iniciando hoje uma série de matérias sobre recursos do Oracle 10g. Você leitor deve estar se perguntando porque optei por falar do 10g em detrimento ao 11g. A resposta é simples, o 10g é um produto maduro, e quando se pensa numa migração de 8i ou 9i, a aposta é sempre no 10g. Em outro momento pretendo abrir uma série pra falar dos recursos do 11g, e assim podemos traçar um paralelo entre as duas versões.
Para iniciar a série escolhi o data pump, utilitário de importação e exportação introduzido pelo 10g e que representa uma revolução com relação aos seus antecessores: import/export.
Antes do Data pump, as migrações de grandes bases com export/import eram geralmente descartadas, devido às limitações de performance dessas ferramentas. Nesse cenários o Data pump passa a ser uma opção viável, pois em alguns casos sua performance durante uma importação chega a ser 5 vezes mais rápido que o import convencional.
Interatividade
- Monitorar de forma mais eficaz a execução da exportação / importação, acompanhando o
- Permite suspender um trabalho e retomar do ponto que parou (pause/resume);
- Anexar um trabalho a uma exportação em execução;
- Reiniciar um trabalho que falhou a partir do ponto que parou;
- Filtrar o que vai ser exportado: chegando ao nivel de exportar sql de objetos do banco.
Performance
- Exportação até 12 vezes mais rápida e importação até 5 vezes mais rápida;
- Parelismo, você pode abrir operações paralelas que vão gerar vários arquivos de dump
simultâneos.
Nos próximos dias publicarei artigos com exemplos de como trabalhar com data pump explorando ao máximo os recursos citados acima.
Ate lá!
[ ]'s
Estou iniciando hoje uma série de matérias sobre recursos do Oracle 10g. Você leitor deve estar se perguntando porque optei por falar do 10g em detrimento ao 11g. A resposta é simples, o 10g é um produto maduro, e quando se pensa numa migração de 8i ou 9i, a aposta é sempre no 10g. Em outro momento pretendo abrir uma série pra falar dos recursos do 11g, e assim podemos traçar um paralelo entre as duas versões.
Para iniciar a série escolhi o data pump, utilitário de importação e exportação introduzido pelo 10g e que representa uma revolução com relação aos seus antecessores: import/export.
Antes do Data pump, as migrações de grandes bases com export/import eram geralmente descartadas, devido às limitações de performance dessas ferramentas. Nesse cenários o Data pump passa a ser uma opção viável, pois em alguns casos sua performance durante uma importação chega a ser 5 vezes mais rápido que o import convencional.
Interatividade
- Monitorar de forma mais eficaz a execução da exportação / importação, acompanhando o
volume executado e o total e assim estimar tempo de duração;
- Interação com rotinas pl/sql;
- Permite fazer pesquisa em objetos antes mesmo de importar o dump.
Eficácia
- Interação com rotinas pl/sql;
- Permite fazer pesquisa em objetos antes mesmo de importar o dump.
Eficácia
- Permite suspender um trabalho e retomar do ponto que parou (pause/resume);
- Anexar um trabalho a uma exportação em execução;
- Reiniciar um trabalho que falhou a partir do ponto que parou;
- Filtrar o que vai ser exportado: chegando ao nivel de exportar sql de objetos do banco.
Performance
- Exportação até 12 vezes mais rápida e importação até 5 vezes mais rápida;
- Parelismo, você pode abrir operações paralelas que vão gerar vários arquivos de dump
simultâneos.
Nos próximos dias publicarei artigos com exemplos de como trabalhar com data pump explorando ao máximo os recursos citados acima.
Ate lá!
[ ]'s
Márcio Almeida.
terça-feira, 26 de maio de 2009
Piração total !
Quer fazer um tour virtual por Paris de Ferrari? clique aqui...Será que a pressa toda era saudade da moça? Ou será que o abraço no final é de despedida, porque ele foi preso depois?
[]'s
[]'s
Hélio: retorno fenomenal
O maior acontecimento esportivo do final de semana foi a vitória do Hélio Castro Neves na lendária prova americana, as 500 milhas de Indianápolis. Pra quem não sabe, Hélio esteve até bem pouco tempo atrás sob julgamento de um processo movido pelo fisco americano e tudo indicava que seria condenado a uma pena que poderia chegar a 35 anos de prisão. O mais excepcional de tudo foi a forma como ele voltou às pistas e conseguiu resultados extraordinários depois de tanto tempo sem poder correr (quase 6 meses de inatividade).
A seqüência dos fatos:
- Início do calvário. No final do ano passado é preso e paga vultuosa quantia de fiança.
- 17/04, Helio e Katiucia (não confundir com aquela que beijou o Bono) foram
inocentados dos seis crimes de sonegação fiscal ao qual eram acusados, maiores
detalhes clique aqui.
- 18/04, volta ao cockpit da Penske nos treinos de Long Beach e consegue a oitava
posição para o Grid de largada.
- 19/04, chega em sétimo na corrida.
- 09/05, faz a pole para as 500 milhas de Indianapólis.
- 24/05, vence pela terceira vez a prova mais importante do calendário americano,
quiçá mundial.
Incrível não?! Uma recuperação que só encontra paralelo no retorno de Ronaldo em 2002, e olhe lá...
Enquanto isso, a equipe dos B’s (Brawn, Button, Barrichelo e Branson) continua imbatível. A bem da verdade só perderam na Malásia porque caiu um pé d’agua. Vitórias a parte, o que acho mais interessante é que a cada prova os analistas elegem um novo desafiante à hegemonia da Brawn. No início da temporada era Willians e Toyota, depois foi a Red Bull, e agora Ferrari. O fato é que um a um os rivais foram caindo e os nomes se alternando no pódio. O maior beneficiado disso é Button, que a esta altura já tem 28 pontos de vantagem para o rival mais próximo, Vettel (Barrichelo não é necessariamente um rival). Nesse ritmo poderemos ter um campeão já definido no GP da Europa ou no GP da Bélgica. Sem querer ser mãe Diná, mas já sendo.
A Red Bull estreou seu novo difusor e o resultado não foi bem o esperado. Vamos ver como se sairá em Instambul. A Mclaren mostrou as deficiências do carro. A Renault só não passa vergonha porque tem Alonso. A Toyota, cadê a Toyota? A Willians reina nos treinos livres, mas quando vale alguma coisa fica pra trás...
Sobre o “retorno” da Ferrari, que aliás foi amplamente explorado pela Globo – não sei se por empolgação do locutor ou pra estimular a audiência, acho que um pouco de cada, o que vocês acham?-, tenho minhas dúvidas. Mônaco é um circuito especial, diferente dos outros, e por isso mesmo não serve de parâmetro. Só vamos de fato poder avaliar o desempenho da Ferrari na Turquia – prova que ela venceu todas as corridas até hoje, 3 com Massa e 1 com Schumaquer - . Na prática eu diria que se a Brawn passear em Istambul os rivais podem jogar a toalha e esquecer o campeonato desse ano.
[]’s
A seqüência dos fatos:
- Início do calvário. No final do ano passado é preso e paga vultuosa quantia de fiança.
- 17/04, Helio e Katiucia (não confundir com aquela que beijou o Bono) foram
inocentados dos seis crimes de sonegação fiscal ao qual eram acusados, maiores
detalhes clique aqui.
- 18/04, volta ao cockpit da Penske nos treinos de Long Beach e consegue a oitava
posição para o Grid de largada.
- 19/04, chega em sétimo na corrida.
- 09/05, faz a pole para as 500 milhas de Indianapólis.
- 24/05, vence pela terceira vez a prova mais importante do calendário americano,
quiçá mundial.
Incrível não?! Uma recuperação que só encontra paralelo no retorno de Ronaldo em 2002, e olhe lá...
Enquanto isso, a equipe dos B’s (Brawn, Button, Barrichelo e Branson) continua imbatível. A bem da verdade só perderam na Malásia porque caiu um pé d’agua. Vitórias a parte, o que acho mais interessante é que a cada prova os analistas elegem um novo desafiante à hegemonia da Brawn. No início da temporada era Willians e Toyota, depois foi a Red Bull, e agora Ferrari. O fato é que um a um os rivais foram caindo e os nomes se alternando no pódio. O maior beneficiado disso é Button, que a esta altura já tem 28 pontos de vantagem para o rival mais próximo, Vettel (Barrichelo não é necessariamente um rival). Nesse ritmo poderemos ter um campeão já definido no GP da Europa ou no GP da Bélgica. Sem querer ser mãe Diná, mas já sendo.
A Red Bull estreou seu novo difusor e o resultado não foi bem o esperado. Vamos ver como se sairá em Instambul. A Mclaren mostrou as deficiências do carro. A Renault só não passa vergonha porque tem Alonso. A Toyota, cadê a Toyota? A Willians reina nos treinos livres, mas quando vale alguma coisa fica pra trás...
Sobre o “retorno” da Ferrari, que aliás foi amplamente explorado pela Globo – não sei se por empolgação do locutor ou pra estimular a audiência, acho que um pouco de cada, o que vocês acham?-, tenho minhas dúvidas. Mônaco é um circuito especial, diferente dos outros, e por isso mesmo não serve de parâmetro. Só vamos de fato poder avaliar o desempenho da Ferrari na Turquia – prova que ela venceu todas as corridas até hoje, 3 com Massa e 1 com Schumaquer - . Na prática eu diria que se a Brawn passear em Istambul os rivais podem jogar a toalha e esquecer o campeonato desse ano.
[]’s
segunda-feira, 25 de maio de 2009
Queries hierárquicas em Oracle
Olá,
Na sexta uma programadora me procurou com dúvidas sobre as cláusulas "start with" e "connect by" no comando SQL. Eis, que hoje ao ler a newsletter de banco de dados do iMasters vi na lista de artigos um que falava sobre Queries hierárquicas. Coinciência, não? Achei a matéria do colega Ruben Badaró interessante, e resolvi post-la aqui. O link é http://imasters.uol.com.br/artigo/12551/oracle/queries_hierarquicas_em_oracle/.
Só acrescentaria ao que o colega escreveu a possibilidade de concatenar o Level com a coluna da tabela, criando um efeito semelhante ao de um sumário. Exemplo:
SELECT lpad('.', 2*Level) NOME Empregados
FROM
EMPREGADO
START WITH NOME='João'
CONNECT BY NOCYCLE PRIOR ID = SUPERVISOR;
Empregados
-------------
João
.......Pedro
.......Ricardo
...............José
[ ]'s
Márcio Almeida.
Na sexta uma programadora me procurou com dúvidas sobre as cláusulas "start with" e "connect by" no comando SQL. Eis, que hoje ao ler a newsletter de banco de dados do iMasters vi na lista de artigos um que falava sobre Queries hierárquicas. Coinciência, não? Achei a matéria do colega Ruben Badaró interessante, e resolvi post-la aqui. O link é http://imasters.uol.com.br/artigo/12551/oracle/queries_hierarquicas_em_oracle/.
Só acrescentaria ao que o colega escreveu a possibilidade de concatenar o Level com a coluna da tabela, criando um efeito semelhante ao de um sumário. Exemplo:
SELECT lpad('.', 2*Level) NOME Empregados
FROM
EMPREGADO
START WITH NOME='João'
CONNECT BY NOCYCLE PRIOR ID = SUPERVISOR;
Empregados
-------------
João
.......Pedro
.......Ricardo
...............José
[ ]'s
Márcio Almeida.
Marcadores:
Connect by,
SQL hierarquicos,
start with
sexta-feira, 15 de maio de 2009
Tabelas externas
O assunto de hoje será sobre um interessante recurso disponível no Oracle 10g: as tabelas externas. Como o nome diz, se trata de uma tabela ou arquivo que não reside no banco de dados. Com esse recurso é possível integrar diferentes bases e aplicações de forma simples e rápida. Usando recursos de paralelismo para geração dos dados, ou fazendo select's com ordenação envolvendo tabelas externas e tabelas nativas, insert's em tabelas da base através de select's em tabelas externas e por ae afora.
Vamos à pratica.
Criaremos um arquivo bancos.csv na pasta d:\oracle\externo, contendo o seguinte:
237,Banco Bradesco
1,Banco do Brasil S.A
356, Santander Brasil
2, Caixa Economica Federal
424, Banco Noroeste
Importante ressaltar que os arquivos devem estar no servidor onde roda o banco de dados, que nesse caso é windows.
O próximo passo é criar uma referência no BD para o diretório onde está o arquivo externo, atraves do comando create directory.
Create or replace directory dir_ext as 'd:\oracle\externo';
Create or replace directory dir_bad as 'd:\oracle\externo\bad';
Create or replace directory dir_log as 'd:\oracle\externo\log';
Supondo que temos um usuário financeiro, iremos conceder grant's de leitura e gravação nesse diretório para ele.
grant read, write on directory dir_ext to financeiro;
grant read, write on directory dir_bad to financeiro;
grant read, write on directory dir_log to financeiro;
Conn financeiro/financeiro;
Agora vamos criar duas tabelas: Bancos_ext e Bancos.
create table bancos
(
Banco_id number(4),
Banco_nome varchar2(30)
);
create table bancos_ext
(
Banco_id number(4),
Banco_nome varchar2(30)
)
organization external
(
type oracle_loader default directory dir_ext access parameters
(
records delimited by newline
badfile dir_bad:'bancos%a_%p.bad'
logfile dir_log:'bancos%a_%p.log'
fields terminated by ','
missing field values are null
(
banco_id,
banco_nome
)
)
Location ('bancos.csv')
)
Parallel
reject limit unlimited;
Vamos analisar o comando:
- Organization external: indica que se trata de uma tabela externa ao BD Oracle.
- Type oracle_loader: a interface usada pra fazer a carga será o oracle loader.
- Default directory dir_ext access parameters: indica o diretorio onde está o arquivo, nesse
caso definido pelo objeto directory dir_ext.
- Acces Parameters: Parametros de localização do arquivo no sistema operacional , badfiles,
logfiles, etc;
- Records delimitd by newline: o banco entenderá que ao encontrar um fim de linha irá
adicionar um novo registro na tabela.
- Badfile dir_Bad: caso não queira gerar badfile substitua por NOBADFILE;
- Logfile dir_log: caso não queira gerar log substitua por NOLOGFILE.
Apos criar a tabelas, habilitamos o paralelismo para dml (operações de insert, delete e update), e em seguida executamos um insert na tabela bancos fazendo leitura na tabela externa.
alter session enable parallel dml;
insert into bancos
(
Banco_id,
Banco_nome
)
Select * From bancos_ext;
Vamos para o próximo caso. Join envolvendo uma tabela externa e uma tabela do DB.
Select * from agencias a, bancos_ext b
where
a.banco_id = b.banco_id
and b.banco_id = 1;
Limitações de uso de tabela externa
Em uma tabela externa não é possível realizar uma operação de DML (insert, delete e update), tampouco criar um índice, embora seja possível fazer uma ordenação.
Não é permitido também criar tabelas externas com campos do tipo clob, blob e long.
Criação de tabela externa usando datapump e paralelismo
Nesse exemplo criaremos uma tabela externa a partir de uma tabela do BD.
Create agencias_ext (banco_id,agencia_id,endereco,numero,bairro,cidade,uf)
Organization external
(type oracle_datapump
default directory dir_ext
location ('agencias.csv'))
parallel 4
as
select banco_id,agencia_id,endereco,numero,bairro,cidade,uf
from agencias;
Podemos ainda gerar os dados em múltiplos diretórios simultaneamente:
create or replace directory dir_ext_1 as 'd:\oracle\externo\dir1';
create or replace directory dir_ext_2 as 'd:\oracle\externo\dir2';
Create agencias_ext (banco_id,agencia_id,endereco,numero,bairro,cidade,uf)
Organization external
(type oracle_datapump
default directory dir_ext
location ('dir_ext_1:agencias.csv','dir_ext_2:agencias.csv'))
parallel 2
as
select banco_id,agencia_id,endereco,numero,bairro,cidade,uf
from agencias;
É isso aí...
[]'s
Vamos à pratica.
Criaremos um arquivo bancos.csv na pasta d:\oracle\externo, contendo o seguinte:
237,Banco Bradesco
1,Banco do Brasil S.A
356, Santander Brasil
2, Caixa Economica Federal
424, Banco Noroeste
Importante ressaltar que os arquivos devem estar no servidor onde roda o banco de dados, que nesse caso é windows.
O próximo passo é criar uma referência no BD para o diretório onde está o arquivo externo, atraves do comando create directory.
Create or replace directory dir_ext as 'd:\oracle\externo';
Create or replace directory dir_bad as 'd:\oracle\externo\bad';
Create or replace directory dir_log as 'd:\oracle\externo\log';
Supondo que temos um usuário financeiro, iremos conceder grant's de leitura e gravação nesse diretório para ele.
grant read, write on directory dir_ext to financeiro;
grant read, write on directory dir_bad to financeiro;
grant read, write on directory dir_log to financeiro;
Conn financeiro/financeiro;
Agora vamos criar duas tabelas: Bancos_ext e Bancos.
create table bancos
(
Banco_id number(4),
Banco_nome varchar2(30)
);
create table bancos_ext
(
Banco_id number(4),
Banco_nome varchar2(30)
)
organization external
(
type oracle_loader default directory dir_ext access parameters
(
records delimited by newline
badfile dir_bad:'bancos%a_%p.bad'
logfile dir_log:'bancos%a_%p.log'
fields terminated by ','
missing field values are null
(
banco_id,
banco_nome
)
)
Location ('bancos.csv')
)
Parallel
reject limit unlimited;
Vamos analisar o comando:
- Organization external: indica que se trata de uma tabela externa ao BD Oracle.
- Type oracle_loader: a interface usada pra fazer a carga será o oracle loader.
- Default directory dir_ext access parameters: indica o diretorio onde está o arquivo, nesse
caso definido pelo objeto directory dir_ext.
- Acces Parameters: Parametros de localização do arquivo no sistema operacional , badfiles,
logfiles, etc;
- Records delimitd by newline: o banco entenderá que ao encontrar um fim de linha irá
adicionar um novo registro na tabela.
- Badfile dir_Bad: caso não queira gerar badfile substitua por NOBADFILE;
- Logfile dir_log: caso não queira gerar log substitua por NOLOGFILE.
Apos criar a tabelas, habilitamos o paralelismo para dml (operações de insert, delete e update), e em seguida executamos um insert na tabela bancos fazendo leitura na tabela externa.
alter session enable parallel dml;
insert into bancos
(
Banco_id,
Banco_nome
)
Select * From bancos_ext;
Vamos para o próximo caso. Join envolvendo uma tabela externa e uma tabela do DB.
Select * from agencias a, bancos_ext b
where
a.banco_id = b.banco_id
and b.banco_id = 1;
Limitações de uso de tabela externa
Em uma tabela externa não é possível realizar uma operação de DML (insert, delete e update), tampouco criar um índice, embora seja possível fazer uma ordenação.
Não é permitido também criar tabelas externas com campos do tipo clob, blob e long.
Criação de tabela externa usando datapump e paralelismo
Nesse exemplo criaremos uma tabela externa a partir de uma tabela do BD.
Create agencias_ext (banco_id,agencia_id,endereco,numero,bairro,cidade,uf)
Organization external
(type oracle_datapump
default directory dir_ext
location ('agencias.csv'))
parallel 4
as
select banco_id,agencia_id,endereco,numero,bairro,cidade,uf
from agencias;
Podemos ainda gerar os dados em múltiplos diretórios simultaneamente:
create or replace directory dir_ext_1 as 'd:\oracle\externo\dir1';
create or replace directory dir_ext_2 as 'd:\oracle\externo\dir2';
Create agencias_ext (banco_id,agencia_id,endereco,numero,bairro,cidade,uf)
Organization external
(type oracle_datapump
default directory dir_ext
location ('dir_ext_1:agencias.csv','dir_ext_2:agencias.csv'))
parallel 2
as
select banco_id,agencia_id,endereco,numero,bairro,cidade,uf
from agencias;
É isso aí...
[]'s
Marcadores:
external table,
oracle_datapump,
oracle_loader,
organization external,
tabelas externas
Instalação de Oracle 9i em linux 64
Algum dia, meu caro leitor, você deve ter passado por um problema semelhante. Estou falando da instalação do Oracle 9i em linux RedHat 4.7 64 bits parar nos 17% e dalí não sair mais.
Nas notas de instalação 9i no Metalink não tem referência a esse problema. Após pesquisar em alguns fóruns achei um post em que o autor passava pelo mesmo problema, e um dos blogueiros tinha a solução.
Antes de rodar o installer do oracle execute o seguinte comando no linux:
$ export LD_ASSUME_KERNEL=2.4.19
[]'s
Marcio Almeida
Nas notas de instalação 9i no Metalink não tem referência a esse problema. Após pesquisar em alguns fóruns achei um post em que o autor passava pelo mesmo problema, e um dos blogueiros tinha a solução.
Antes de rodar o installer do oracle execute o seguinte comando no linux:
$ export LD_ASSUME_KERNEL=2.4.19
[]'s
Marcio Almeida
quinta-feira, 14 de maio de 2009
2º piloto de novo?
Último final de semana teve grande prêmio na Espanha, circuito da Catalunha, e mais uma vez deu Jenson Button, 4ª vitória esse ano. Barrichelo fez boa prova e chegou em segundo lugar por méritos - o primeiro pódio caiu no colo do brasileiro, apos Kubica e Vettel se encontrarem numa curva, no GP da Australia -.
O que deveria ser um motivo de comemoração acabou virando polêmica. De cabeça quente, deu declarações em tom ameaçador, e mais uma vez 'jogou pra torcida' se dizendo um injustiçado, e ameaçando se aposentar. Mesmo filme dos tempos de Ferrari.
Tentando entender o que ouve, analisei os tempos de volta da corrida. No terceiro trecho da prova (entre as voltas 32 e 49) Button ampliou a vantagem de 8 para 12.5 segundos - detalhe: mesmo pneu e mais ou menos a mesma quantidade de combustivel -. Após a última parada de ambos (volta 49 pro Button e 50 pro Rubens), Jenson voltou com 7 segundos de vantagem e partiu pra vencer a prova. Rubens teve 18 voltas pra tirar meros 4 segundos e voltar na frente. Mas como isso não ocorreu, ao contrário, deixou o Button abrir vantagem e perdeu a prova.
O piloto e seu engenheiro são livres para mudar a estratégia a qualquer momento da prova, conforme a leitura que faz da situação que se encontra na corrida. Foi o que o Jensou e seu engenheiro fizeram, mérito para eles. Rubens foi avisado por seu engenheiro que precisava ser rápido, muito rápido, mas não conseguiu. Não vejo sacanagem nisso.
Como disse o Schumacher em Florianópolis no desafio de kart: "Rubens reclama ganhando ou perdendo".
[]'s
Márcio Almeida
O que deveria ser um motivo de comemoração acabou virando polêmica. De cabeça quente, deu declarações em tom ameaçador, e mais uma vez 'jogou pra torcida' se dizendo um injustiçado, e ameaçando se aposentar. Mesmo filme dos tempos de Ferrari.
Tentando entender o que ouve, analisei os tempos de volta da corrida. No terceiro trecho da prova (entre as voltas 32 e 49) Button ampliou a vantagem de 8 para 12.5 segundos - detalhe: mesmo pneu e mais ou menos a mesma quantidade de combustivel -. Após a última parada de ambos (volta 49 pro Button e 50 pro Rubens), Jenson voltou com 7 segundos de vantagem e partiu pra vencer a prova. Rubens teve 18 voltas pra tirar meros 4 segundos e voltar na frente. Mas como isso não ocorreu, ao contrário, deixou o Button abrir vantagem e perdeu a prova.
O piloto e seu engenheiro são livres para mudar a estratégia a qualquer momento da prova, conforme a leitura que faz da situação que se encontra na corrida. Foi o que o Jensou e seu engenheiro fizeram, mérito para eles. Rubens foi avisado por seu engenheiro que precisava ser rápido, muito rápido, mas não conseguiu. Não vejo sacanagem nisso.
Como disse o Schumacher em Florianópolis no desafio de kart: "Rubens reclama ganhando ou perdendo".
[]'s
Márcio Almeida
Marcadores:
Brawn GP,
GP da Espanha,
Rubinho,
segundo piloto
Undo tablespace corrompida
A dias atras recebi uma ligação de um profissional desesperado porque o DB travou durante a madrugada e mesmo após 'startar' novamente continuava indisponível para o usuário.
A primeira coisa que pensei foi como e onde ele obteve meu telefone, mas dada a emergência da situação isso se tornou um problema menor. Deixando os pormenores de lado, vamos direto ao ponto:
- Entrei em conexão no servidor da empresa e acessei o BD. A principio a base estava disponível. Fiz alguns testes, todos bem suscedidos e portanto, o problema não era tão desesperador quanto parecia.
Peguei os log's de erros gerados pela base e vi que se trava de erro ao acessar a undo tablespace. Chequei os status das tablespaces, e estavam todas on-line, em seguida verifiquei os status dos segmentos de rollback e bingo, TODOS corrompidos:
SQL> select segment_name, status from dba_rollback_segs
where tablespace_name='UNDOTBS1'
SEGMENT_NAME STATUS
------------------------------ -------------------
_SYSSMU1$ NEED RECOVERY
Solução:
- Criar uma nova Undo tablespace:
SQL> Create undo tablespace undotbs1 datafile '/u02/oradata/undotbs2.dbf' size 2000m
reuse;
- Alterar a undo tablespace padrão do banco:
SQL> Alter system set undo_management='undotbs2' scope=spfile;
- Tornar offline o segmento de rollback corrompido:
SQL> Alter system set "_offline_rollback_segments"="_SYSSMU1$" scope=spfile;
- Restartar o banco e apagar o segmento corrompido:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> Startup
SQL> startupORACLE instance started.
Total System Global Area 353863224 bytes
Fixed Size 742968 bytes
Variable Size 285212672 bytes
Database Buffers 67108864 bytes
Redo Buffers 798720 bytes
Database mounted.
Database opened.
SQL> Drop rollback segment "_SYSSMU1$";
- Apagar a undo corrompida:
SQL> Drop tablespace undotbs1 including contents and datafiles;
Pronto, feito isso a base está disponivel novamente para DML.
[]'s
Marcio Almeida
A primeira coisa que pensei foi como e onde ele obteve meu telefone, mas dada a emergência da situação isso se tornou um problema menor. Deixando os pormenores de lado, vamos direto ao ponto:
- Entrei em conexão no servidor da empresa e acessei o BD. A principio a base estava disponível. Fiz alguns testes, todos bem suscedidos e portanto, o problema não era tão desesperador quanto parecia.
Peguei os log's de erros gerados pela base e vi que se trava de erro ao acessar a undo tablespace. Chequei os status das tablespaces, e estavam todas on-line, em seguida verifiquei os status dos segmentos de rollback e bingo, TODOS corrompidos:
SQL> select segment_name, status from dba_rollback_segs
where tablespace_name='UNDOTBS1'
SEGMENT_NAME STATUS
------------------------------ -------------------
_SYSSMU1$ NEED RECOVERY
Solução:
- Criar uma nova Undo tablespace:
SQL> Create undo tablespace undotbs1 datafile '/u02/oradata/undotbs2.dbf' size 2000m
reuse;
- Alterar a undo tablespace padrão do banco:
SQL> Alter system set undo_management='undotbs2' scope=spfile;
- Tornar offline o segmento de rollback corrompido:
SQL> Alter system set "_offline_rollback_segments"="_SYSSMU1$" scope=spfile;
- Restartar o banco e apagar o segmento corrompido:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> Startup
SQL> startupORACLE instance started.
Total System Global Area 353863224 bytes
Fixed Size 742968 bytes
Variable Size 285212672 bytes
Database Buffers 67108864 bytes
Redo Buffers 798720 bytes
Database mounted.
Database opened.
SQL> Drop rollback segment "_SYSSMU1$";
- Apagar a undo corrompida:
SQL> Drop tablespace undotbs1 including contents and datafiles;
Pronto, feito isso a base está disponivel novamente para DML.
[]'s
Marcio Almeida
Marcadores:
CORROMPIDA,
ORA-00111,
ORA-00600,
UNDO,
UNDO CORROMPIDA
Apresentação
Ola! Estou iniciando hoje o meu blog, e penso ser pertinente falar um pouco dos objetivos, e dos temas que devem nortear os post's. Como disse de forma suscinta na apresentação, sou analista de sistemas de formação e espealista em banco de dados Oracle. Já faz um tempo que a idéia de escrever sobre minhas experiências diárias e também debater sobre temas atuais ligados a minha profissão vem tomando forma. O momento chegou e o espaço foi criado.
Também acho importante salientar que este é um blog democrático e transparente, e nele pretendo abrir espaço pra divulgar experiências também dos frequentadores.
Outro assunto sobre o qual pretendo escrever será automobilismo, paixão deste blogueiro iniciante, inclusive o verde escolhido é em homenagem à Brawn GP, melhor coisa que aconteceu na F1 nos últimos tempos. E o nome escolhido é uma forma de juntar os dois temos que me motivam, e também uma alusão à formula 1 dos bancos - sem corporativismo -, o Oracle. Por hora é isso, espero contar com ajuda dos amigos blogueiros para que este espaço cresca e atinja os objetivos que me levaram a cria-lo.
[ ]'s
Márcio Almeida
Também acho importante salientar que este é um blog democrático e transparente, e nele pretendo abrir espaço pra divulgar experiências também dos frequentadores.
Outro assunto sobre o qual pretendo escrever será automobilismo, paixão deste blogueiro iniciante, inclusive o verde escolhido é em homenagem à Brawn GP, melhor coisa que aconteceu na F1 nos últimos tempos. E o nome escolhido é uma forma de juntar os dois temos que me motivam, e também uma alusão à formula 1 dos bancos - sem corporativismo -, o Oracle. Por hora é isso, espero contar com ajuda dos amigos blogueiros para que este espaço cresca e atinja os objetivos que me levaram a cria-lo.
[ ]'s
Márcio Almeida
Assinar:
Comentários (Atom)
