New Post

Rss

Showing posts with label Oracle. Show all posts
Showing posts with label Oracle. Show all posts
Thursday, July 12, 2012
no image

Big Data – Analisando o Oracle Exalytics (Business Intelligence)

Como muitos já sabem e/ou já estão acompanhando as notícias sobre Big Data, esta nova engenharia vem para apoiar e otimizar grande quantidade de dados. Quando trata-se somente de EPM e BI, alguns players, como Oracle e SAP, já saíram na frente.

Bom, antes de falar sobre Oracle Exalytics, vamos ao conceito de Big Data. Traduzindo-se ao pé da letra Big Data se transforma em “Dados Grandes”. Conceituando-se melhor ao mundo de TI, poderíamos contextualizar como “Grande Volume de Dados” e, historicamente falando, em tecnologia da informação sempre tivemos – e ainda temos – alguns problemas quando lidamos com bancos de dados com um grande volume, no que diz respeito a performance, retrieve lento, demora para execução de processos noturnos, entre outros. Agora, quando falamos de Business Intelligence (informações gerenciais), nos dias de hoje, não se pode permitir uma aplicação com baixa performance. Informações para tomada de decisão necessitam de alta disponibilidade e performance, trabalhando, se possível, em tempo real a fim de apoiar as tomadas de decisão dos executivos das empresas.

Nós também sabemos que as Informações Gerencias tem o seu insumo em bases de dados transacionais, planilhas eletrônicas, ERP’s etc. Quando falamos do legado de uma grande companhia, consequentemente, cairemos no problema de performance, pois lidaremos com o tal Big Data (Grande Volume de Dados). Repare que sempre quando falamos de performance, nossa primeira preocupação é o “Grande Volume de Dados” e, foi pensando na performance das informações gerenciais e na possibilidade de acelerá-la, mesmo trabalhando com um grande volume de dados, que a Oracle lançou o Oracle Exalytics.

Antes de falar do Exalytics, precisa-se contextualizar o Oracle Exadata. Este último é a engenharia responsável por suportar o grande volume de dados do seu Transacional, ou seja, otimizar a performance de seu legado.

O Oracle Exalytics vem para apoiar o Business Intelligence trabalhando em memória e fazendo com que as informações do BI sejam processadas instantâneamente. Vale a pena lembrar que o Oracle Exalytics In-Memory, que é um servidor, ou seja, um hardware, tem por objetivo atender aplicações do Oracle BI Foundation. O Oracle Exalytics consiste em Engenharia de Hardware e Software trabalhando juntos! Veja abaixo:

*Clique na imagem para ampliar.

Entendem o porquê da otimização da performance? O Servidor possui 1 TB de RAM, 40 processadores e para se conectar aos Data Warehouses e Data Marts possui uma altímissa velocidade de rede com portas de até 40Gb/s. Isso tudo trabalhando em conjunto, ou seja, tempo de resposta instantâneao.

Quem puder, leia o “Brief Introduction” a respeito do Oracle Exalytics in-memory, para entender a fundo como esta engenharia funciona e como poderá te ajudar em seus processos de BI.

Fonte 1: http://www.oracle.com/us/solutions/ent-performance-bi/business-intelligence/exalytics-bi-machine/overview/exalytics-introduction-1372418.pdf
Fonte 2: http://blog.businessintelligencebrasil.com/2012/05/noticia-analisando-o-oracle-exalytics.html

31 anos, casado, amantes de esportes e de música, profissional de Business Intelligence desde 2003, instrutor, palestrante, editor do Blog Business Intelligence Brasil e autor do livro Oracle Hyperion Essbase - Guia Prático.

Veja perfil e 3 post(s)

Saturday, May 5, 2012
no image

Medindo Throughput do Oracle Database com Calibrate IO

Uma das dúvidas mais comuns de Administradores de Banco de Dados é conseguir mensurar a quantidade de I/O ou throughput em MB de um Banco de Dados em relação aos dispositivos de armazenamento (storage).

Neste artigo será abordada uma maneira bastante simples, porém eficiente, de calcular othroughput de um Banco de Dados Oracle, independente da plataforma.

DBMS_RESOURCE_MANAGER

O Oracle Database Resource Manager (DBRM) permite que o Oracle gerencie / limite recursos utilizados pelo Banco de Dados.

A partir da versão 11g, o Oracle Database oferece uma nova procedure na package DBMS_RESOURCE_MANAGER. Esta procedure é chamado de CALIBRATE_IO e tem a função principal de mensurar a capacidade de I/O do dispositivo de Storage onde o Banco de Dados foi criado.

Através da execução via Bloco PL/SQL é possível fazer este cáculo de maneira bem simples. Abaixo descrição dos parâmetros da procedure CALIBRATE_IO

Parâmetros

DBMS_RESOURCE_MANAGER.CALIBRATE_IO (num_physical_disks      IN  PLS_INTEGER DEFAULT 1,max_latency             IN  PLS_INTEGER DEFAULT 20,max_iops                OUT PLS_INTEGER,max_mbps                OUT PLS_INTEGER,actual_latency          OUT PLS_INTEGER);Número de discos físicos onde o Database está alocado.Tolerância máximo em milisegundos para requisições de   I/O no Banco de dadosNúmero máximo de requisições de I/O por segundo que pode ser suportado pela estrutura de Armazenamento.As requisições de I/O são distribuídas através de leitura de Blocos do Banco de Dados.Throughput Máximo em MB/s que pode ser suportado pela estrutura de Armazenamento. As requisições são distribuídas em leituras de 1MB.Latência médis em milisegundos para leitura de blocos do Database.

