Main Content RSS FeedÚltimo Post

Edition-Based Redefinition: a feature mais matadora do Oracle 11g R2

Eu considero Edition-Based Redefinition a nova característica mais matadora do Oracle Database 11g Release 2. Em suma, é a capacidade de executar uma atualização de aplicações online. É também um recurso gigante, tão grande que vai demorar pelo menos três colunas para descrevê-lo. Vou começar em Como usar Edition-Based Redefinition afim de aplicar “patches” em sistemas.

Ao longo dos anos, o banco Oracle permite realizrmos muitas operações online, como:

  • Modificar a maioria dos parâmetros (Apenas 90 dos 350 não são modificáveis online.)
  • Reorganização de objetos (transformar uma tabela não particionada em uma particionada, recuperando um espaço livre, e assim por diante)
  • Criar índices
  • Aplicação de patches no Banco de dados com o Oracle Real Application Clusters
  • Atualizar o banco de dados Oracle de release em release

O resultado é que quase todas mudanças em nível de banco de dados pode ser feito enquanto o banco está funcionando e realizando transações – com algumas raras excepções gritantes, como re-criar uma procedure, alterar triggers, adicionar grants, revoke de grant, e modificar views. Em suma, os objetos que constituem esse tipo de modificação não podiam ser modificadas, enquanto os usuários estavam utilizando. Se uma procedure estava sendo executada e um DBA tentou atualizar ela (CREATE OR REPLACE o código com o novo código mexido, afim de corrigir um bug), o DBA iria ficar esperando (BLOCKED) por essa pessoa até terminar sua execução.

Além disso, qualquer pessoa que tentou posteriormente executar uma procedure que o DBA está tentando substituir também ficaria bloqueado pelo DBA. E na maioria dos casos, o DBA não modifica apenas uma única procedure, mas muitas,  e o CREATE OR REPLACE do novo código da procedure tenderia a invalidar outros objetos dependentes também. O banco de dados parece “congelar”, o DBA não pode realizar as tarefas de patch (substituir alguns procedimentos, pacotes, views, triggers, e assim por diante), e os usuários finais não podem realizar as suas tarefas. Eles acabaram bloqueando e travando-se mutuamente.

Isto tudo termina tudo com o Oracle Database 11g Release 2 e o Edition-Based Redefinition, que permite aos DBAs e usuários finais acessar mais de uma ocorrência de uma stored procedure, trigger, view, e outros objetos e, portanto, isolar as mudanças em um esquema. Começando com o Oracle Database 11g Release 2, um único esquema pode agora ter duas ou mais ocorrências (vamos pensar em “versões”) de um stored procedure (função, trigger, e assim por diante) ou uma view ou de sinônimos e todos seus metadados relacionados, tais como GRANTS a esses objetos. (Estas duas ocorrências são independentes, eles coexistem, mas não interferem umas com as outras.) A “mágica” que permite isso é o novo objeto de edição (EDITION),  que introduz um novo namespace transparente que permite mais de uma ocorrência ao mesmo tempo de uma stored procedure, trigger e assim por diante. Leia mais..

Posts recentes

Converter datas do Excel para Oracle

MS Excel usa um formato de data chamado “Serial Date format” ao armazenar e lidar com datas e horas. A “Data serial” é calculada pegando o número de dias entre uma data qualquer e o dia 01/01/1900.

Por que isso é importante para um desenvoledor Oracle ? Se você está criando um documento em PL/SQL que será aberto no Excel, a data ficará incorreta a não ser que você converta antes para o padrão do Excel.

Felizmente, a formula de conversão de datas é muito simples. A seguinte função fará a conversão de uma data no Oracle para o padrão do Excel:

CREATE OR REPLACE FUNCTION convertOracleToSerialDate(p_date DATE) RETURN NUMBER
IS
BEGIN
RETURN (p_date – TO_DATE(’01-JAN-1900?))+2;
END;
/

Leia mais..

Aplicativos Oracle para iPhone

Oracle iPhone Apps

Oracle Business Indicators é um aplicativo de B.I. que provê informações em tempo real, com acesso seguro sobre performance no iPhone.

Oracle Business Approvals for Managers permite que gerentes e executivos revisem tarefas chaves, acessem relatórios de B.I., tomem decisões e levem imediatamente as ações ao ambiente em modo seguro.

Oracle iReceipts é uma aplicação que é parte do Oracle PeopleSoft Expenses, que permite aos usuários criar e submeter despesas para transações de caixa em tempo real..

Oracle Mobile Sales Assistant é uma aplicação CRM que trás informação em tempo real segura que sua emprea precisa no aparelho móvel. Tarefas frequentes, colaboração com colegas e compradores, fechar negócios na estrada.

Oracle Mobile Sales Forecast é um aplicativo fácil de usar que mostra em tempo real uma visibilidade de oportunidade para organização.

Oracle Enterprise Asset Maintenance Workbench é um aplicativo que ajuda o departamento de manutenção a aumentar sua produtividade. A aplicação ajudará os engenheiros de campo e trabalhadores a tirar vantagem do GPS que o iPhone possui. Leia mais..

