quarta-feira, 20 de julho de 2011

Tabelas Temporárias

Olá Pessoal .. Espero que estejam bem!!

Bom hoje e nas proxímas semanas  irei falar sobre um dos pricipais objetos de armazenamento do Oracle que são as tabelas.
Irei falar sobre os vários tipos , então fiquem atentos e acompanhem este e os Próximos Posts.

Uma tabela temporária só será proveitosa durante a permanência em uma  sessão ou a duração de uma  transação, ou seja, quando uma sessão ou transação se inicia ela esta vazia. Após varias operações de insert, update, delete nesta tabela quando um usuário se desconectar de sua sessão ou sua transação for efetivada os dados da tabela serão perdidos. Mas seus metadados ficarão armazenados no dicionário de dados para operações posteriores até que seja excluída definitivamente do Banco de Dados.
Irei mostrar dois exemplos de tabelas temporárias uma associada à transação e outra associada a uma sessão:

Exemplo 1 (Transação)

SQL> create global temporary table luciana.TEMP_PESSOA

(CPF number(11),

Nome varchar2(40),

data_nasci date);  

Table created.


SQL> insert into luciana.TEMP_PESSOA

values (27846888767,'LUIZ','09-MAY-11');   

1 row created.

SQL> select * from luciana.TEMP_PESSOA ;

       CPF NOME                                     DATA_NASC
---------- ---------------------------------------- ---------
27846888767 LUIZ                                    09-MAY-11

SQL> commit ;

Commit complete.


SQL> select * from luciana.TEMP_PESSOA ;

no rows selected

SQL> desc luciana.TEMP_PESSOA ;

Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 CPF                                                NUMBER(11)
 NOME                                               VARCHAR2(40)
 DATA_NASCI                                         


Percebam que neste exemplo após criarmos a tabela e inserirmos dados na mesma, quando efetuamos uma transação (commit ou rollback) os dados da tabela são perdidos , mas sua estrutura continuará criada independente da desconexão do usuário até que seja dropada.

Exemplo 2 (Sessão)

SQL> create global temporary table luciana.TEMP_PESSOA2
(CPF number(11),
Nome varchar2(40),
data_nasci date) ON COMMIT PRESERVE ROWS;  

Table created.

SQL> insert into luciana.TEMP_PESSOA2
  2  values (27846888767,'LUIZ','09-MAY-11');

1 row created.

SQL> COMMIT ;

Commit complete.

SQL> select * from luciana.TEMP_PESSOA ;

       CPF NOME                                     DATA_NASC
---------- ---------------------------------------- ---------
27846888767 LUIZ                                    09-MAY-11

[oracle@localhost ~]$ sqlplus luciana/*****@orcl ;

SQL> select * from luciana.TEMP_PESSOA2 ;

no rows selected

SQL> desc luciana.TEMP_PESSOA2 ;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 CPF                                                      NUMBER(11)
 NOME                                                   VARCHAR2(40)
 DATA_NASCI                                        DATE


Note que no segundo exemplo  na sintaxe de criação da tabela, utilizamos a cláusula ON COMMIT PRESERVE ROWS. Isto significa que após o término da transação os dados deverão ser mantidos independentemente da utilização de um (commit ou rollback) . Mas quando  desconectar-mos e reconectar-mos de novo os dados serão limpos e só poderemos visualizar a estrutura da tabela.

Oracle Quick Tip :

Após a criação das tabela temporária ela poderá ficar visível para todas as sessões,porém seus dados serão acessíveis somente pela sessão que os inclui.
Isso  é bom em relação aos locks pois eles não terão efeitos nesse tipo de tabela partindo do principio de que cada sessão tem acesso exclusivo a seus dados. Os dados serão criados na tablespace temporária do usuário e um comando TRUNCATE trunca somente os dados referentes à sua própria sessão.
Os utilitários EXPD e IMPD podem exportar e importar a estrutura de uma tabela temporária,menos os seus dados.Também podemos criar índices temporários para estas tabelas.
Além disto operações Rollback to Savepoint são suportadas mas caso ocorra uma falha no sistema os dados serão perdidos pois não existem logs gerados para as mesmas.
Podemos criar triggers e views que utilizem simultaneamente tabelas temporárias.

Para mais informações sobre tabelas Temporárias visitem os sites que usei como referência :


Muito Obrigada.

sábado, 16 de julho de 2011

Treinamento Oracle na Nerv Informática.

Oi  Pessoal , quanto tempo ! Me descupem por ter desaparecido , é que minha vida anda meia agitada nestes útimos meses.......
Hoje eu quero compartilhar  algumas informações sobre um ótimo treinamento no qual estou ralizando.
O treinamento é ministrado na Nerv Informática pelo experiente Instrutor Ricardo Portilho ACE ORACLE e muito conhecido pela comunidade para mais informações sobre os cursos oferecidos visite o site  http://nervinformatica.com.br/.

O treinamento é totalmente HANDS ON ou seja mão na massa  em um ambiente muito agradável e um aluno por micro sem super lotação.
Para aqueles que querem se apronfundar mais seus conhecimentos em Oracle  como RAC , BACKUP/RECOVER , TUNING entre outros vale a pena gastar um pouco mais para obter estes conhecimentos.

Segue abaixo a localização do centro de treinamento da Nerv :
Av. Mazzei, 52, Sala 8 – Tucuruvi,
São Paulo - SP.
Próximo ao Metrô Tucuruvi.
Próximo à Avenida Luiz Dumont Villares

Fico muito feliz por saber que podemos contar com profissionais qualificados como Ricardo Portilho que além de postar ótimas matérias sobre Oracle e outras tecnologias esta sempre a disposição para compartilhar seus conhecimentos.

Lembre-se todos que quando compartilhamos nossas exeperiências não estamos só ajudando outras pessoas mas sim a nós mesmos.

Valeu galera ..... até o proxímo posts com algumas dicas ...