Pré-Requistios

Antes da execução alguns pré-requisitos são necessários.

- Usuário com Privilégio SYSDBA (Normalmente executado com usuário SYS).

- Parâmetro TIMED_STATISTICS=TRUE

- ASYNCH_IO habilitado para todos os arquivos do Database. Para verificar, pode-se executar o script abaixo:

col name format a50SELECT name, asynch_io FROM v$datafile f,v$iostat_file iWHERE f.file#      = i.file_noAND filetype_name  = 'Data File'/

- Executar apenas uma operação (CALIBRATE) por vez.

- Em ambientes com Oracle Real Application Clusters, a carga será distribuída entre todos os Nodes.

Exemplo de Execução

SET SERVEROUTPUT ONDECLARE lat INTEGER; iops INTEGER; mbps INTEGER;BEGIN-- DBMS_RESOURCE_MANAGER.CALIBRATE_IO (, , iops, mbps, lat); DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat);  DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops); DBMS_OUTPUT.PUT_LINE ('latency = ' || lat); dbms_output.put_line('max_mbps = ' || mbps);END;/

O resultado de execução é demonstrado abaixo:

SQL> @calibratemax_iops = 3100latency = 20max_mbps = 376

O resultado de cada execução é demonstrado também na view DBA_RSRC_IO_CALIBRATE.

SQL> DESC DBA_RSRC_IO_CALIBRATE

Como somente a última execução da procedure CALIBRATE_IO é listada na viewDBA_RSRC_IO_CALIBRATE a sugestão é alterar a procedure CALIBRATE_IO para armazenar cada execução em uma tabela auxilar. Abaixo exemplo:

SET SERVEROUTPUT ONDECLARElat  INTEGER;iops INTEGER;mbps INTEGER;BEGIN-- DBMS_RESOURCE_MANAGER.CALIBRATE_IO (, , iops, mbps, lat);DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat);INSERT INTO CALIBRATE_REPORT AS SELECT * FROM DBA_RSRC_IO_CALIBRATE; DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops);DBMS_OUTPUT.PUT_LINE ('latency  = ' || lat);DBMS_OUTPUT.PUT_LINE ('max_mbps = ' || mbps);END;

O tempo de execução está diretamente ligado a alguns fatores:

Performance na estrutura de Armazenamento (Storage);Número de Datafiles;Tamanho do Database;

Em Storage compartilhados, por exemplo ambiente clusterizado, a performance pode variar também de acordo com o número de Nodes do Cluster.

Listando Resultados

Após a execução, pode-se listar os resultados de 2 maneiras:

- Pelo output da Procedure

SQL> @calibratemax_iops = 3100latency = 20max_mbps = 376

- Pela view DBA_RSRC_IO_CALIBRATE

SELECT MAX_IOPS, MAX_MBPS,  MAX_PMBPS, ACTUAL_LATENCY, NUM_PHYSICAL_DISKS FROM DBA_RSRC_IO_CALIBRATE;MAX_IOPSMAX_MBPSMAX_PMBPSLATENCYNUM_PHYSICAL_DISKS

*Esta lista somente a última execução. Implementando a alteração na execução da procedure CALIBRATE_IO, pode-se obter resultados de todas as execuções:

MAX_IOPSMAX_MBPSMAX_PMBPSLATENCYNUM_PHYSICAL_DISKS

Interpretando Resultados

Os resultados acima demonstram o máximo atingido em operações de Leitura nos discos do Storage.

O melhor resultado obtido foi de 428 operações de I/O por Segundo (em média), com latência de 8ms.

Para calcular a média de I/O por segundo em cada disco, basta dividir este valor pelo número de discos: 428/4 = 107 operações de I/O por segundo para cada disco do Storage.

Com estes resultados é possível gerar um gráfico de consumo de I/O e throughput com o resumo de execução:

Como demonstrado no Gráfico acima, o aumento (tolerância) de latência em milisegundos para operações no Banco de Dados  não gera um aumento  significativo de throughput nos discos do Storage.

Para operações em Banco de Dados (OLTP) a recomendação é manter o tempo médio de latência abaixo de 10ms.

O throughput do Storage em MB permaneceu o mesmo durante todo o teste, atingindo media de 176MB/s por operação de I/O.

Observações importantes:

Neste cenário, para aumentar o máximo de operações de I/O por Segundo, é nécessário o aumentar nº de discos no Storage ou ainda discos com maior performance.O Número máximo de operações de I/O pode ou não atender as necessidades de uma determinada aplicação. Isso dependerá das operações que a aplicação irá solicitar ao banco de dados.Relatórios AWR podem também ajudar a encontrar alta latência em requisições de I/O ao Banco de Dados.

Os resultados se alternam conforme a configuração de Hardware e Software de cada ambiente analisado. É importante manter um throughput compatível com a necessidade do Banco de Dados afim de evitar problemas de performance no acesso à aplicações.

Fonte e mais informações:
http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_resmgr.htm#CJGHGFEA