PLAN_TABLE faz aniversário de 21 anos em 19-out-2009

Pois é isso mesmo! A querida tabela do ORACLE que nos mostra o plano de execução dos SQLs hoje completa 21 anos!
Hoje eu fui olhar um plano de execução e me deparei com a seguinte mensagem:

SET AUTOTRACE ON
SELECT bla bla bla...

Execution Plan
----------------------------------------------------------

--------------------------------------------------------------
| Id  | Operation          | Name       | Rows  | Cost (%CPU)|
--------------------------------------------------------------
|   0 | SELECT STATEMENT   |            |     1 |   102   (0)|
|   1 |  SORT AGGREGATE    |            |     1 |            |
|   2 |   TABLE ACCESS FULL| TABELA     |  4322 |   102   (0)|
--------------------------------------------------------------

Note
-----
   - 'PLAN_TABLE' is old version

PLAN_TABLE is old version ??? Leia mais..

Colunas Virtuais no 11g – Parte 2

Colunas Virtuais no 11g – Parte 2 – Índices e Constraints

Continuando o artigo sobre colunas virtuais no Oracle 11g, veremos outras possibilidades do uso dessa feature.

Se tentarmos inserir dados que resultem em uma coluna virtual duplicada, podemos esperar uma violação de Unique Constraint: Leia mais..

Colunas Virtuais no 11g – Parte 1

Oracle suportou expressões armazenadas por muitos anos, em views e índices baseados em função. Mais principalmente, são as views que nos permitem armazenar e modularisar expressões calculadas baseados em outras colunas da tabela.

Em versões mais recentes (a partir do 8i), temos como indexar as colunas baseados em função. (Function based indexes). Agora, a partir da versão 11g, o banco Oracle nos permite também armazenar expressões diretamente nas tabelas como colunas virtuais.

Como veremos neste artigo, colunas virtuais são mais flexíveis que as outras alternativas citadas. Vamos examinar seu uso básico e também considerar alguns outros aspectos dessa nova feature. Leia mais..

Fazer o Forms abrir um novo Form ao perder conexão, é possível?

Sim, é possível! Porém, não serve para todas as aplicações… Essa rotina seria mais usada em alguns form que fazem integração entre os sistemas, etc…
Digamos que você tenha um software responsável pelo controle de créditos telefônicos em um banco separado da sua aplicação principal.

o cliente paga um valor, esse valor é creditado e através de um usuário e senha você consegue usar ligar normalmente até acabar os créditos.

Com isso, no meu sistema principal, preciso ter a informação do quanto de crédito já foi utilizado ou algo parecido, então, a cada ligação, faço o débito da conta do cliente.

Como não tenho uma integração direta entre as aplicações, vou precisar de um Robô que faça a leitura de um lado e jogue no outro, porém, por algum motivo, esse robô perdeu a conexão e ninguém foi avisado, então, teremos que ficar nos preocupando vendo se o robô está sempre ativo, etc…

Vamos lá!
Leia mais..

Trabalhando com Strings no Oracle

Vou agora tentar mostrar como trabalha com string no Oracle… Venho acompanhando alguns Foruns de Desenvolvimento e sempre estou me deparando com questões sobre o correto uso de funções para trabalhar com String…

  1. Concatenando 2 Strings
  2. Colocando a primeira letra do texto como Maiúscula
  3. Transformando o texto em texto Minúsculo e Maiúsculo
  4. Convertendo letras em códigos ASCII
  5. Localizando a posição uma string no meio do texto
  6. Atribuindo dígitos no final e/ou no inicio do texto
  7. Removendo espaços no inicio e/ou fim do texto
  8. Como inverter o texto
  9. Substituindo Strings por outras Strings
  10. Cortando o conteúdo do texto
  11. Descobrindo o tamanho da string
  12. Retornando colunas com valor não nulo
  13. Exemplo da utilização de algumas funções
    • Pesquisando em uma string por um digito e exibindo o resto da string pegando como base esse digito localizado.
    • Repartindo uma string e inserindo um valor no meio.

Leia mais..

Execução ordenada nas triggers

A partir do Oracle 8i é possível criar mais de uma trigger do mesmo tipo na mesma tabela. Exemplo: duas triggers AFTER EACH ROW on INSERT. O tipo de trigger determina a ordem de execução: As BEFORE são executadas antes, e as AFTER depois. Contudo, como saber qual trigger executará primeiro quando se tem duas AFTER EACH ROW on INSERT ? Leia mais..

Utilizando Table of Record

Hoje vamos ver o quanto é bom explorar certos recursos da ferramenta de Desenvolvimento Oracle. Sabe aquela rotina bem dinâmica que você não imagina como poderá resolver? Agora, imagine tentar guardar tudo isso em memória… Melhorou um pouco, correto? Vamos ver como é bom trabalhar com registros de memória no Oracle.
Leia mais..