Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criando uma tabela temporária global no Oracle


-Oracle nos permite  criar uma tabela temporária .

-A definição de uma tabela temporária é visível para todas as sessões, mas os dados em uma tabela temporária são visíveis apenas para a sessão que insere os dados na tabela.

-Temos que usar a instrução CREATE GLOBAL TEMPORARY TABLE para criar uma tabela temporária.

-A cláusula ON COMMIT indica se os dados na tabela são específicos da transação (o padrão) ou específicos da sessão

APAGAR LINHAS

Isso cria uma tabela temporária que é específica da transação. Uma sessão torna-se vinculada à tabela temporária com uma transação inserida primeiro na tabela. A ligação desaparece no final da transação. O banco de dados trunca a tabela (exclui todas as linhas) após cada confirmação.

PRESERVAR FILAS

Isso cria uma tabela temporária que é específica da sessão. Uma sessão é vinculada à tabela temporária com a primeira inserção na tabela na sessão. Essa vinculação desaparece no final da sessão ou emitindo um TRUNCATE da tabela na sessão. O banco de dados trunca a tabela quando você encerra a sessão.



As tabelas temporárias são úteis em aplicativos em que um conjunto de resultados deve ser armazenado em buffer, talvez porque seja construído executando várias operações DML
CREATE GLOBAL TEMPORARY TABLE GL_DATA_TEMP
(startdate DATE,
enddate DATE,
gl_id CHAR(20))
ON COMMIT DELETE ROWS;
Os índices podem ser criados em tabelas temporárias . Eles também são temporários e os dados no índice têm o mesmo escopo de sessão ou transação que os dados na tabela subjacente.

Se a instrução TRUNCATE for emitida em uma tabela temporária, somente os dados específicos da sessão serão truncados. Não há efeito sobre os dados de outras sessões.

Se você reverter uma transação, os dados inseridos serão perdidos, embora a definição da tabela persista.

Os dados em tabelas temporárias são armazenados em segmentos temporários no tablespace temporário que não gera nenhum redo, de modo que a operação usando a tabela temporária global é relativamente mais rápida. Mas undo ainda é gerado no tablespace de undo que tem redo logging. Portanto, a operação de refazer não é totalmente eliminada nas tabelas temporárias globais, mas são relativamente menores

Os dados nas tabelas temporárias são excluídos automaticamente no final da sessão do banco de dados, mesmo que ela termine de forma anormal.

As visualizações podem ser criadas em tabelas temporárias e combinações de tabelas temporárias e permanentes. Eles podem ter gatilhos associados a eles

Com a versão Oracle 12.1(12c database), o conceito de undo temporário foi introduzido, o que permite que os segmentos de undo para tabelas temporárias globais sejam armazenados no tablespace temporário. Isso permite que tabelas temporárias globais sejam usadas em bancos de dados standby físicos e bancos de dados somente leitura, além de eliminar a necessidade de criar redo.

ALTER SYSTEM SET TEMP_UNDO_ENABLED =TRUE;
ALTER SYSTEM SET TEMP_UNDO_ENABLED =FALSE;