http://docs.oracle.com/cd/E11882_01/server.112/e16638/iodesign.htm#CHDFBGFB

Abs

Victor DBA

http://victordba.net

DBA Oracle há 7 anos, especialista em Banco de Dados Oracle, com conhecimentos em MySQL, DB2 e SQL-Server. Bacharel em Ciências da Computação pela USCS (Universidade de São Caetano do Sul). Com sólidos conhecimentos em Banco de Dados e Sistemas operacionais, possui certificações OCP 10g/11g, OCE 11g Performance Tuning, OCE 10g RAC, OCS 11g Exadata, OCA Solaris 10, OCA Mysql 5, MCITP SQL Server 2008 R2, IBM DB2 Administrator, LPIC-3, OCA Solaris 10, entre outras.

Apoiador de eventos do GUOB e participante ativo no grupo de Profissionais Oracle (GPO).

Articulista do portal iMasters

Instrutor Oficial Oracle University

Consultor de Banco de Dados na Oracle Advanced Customer Support Services.

Veja perfil e 1 post(s)

Friday, April 20, 2012
no image

Instalando o Oracle VM Virtual Box

Olá pessoal,

No artigo de hoje vou apresentar para vocês o Oracle VM Virtual Box e um passo-a-passo de como instalar a última versão deste software de virtualização da Oracle em um Sistema Operacional Windows. Para quem ainda não está familiarizado com os termos e conceitos que envolvem virtualização, sugiro que leia primeiro o artigo Virtualização: O que é e para que serve?.

Oracle VM Virtual Box é um software-livre, multi-plataforma que permite efetuar virtualização de um ou mais sistemas operacionais em um computador com Sistema Operacional (SO) Windows (XP ou superior), Linux, Macintosh ou Solaris. Alguns dos principais recursos que este software apresenta são:Como qualquer software de virtualização, permite criar máquinas virtuais isoladas de outras máquinas virtuais e da máquina real. As máquinas reais e virtuais podem se comunicar através de configurações de rede compatíveis;Possui funcionalidades para exportar e importar appliances;Possui pacotes de extensão que permitem adicionar funcionalidades extras na máquina virtual, tais como: suporte à dispositivos USB 2.0, suporte à conexões RDP  (Remote Desktop Protocol) e compartilhamento de pastas entre máquina real e máquina virtual;Permite gravar snapshots (imagens de um determinado estado) da máquina virtual para possibilitar que você possa retomar posteriormente seu trabalho, no estado em que ela encontra-se, sem reiniciá-la;Permite que você configure os recursos de hardware que estarão disponíveis para a máquina virtual, tais como: qtde de RAM, qtde de CPUs e tamanho do disco que poderá ser utilizado.

Efetuaremos agora a instalação do Oracle VM Virtual Box, versão 4.1.8, e instalaremos em seguida um pacote de extensão para adicionar algumas funcionalidades à máquina virtual. O processo de instalação é bem simples e rápido:

1- Passo-a-passo para a instalação do Oracle VM Virtual Box 4.1.8

1.1 Efetue o download do instalador (versão 4.1.8) a partir do site https://www.virtualbox.org.

1.2  Execute o arquivo VirtualBox-4.1.8-75467-Win.exe e clique no botão Next (ver Figura 1)

1.3 Clique no botão Next ( ver Figura 2);

1.4 Clique no botão Next (ver Figura 3);

1.5 Clique no botão Yes (ver Figura 4);

1.6 Clique no botão Install (ver Figura 5);

1.7 Clique no botão Finish (ver Figura 6);

1.8 Pronto, a instalação finalizou. Ao aparecer a tela da Figura 7, temos certeza de que o software foi instalado com sucesso! O próximo passo agora, será instalar o Extension Pack.

2. Passo-a-passo para a instalação do Oracle VM Virtual Box Extension Pack 4.1.8

2.1 Efetue o download do instalador (versão 4.1.8) do Extension Pack a partir do site https://www.virtualbox.org/;

2.2  Execute o arquivo Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467 e clique no botão Instalar (ver Figura 8);

2.3 Leia a licença do software (desça a barra de rolagem) e clique no botão Eu concordo (A) (ver Figura 9);

2.4  Clique no botão OK (ver Figura 10). Pronto a instalação foi finalizada!

Por hoje é só!

Fonte: Blog Fabio Prado

Referências:

Friday, April 6, 2012
no image

Coletando estatísticas para o otimizador de queries do Oracle

Olá pessoal,

Como muitos alunos me perguntam sobre este tema, resolvi escrever no artigo de hoje sobre como coletar estatísticas de objetos do Banco de Dados para o otimizador de queries do Oracle, considerando os métodos existentes e as principais diferenças entre eles.

Até o Oracle Database 7, só existia um tipo de otimizador, que era o Otimizador Baseado em Regras (RBO). Não vou entrar em mais detalhes sobre ele, mas a partir da versão 7 do Oracle, foi criado outro tipo de otimizador, o Otimizador Baseado em Custo (CBO) e a partir da versão 10G do Oracle, o RBO tornou-se obsoleto. O CBO foi criado com o objetivo de melhorar a performance da execução das instruções SQL (em relação ao RBO,) criando planos de execução que se baseiam em custo, ao invés de regras.

