Migrar dados do Microsoft Access 2003 para Oracle 10gR2

0

Posted on : 26-12-2011 | By : .rafa | In : Banco de Dados, Oracle

Neste artigo irei demonstrar como pode ser feito uma migração de dados de um ACCESS para o Oracle.
Primeiramente vou mostrar como está o meu ambiente para demonstrar, no meu Windows XP 5.1 com o Client Oracle 10.2.0.1 32b e baixado o Oracle SQL Developer 3.0 (3.0.04.34) for 32-bit Windows (This zip file includes the JDK1.6.0_11)
Instalado o Microsoft Word 2003 (11.5604.5606), é recomendado você instalar o componente do Microsoft Office para o drive o Access que irá aparecer no SQL Developer.
Feito a instalação do office vou baixar uma Base Access para esta demonstração: Northwind.rar
Continue lendo em oraclehome.com.br …

Alteração DDL em objetos relacionados

0

Posted on : 03-02-2007 | By : .rafa | In : Banco de Dados, Oracle

Bom hoje vou abordar uma situação que ocorre muito e claro não se tem muito impacto pois o que vou mostrar é como a Oracle nos ajuda em muitas situações.
Vou criar uma tabela de exemplo e criar uma procedure que chama essa tabela, até ai tudo bem, mas se eu fizer alguma alteracao na estrutura desta o que vai acontecer. É os objeto que estão relacionados a esta tabela ficarão INVALIDOS, mas não há necessidade de ficar preocupado que sua aplicação irá parar de funcionar.
Pois ao ser executado o objeto, este é tentado ser rencopilado e dps executado.
Para ser mais facil de entender irei fazer um exemplo na pratica para ver como funciona, e claro usando algumas coisas como sequence e um pequeno cursor para facilitar todo o contexto, passo a passo:

Primeiramente vamos criar um tabela para o nosso exemplo funcionar legal:
create table tab01 (
campo01 number(11) primary key,
campo02 varchar2(100)
);

Vamos criar um sequence para facilitar um pouco mais a nossa vida:
create sequence ctab01;

Ok, aqui vamos comecar popular a nossa tabelinha soh para ter alguma informacao e ficar mais legal a brincadeira:
insert into tab01 values (ctab01.nextval,'AAAAAA');

DECLARE
NUMERO NUMBER(11);
BEGIN
FOR NUMERO IN 1..5
LOOP
insert into tab01 select ctab01.nextval,'BBBBBB' from tab01;
COMMIT;
END LOOP;
END;

Bom nesse passo com a tabela ja criada e populada vamos criar uma procedure onde vai utilizar um campo por exemplo da tabela, só usar dando um select simples:
create or replace procedure proc_01
is
begin
declare
v_aux varchar2(100);
begin
select campo02 into v_aux from tab01 WHERE ROWNUM = 1;
end;
end;

Agora vamos prestar a atenção no status desse objetos(a procedure PROC_01), ela está VALID:
SQL> select object_name,STATUS FROM ALL_OBJECTS WHERE OBJECT_NAME ='PROC_01';

OBJECT_NAME STATUS
------------------------------ -------
PROC_01 VALID
Nessa etapa vamos criar um campo novo na estrutura da tabela:
ALTER TABLE TAB01 ADD CAMPO03 NUMBER(3);
Então observando novamente o status do objeto PROC_01, nota-se que agora o status está INVALID:
SQL> select object_name,STATUS FROM ALL_OBJECTS WHERE OBJECT_NAME ='PROC_01';

OBJECT_NAME STATUS
------------------------------ -------
PROC_01 INVALID

Mas o que não contavamos é q se precisarmos de usar a proc_01 ela vai funcionar mesmo assim com o status INVALID, pois o Oracle compila o objeto antes de executar, claro se por algum motivo nao interfiriu diretamente no objeto inicial, como trocando o tipo da coluna entre outros.
SQL> EXEC PROC_01;
Assim podes olhar em seguida o status do objeto:
SQL> select object_name,STATUS FROM ALL_OBJECTS WHERE OBJECT_NAME ='PROC_01';

OBJECT_NAME STATUS
------------------------------ -------
PROC_01 VALID

Desta forma podemos notar que se fizeres alguma alteração de estrutura do tipo inclusao ou sem alterar o que está dentro destes objetos do tipo proc, view, func, ou outros o Oracle vai garantir que sua aplicação nao vai parar.
Mas recomenda-se que no momento q fores fazer alguma alteração de estrutura, recompile seus objetos relacionados, para também nao ter dor de cabeça mais tarde.