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 …
Migrar dados do Microsoft Access 2003 para Oracle 10gR2
Alteração DDL em objetos relacionados
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 (<br /> campo01 number(11) PRIMARY KEY,<br /> campo02 varchar2(100)<br /> );
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<br /> is<br /> begin<br /> declare<br /> v_aux varchar2(100);<br /> begin<br /> SELECT campo02 INTO v_aux FROM tab01 WHERE ROWNUM = 1;<br /> end;<br /> end;<br />
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.