Para montar um plano de execução, o CBO baseia-se, resumidamente, em estatísticas de objetos (quantidade de linhas, cardinalidade, seletividade) e custo de hardware (memória, cpu, I/O). Para que ele monte planos de execução otimizados, é necessário que as estatísticas dos objetos estejam sempre atualizadas. Para atualizar as estatísticas dos objetos, podemos usar os métodos abaixo:

1- Comando ANALYZE:

Calcula estatísticas globais de tabelas, índices e clusters;Permite coletar estatísticas exatas ou estimada em um número ou percentual de linhas;Não é tão preciso ao calcular, por exemplo, a cardinalidade, ao envolver valores distintos;Devido ao fato de não ser muito preciso, não é recomendado para coletar estatísticas para o CBO, mas pode ser útil para coletar informações sobre linhas encadeadas e blocos livres;Era bastante eficiente até a versão 7 do Oracle Database ou para o RBO. É suportado na versões atuais do Oracle somente para manter a compatibilidade com as versões anteriores;

Exemplo p/ coletar estatísticas exatas de uma tabela: 

ANALYZE TABLE TABELA COMPUTE STATISTICS;

2- Package DBMS_UTILITY:

As procedures desta package diferem do comando ANALYZE apenas pela possibilidade de permitir coletar estatísticas de um schema ou do banco de dados completo;

Exemplo p/ coletar estatísticas exatas de um schema todo:

EXEC DBMS_UTILITY.ANALYZE_SCHEMA(‘OWNER‘,’COMPUTE’);

3- Package DBMS_STATS:

Foi introduzido no Oracle 8i e hoje é o método mais eficiente para coletar estatísticas para o CBO;Permite coletar estatísticas exatas ou estimadas de objetos individualmente (tabelas, índices, cluster etc), schemas, banco de dados completo e de sistema;Permite execução paralela, transferência de estatísticas entre servidores e é mais preciso que os métodos anteriores;É o método de coleta de estatísticas atualmente recomendado pela Oracle e por especialistas no assunto;

Exemplos:

a) Para coletar estatísticas exatas de uma tabela:

EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>’OWNER‘, TABNAME=>’TABELA‘, ESTIMATE_PERCENT=>1);  

b) Para coletar estatísticas estimadas (20%) de um schema:

EXEC DBMS_STATS.GATHER_SCHEMA_STATUS(‘OWNER‘, estimate_percent=> 20);

c) Para coletar estatísticas exatas de todo o banco de dados: 

EXEC DBMS_STATS.GATHER_DATABASE_STATS;

d) Para coletar estatísticas exatas de sistema: 

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

Há pouco mais de 1 mes atrás, 1 aluno me mandou e-mail perguntando se eu sabia o porquê de um teste em que ele coletava estatítiscas de uma tabela com 40.000.000 registros usando o comando ANALYZE TABLE era mais rápido do que ao usar a package DBMS_STATS (14 minutos X 58 minutos). A resposta é: o DBMS_STATS, por ser mais completo e mais eficiente (ao coletar estatísticas mais precisas), demora mais tempo para executar. 

Dicas para quem pretende coletar estatísticas de objetos:

A partir do Oracle Database 10G, as estatísticas são coletadas automaticamente pelo Oracle, diariamente, em um horário compreendido entre 22h e 2h, se o BD estiver ocioso. Colete estatísticas somente quando for necessário e se você tiver certeza de que os objetos ainda não possuam estatísticas atualizadas;Se o seu BD usa o CBO, evite coletar estatísticas através do comando ANALYZE TABLE e através da package DBMS_UTILITY;Estatísticas desatualizadas são inimigas de performance otimizada. Aprenda a verificar se os seus objetos estão com as estatísticas atualizadas (o valor da coluna LAST_ANALYZED da visão DBA_TABLES não é suficiente para determinar isso). Existem muitas variantes que podem influenciar na execução da coleta de estatítiscas e de como verificar se os objetos estão atualizados, mas estes itens eu guardo para apresentar nos meus treinamentos de SQL Tuning;

Pessoal, por hoje é só!

[]s

Fonte: http://www.fabioprado.net/2012/04/coletando-estatisticas-para-o.html

Referências:

Friday, March 30, 2012
no image

Dicas para a Certificação OCJP (Oracle Certified Java Programmer)

Olá pessoal,

Eu sou o Thiago Marques O. G., trabalho como Analista de Sistemas desenvolvendo aplicações na plataforma Java tanto web quanto desktop, e hoje vou falar de um assunto que interessa a muitos programadores Java que estão iniciando a carreira e até os mais experientes. Vou falar a respeito da OCJP (Oracle Certified Java Programmer), que recentemente realizei o exame e tive sucesso obtendo a certificação.

Para aqueles que almejam obter essa certificação, a primeira dica é que iniciei meus estudos em 2011 com o livro Certificação Sun Para Programador Java 6 Guia de Estudos dos autores Bert Bates, Kathy Sierra, que abrange todo conteúdo necessário para a realização da prova.

O livro é dividido em 10 capítulos que abordam: Declarações e Controle de Acesso , Orientação a Objeto, Atribuições , Operadores , Controle de Fluxos,Exeções e Asserções, Strings, E/S, Formatação e Parsing, Genéricos e Coleçoes, Classes Internas , Threads e Desenvolvimento. Os capítulos mais difíceis de estudar foram Genéricos e Coleções, Strings, E/S, Formatação, Parsing e Threads, que utilizei o método de fazer resumos enquanto estava lendo. Estes geraram mais questionamentos em alguns pontos, então eu codificava e “debugava” sobre o assunto. Ao deitar eu realizava a leitura do resumo, assim fixando melhor o conteúdo.

Outra tarefa muito importante é fazer os exercícios que o livro propõe e realizar simulados como: o ExamLab que é freeware – tem o Whizlabs que é pago, porém tem perguntas de demonstração e o TestKiller que é bem parecido com a prova. Após realizar um simulado revise as questões e tente resolvê-las novamente até atingir a perfeição. Uma técnica muito importante que o livro repassa é, quando responder uma questão lembre-se de qual ou quais conceitos estão sendo abordados na questão, não espere ser avaliado somente sobre um assunto por questão, são feitas muitas “pegadinhas” como nomes inválidos de variáveis junto com um for aninhado e operações complexas, distraindo a atenção do real objetivo sendo cobrado no momento.

O livro citado anteriormente possui resumos objetivos dos capítulos, abordando pontos chaves que devem ser fixados para o exame, que recomendo leitura próximo da realização da prova. Acima de tudo, para obter a certificação é a necessário determinação e disciplina nos estudos, pois comecei ano passado meus estudos mas nunca tinha me dedicado o suficiente, sempre estava lendo mas não tinha uma frequência, e percebi que não adiantava da forma como estava sendo feito. Foi então que utilizei as férias da faculdade para dedicar tempo aos estudos e assim cheguei ao meu objetivo obtendo suceso de 96,6% de acerto na prova.

Estou disponibilizando um projeto feito no NetBeans que contém várias classes de testes que utilizei durante meus estudos, lembrando que é material utilizado em testes pessoais de aprendizado, sempre testando possibilidades de resultados (não substitui o livro e não abrange todos os assuntos da certificação).

Uma coisa que recomendo fortemente é fazer o download do aplicativo NotePad++ e codificar nele. Não tem autocomplete nem dicas de erros de compilação como o NetBeans, assim irão se acostumando com o código. Esqueçam o atalho “CTRL + SPACE” no seu dia-a-dia e faça na raça, só assim você não irá depender de uma ferramenta (IDE) para desenvolver (programador tem que saber programar até no bloco de notas e compilar em linhas de comando do console).

Espero que tenha ajudado em algo as minhas dicas, caso tenha algum questionamento de algum assunto que não abordei, comente e pergunte. Sempre que puder estarei respondendo e ajudando em tudo que estiver ao meu alcance.

Obrigado e até a próxima pessoal.

Friday, December 9, 2011
no image

Exportando dados do MS SQL Server para o Oracle

Olá pessoal, primeiramente gostaria de informar que este artigo não é de minha autoria. O autor deste artigo é o aluno Diego Melo da turma ORTUN01 do meu treinamento de Tuning de Banco de Dados com ênfase em instruções SQL. Neste artigo a minha participação foi apenas a de revisor de contéudo. Segue abaixo o artigo do Diego Melo (após minhas  alterações e revisões):

Primeiramente, gostaria de agradecer ao Fábio Prado pela oportunidade de escrever este artigo, que tem como objetivo principal apresentar um método fácil e eficiente para exportar dados de tabelas do Banco de Dados MS SQL Server para o Banco de Dados (BD) Oracle.

Utilizaremos para exportação dos dados o Oracle SQL Developer 3.0,  que além de ser free, já é uma ferramenta bem estável e consolidada. Para mais informações, consulte neste blog o post Conhecendo o novo Oracle SQL Developer 3.0. Este artigo não ensinará a utilizar o SQL Developer 3.0, portanto, é necessário que você já tenha familiaridade e conhecimentos prévios nesta ferramenta.

Para iniciar a exportação, abra o SQL Developer e configure-o para acessar o Banco de Dados SQL Server, seguindo os passos descritos no link: http://djiang.wordpress.com/2007/02/27/using-oracle-sqldeveloper-to-access-sqlserver/. Em seguida, crie uma conexão ao BD SQL Server, como no exemplo da Figura 1 (ver abaixo).

Figura 1 – Conexão com o SQL Server

No exemplo utilizado neste artigo, iremos exportar uma tabela chamada CLIENTES, do banco de dados MASTER do SQL Server. Para exportá-la devemos acessar MASTER >> dbo >> Tabelas >> CLIENTES (ver Figura 2).

Obs.: No SQL Server 1 única instância de Banco de Dados pode ter vários Bancos de Dados, que neste BD são agrupamentos lógicos que representam conjuntos de objetos relacionados e que podem ter configurações customizadas. No Oracle o nível máximo de agrupamento lógico de objetos que podemos ter é um SCHEMA. No SQL Server uma instância pode conter vários Bancos de Dados e cada Banco de Dados pode conter múltiplos schemas.

Figura 2 – Localizando a tabela CLIENTES no SQL Server

Agora, para executar o passo mais simples do artigo, iremos clicar no botão direito da tabela CLIENTES. Ao aparecer o menu suspenso, clique na opção COPIAR NO ORACLE… (ver Figura 3).

Figura 3 – Iniciando a cópia da tabela CLIENTES

O SQL Developer irá abrir uma caixa de seleção para permitir selecionar o BD Oracle destino. As opções disponíveis são conexões previamente criadas na ferramenta. Selecione o nome de conexão desejada (neste exemplo a conexão chama-se ORACLE) e selecione a opção Incluir Dados (caso contrário somente a estrutura da tabela será copiada) e clique em Aplicar (ver Figura 4).

Figura 4 – Selecionando opções de cópia da tabela CLIENTES

Neste momento irá aparecer uma barra de progresso indicando a cópia dos dados no BD Oracle, como no exemplo da Figura 5 (ver abaixo).

Figura 5 – Copiando a tabela CLIENTES

Quando a cópia dos dados terminar, irá aparecer uma mensagem indicando que ela foi finalizada com sucesso. Clique em OK (ver Figura 6).

Figura 6 – Cópia finalizada

Na conexão do Oracle, verifique em Tabelas, se CLIENTES aparece na lista de tabelas (ver figura 7).

Figura 7 – Tabela CLIENTES copiada no ORACLE

Se a tabela CLIENTES aparecer, pronto! De forma simples e rápida conseguimos exportar dados de uma tabela do MS SQL Server para o Oracle!

Um abraço a todos e até a próxima.

Fonte: http://www.fabioprado.net/2011/08/exportando-dados-do-ms-sql-server-para.html

Marcadores: , ,

Sunday, December 4, 2011
no image

Certificação OCA e OCP no Oracle Database 10G e 11G

Olá pessoal,

No artigo de hoje compartilharei com vocês 2 apresentações que montei sobre as Certificações OCA e OCP nos Bancos de Dados Oracle 10G e 11G. Cada apresentação contempla uma versão (10G ou 11G) do Oracle Database e comenta sobre os principais pontos que devem ser considerados no processo de preparação para a certificação:

Caminho para obter a certificação;Exames necessários;Como efetuar o agendamento e pagamento dos exames;Conhecimentos necessários;Treinamentos indicados;Dicas para estudos.

As apresentações estão disponíveis para download no blog http://www.fabioprado.net/, Meu Sky Drive (ver painel direito superior do blog), pasta Oracle -> Apresentacoes, arquivos Certificacao_OCA_OCP_10G.pdf e Certificacao_OCA_OCP_11G.pdf.

Estou negociando uma parceria com a empresa Capitani IT Solutions (http://www.capitani.com.br/) para fazer palestras gratuitas (com duração aproximada de 3 horas) sobre Certificação no Oracle Database a partir do ano de 2012. Também escrevi um artigo bem mais detalhado sobre este assunto para a revista SQL Magazine, que deverá ser publicado na edição do mês 12/2011. Empresas que tiverem interesse em assistir uma apresentação IN-COMPANY, entrem em contato no e-mail fbifabio@gmail.com.

[]s

Referência: http://www.fabioprado.net/2011/11/certificacao-oca-e-ocp-no-oracle.html.

Marcadores: , , ,

Friday, December 2, 2011
no image

Consumindo classes JAVA dentro de um Banco de Dados Oracle

Olá pessoal,

No artigo de hoje apresentarei um recurso muito interessante e pouco conhecido no Oracle Database, que permite consumir classes desenvolvidas em JAVA dentro de um Banco de Dados (BD) Oracle, para processar ou interagir com dados dentro do próprio BD.

As principais vantagens e desvantagens em consumir classes Java dentro de um BD são:

Possibilidade de reutilizar programas testados e estáveis, desenvolvidos em classes Java, ao invés de desenvolver algo novo em PL/SQL;Ganhar tempo utilizando um programa que já está pronto ao invés de desenvolver um novo;Possibilidade de expandir recursos de programação, pois Java possui muito mais recursos que PL/SQL para interagir, por exemplo, com o SO e programas externos.A performance é muito menor em relação a um programa PL/SQL puro;Aumenta-se a dificuldade de gerenciamento do BD, pois neste caso o DBA ou responsável pelo BD precisará gerenciar objetos externos, que normalmente ele não está acostumado a lidar, e isso poderá provocar problemas quando houver migração de BD para outras máquinas ou ambientes em que a classe Java não foi instalada;Será necessário gerenciar uma área de memória adicional do BD, chamada Java Pool.

Para demonstrar este recurso, utilizaremos como exemplo o bytecode (Idade.class) de uma classe desenvolvida em Java chamada Idade, que possui uma função para calcular idade, chamada getIdade, que possui as seguintes características:

Aceita como entrada um valor alfanumérico correspondente à data de nascimento de uma pessoa;Retorna um valor numérico correspondente à idade atual da pessoa.

A função é bem simples e foi criada por Igor Ribeiro (que trabalha comigo há aproximadamente 1 ano) apenas para executarmos os testes deste artigo. Ele foi o principal responsável por implementar e testar todos os passos deste artigo. Eu só ajudei na parte em que tinha que criar as funções e código PL/SQL para efetuar os testes de performance.

a) No host do servidor de BD, configure a variável ORACLE_SID com o nome da instância de BD em que você irá carregar e testar a classe Java para executar o Passo 1.

 Passo 1- Carregando a classe Java no BD:

Execute o utilitário loadjava, localizado na pasta $ORACLE_HOME/bin, informando nome de usuário e senha de BD de um schema onde a classe será carregada + nome do arquivo bytecode da classe Java, como no exemplo abaixo:

loadjava.bat -user user/password Idade.class

Obs.: Para seguir o exemplo deste arquivo, baixe o arquivo Idade.class a partir do Meu Sky Drive (ver blog http://www.fabioprado.net/), pasta Oracle -> Java.

Passo 2- Verificando se a classe foi carregada com sucesso:

Conectando-se no SQL Plus, SQL Developer ou qualquer outra ferramenta similar, execute a query abaixo para verificar se o objeto foi criado com sucesso:

  SELECT OBJECT_NAME, OBJECT_TYPE, CREATED
from   ALL_OBJECTS
where  upper(OBJECT_NAME) = upper(‘Idade’);

Se a query acima retornar uma linha, significa que o objeto foi criado com sucesso. Se a query não retornar linha(s), repita o passo anterior e/ou identifique o que pode ter falhado no procedimento de execução do utilitário loadjava.

Passo 3- Criando uma função PL/SQL p/ consumir a função da classe Java:

Conectando-se no SQL Plus, SQL Developer ou qualquer outra ferramenta similar, execute o código abaixo para criar uma função PL/SQL que irá consumir a função Java para retornar uma Idade, que será calculada após fornecermos uma string (parâmetro de entrada) correspondente a uma data qualquer:

create or replace FUNCTION RetornarIdade_Java(st IN VARCHAR2) RETURN NUMBER AS
LANGUAGE JAVA NAME ‘Idade.getIdade(java.lang.String) return int’;

Passo 4- Executando a função:

Para executar a função criada no passo anterior, iremos utilizar dados da tabela HR.EMPLOYEES (mais informações, ver artigo Instalando o schema de exemplo HR) como parâmetro de entrada, para retornar o nome e tempo de trabalho (ao invés de idade) de cada empregado:

SELECT  E. FIRST_NAME || ‘ ‘ || E.LAST_NAME AS NAME,
RETORNARIDADE_JAVA(TO_CHAR(HIRE_DATE,’DD/MM/YYYY’)) as worktime
FROM    hr.employees e;

Obs.: Ao  final do passo 4 do roteiro anterior, se tudo correu bem, pudemos verificar que a gente conseguiu consumir uma função da classe Java dentro do BD. Iniciaremos agora um teste de performance para comparar o desempenho de um cálculo de idade da função Java e um cálculo de idade de uma função nova, desenvolvida somente com código PL/SQL.

  Passo 1- Criando uma função PL/SQL p/ calcular a idade (sem código Java):

Conectando-se no SQL Plus, SQL Developer ou qualquer outra ferramenta similar, execute o código abaixo para criar uma função PL/SQL (sem consumir função de classe Java) que irá retornar uma Idade, calculada após fornecermos uma string (parâmetro de entrada) correspondente a uma data qualquer:

CREATE OR REPLACE FUNCTION RetornarIdade_PLSQL(ST IN VARCHAR2) RETURN NUMBER AS
STR_DATA DATE;
STR_ANO NUMBER;
STR_MES NUMBER;
STR_DIA NUMBER;

SYS_DATA DATE;
SYS_ANO NUMBER;
SYS_MES NUMBER;
SYS_DIA NUMBER;

IDADE NUMBER;
DIFERENCA_MES NUMBER;
DIFERENCA_DIA NUMBER;
BEGIN
STR_DATA := TO_DATE(st, ‘DD/MM/YYYY’);
STR_ANO := TO_NUMBER(TO_CHAR(STR_DATA,’YYYY’));
STR_MES := TO_NUMBER(TO_CHAR(STR_DATA,’MM’));
STR_DIA := TO_NUMBER(TO_CHAR(STR_DATA,’DD’));

SYS_DATA := SYSDATE;
SYS_ANO := TO_NUMBER(TO_CHAR(SYS_DATA,’YYYY’));
SYS_MES := TO_NUMBER(TO_CHAR(SYS_DATA,’MM’));
SYS_DIA := TO_NUMBER(TO_CHAR(SYS_DATA,’DD’));

DIFERENCA_MES := SYS_MES – STR_MES;
DIFERENCA_DIA := SYS_DIA – STR_DIA;
IDADE := SYS_ANO – STR_ANO;

IF (DIFERENCA_MES < 0 OR (DIFERENCA_MES = 0 AND DIFERENCA_DIA < 0)) THEN
IDADE := IDADE – 1;
END IF;
RETURN IDADE;
END;

Passo 2- Testando as funções JAVA x PL/SQL:

Conectando-se no SQL Plus, SQL Developer ou qualquer outra ferramenta similar, execute o código abaixo para testarmos a performance das funções Java (RetornarIdade_Java) e PL/SQL (RetornarIdade_PLSQL), já criadas ao longo do artigo:

SET SERVEROUTPUT ON
DECLARE
IDADE       NUMBER;
L_START     NUMBER;
BEGIN
L_START := DBMS_UTILITY.GET_TIME;
FOR Y IN (SELECT HIRE_DATE FROM HR.EMPLOYEES) LOOP
SELECT RETORNARIDADE_Java(TO_CHAR(Y.HIRE_DATE,’DD/MM/YYYY’)) INTO IDADE FROM DUAL;
END LOOP;
DBMS_OUTPUT.PUT_LINE(‘Tempo para execução da função JAVA: ‘ || ROUND((DBMS_UTILITY.GET_TIME – L_START)/100,2) || ‘s’);
L_START := DBMS_UTILITY.GET_TIME;
FOR X IN (SELECT HIRE_DATE FROM HR.EMPLOYEES) LOOP
SELECT RETORNARIDADE_plsql(TO_CHAR(X.HIRE_DATE,’DD/MM/YYYY’)) INTO IDADE FROM DUAL;
END LOOP;
DBMS_OUTPUT.PUT_LINE(‘Tempo para execução da função PL/SQL: ‘ || ROUND((DBMS_UTILITY.GET_TIME – L_START)/100,2) || ‘s’);
END;

Resultado:

Tempo para execução da função JAVA:    0,09sTempo para execução da função PL/SQL:   0,01s

Conclusão:

Consumir classes Java dentro do BD para executar tarefas complexas na interação com os dados pode ser uma boa alternativa para não ter que desenvolver algo novo em PL/SQL ou até mesmo para conseguir resolver um problema que seria impossível de ser resolvido somente com código PL/SQL. Porém, devemos ter muito cuidado ao utilizar este recurso. Além do código em Java consumido dentro do BD ser muito lento em relação ao código PL/SQL puro, o gerenciamento das classes Java (externas ao BD) pode se tornar uma tarefa difícil para os DBAs.

Por hoje é só!

Fonte: http://www.fabioprado.net/2011/11/consumindo-classes-java-dentro-de-um.html
Referências: http://glufke.net/oracle/viewtopic.php?t=257

Marcadores: , , ,

Thursday, September 1, 2011
no image

Oracle Application Developer/Programmer II - Chronos Consulting - Brazil, IN

Chronos Consulting now has over 1000 live oil and gas careers available wordwide and over 800 engineering vacancies. Try our new job search function. Urgent roles in UK, USA, Canada, Austria, Romania, Algeria, Russia and China.

Chronos Consulting signs long term Biofuels Sustainability RPO. August, 2011

New cloud features are available from Sep 2011 on Chronos Workflow Saas. To book a free demo pls log on to www.chronosworkflow.com

Over 1200 new oil, gas and engineering careers now available. August, 2011

Chronos Consulting awarded 5th long term RPO contract in Canadian Oil Sands. August, 2011

Chronos Consulting extends RPO with Mexico's largest telecom corporation. We now have contractors in Mexico, Costa Rica, Jamaica, Dominican Republic, Colombia, Venezuela, Brazil, Argentina and Chile. Applications to latam@chronosconsulting.com

Chronos extends engineering RPO in Hong Kong. August, 2011

Chronos Consulting wins Fortune 50 RPO. New SAP roles open in Argentina, Brazil, Colombia, Venezuela, Chile, Peru, Hungary, Poland, China, India, Russia, Romania and Switzerland. See job search for details. August, 2011

Chronos Consulting extends power generation RPO in Venezuela. August, 2011

New SAP roles available throughout Russia. August, 2011

Chronos Consulting extends long term oil and gas RPO in Algeria. August, 2011

Chronos Consulting retained for many new finance and IT roles in Southern Spain and Gibraltar. August, 2011

Chronos Consulting begins telecom RPO in South Africa. August, 2011


View the original article here

Friday, February 18, 2011
no image

Oracle Data Warehouse DBA

Role: Oracle Data Warehouse DBA
Rate: ?400 - 550/day
Location: London, England and Johannesburg, South Africa
Duration: 3 week initial, with extension to follow

My client, a UK-based BI consultancy which operates across the globe, has an urgent requirement for a skilled Oracle data warehouse DBA to join a project with a financial services client based in Johannesburg, South Africa.

The client has a track record of providing the very best business intelligence, data warehousing and ETL resources to clients, and are looking for a similarly talented developer to join their team for this engagement.

Candidates should have a wealth of knowledge and experience in:
- database administration
- database configuration
- data warehousing
- exposure to Oracle BI Apps (Siebel Analytics) would be preferable

This engagement will involve alternate fortnights working in the UK and South Africa. Expenses are fully reclaimable via the client.

Interested candidates must submit a CV that CLEARLY DEMONSTRATES relevant experience and credentials.

For more information, call Benjamin Duckworth at Hamilton Blake on 0207 759 7989.

Hamilton Blake does not discriminate on the grounds of age, race, gender, disability, creed or sexual orientation and complies with all relevant legislation.

PLEASE NOTE: You should make yourself aware of how immigration laws apply to your situation before applying for any jobs.

We are acting as a Recruitment Business in relation to this role.


View the original article here

Saturday, December 11, 2010
no image

Oracle começa a cobrar por InnoDB no MySQL

A Oracle publicou os novos preços para as diversas versões do MySQL. Entre as versões afetadas está inclusive a Classic Edition, que até então era "completa e gratuita" e, que de agora em diante, só conta com o recurso storage engine InnoDB numa versão paga.

Nota: O InnoDB ainda está disponível (sem custo) na versão Community do MySQL.

Para saber mais: http://www.h-online.com/open/news/item/Oracle-raises-prices-for-MySQL-1130988.html

Fonte: Lista PHPSC - Jackson Laskoski