SóProvas


ID
2950753
Banca
FGV
Órgão
DPE-RJ
Ano
2019
Provas
Disciplina
Banco de Dados
Assuntos

A respeito de tabelas Oracle criadas com a opção global temporary table, analise as afirmativas a seguir.


I. São acessíveis apenas à sessão na qual foram criadas. Cada outra sessão deve executar um novo comando create table.

II. A tabela possui diferentes instâncias para diferentes sessões. Cada sessão acessa uma instância exclusiva das demais.

III. Após um comando commit, a instância da tabela sempre é automaticamente deletada. Os dados são mantidos apenas para as transações incompletas.


Está correto o que se afirma em:

Alternativas
Comentários
  • I. São acessíveis apenas à sessão na qual foram criadas. Cada outra sessão deve executar um novo comando create table. Errado: Uma tabela temporária associada à transação é acessível por uma determinada transação e suas transações filha. Porém, uma tabela temporária associada à transação não é acessível por duas transações simultâneas na mesma sessão, apesar de poder ser usada por transações em diferentes sessões.

    III. Após um comando commit, a instância da tabela sempre é automaticamente deletada. Os dados são mantidos apenas para as transações incompletas. Errado: os dados não são recuperáveis caso ocorra um “crash” porque as modificações não são logadas (gravadas no REDO LOG).

    fonte: https://www.devmedia.com.br/tabelas-temporarias-no-banco-de-dados-oracle/1915

  • ----------------------------------------------------------------------------------------------------------------------------------

    RESPOSTA: C  ==>  Somente I e II

    ----------------------------------------------------------------------------------------------------------------------------------

    Uma tabela temporária é uma tabela com vida útil de uma sessão ou transação. Ela está vazia quando a sessão ou transação começa e descarta os dados ao fim da sessão ou transação. Uma tabela temporária é associada à transação. Isto significa que ao término da transação os dados da tabela são perdidos, porém sua descrição permanece gravada no banco de dados mesmo após a mudança de sessão.

    Nesta solução, o que é temporário é o armazenamento dos dados. Com este tipo de tabela não temos necessidade de remover os dados ao término da transação. Podem ser muito úteis na geração de dados de trabalho temporários.

    Características:

    Segundo Fernandes, as tabelas temporárias possuem as seguintes características:

    Sua definição é visível para todas as sessões, mas seus dados são visíveis e acessíveis somente pela sessão que os inclui.

    O comando LOCK não tem efeito em tabelas temporárias uma vez que cada sessão tem acesso exclusivo a seus dados.

    Um comando TRUNCATE trunca somente os dados referentes à sessão do usuário.

    Os dados são criados na tablespace temporária do usuário.

    Operações de Rollback to Savepoint são suportadas, mas os dados não são recuperáveis caso ocorra um “crash” porque as modificações não são logadas (gravadas no REDO LOG).

    Podemos criar índices para uma tabela temporária usando o comando CREATE INDEX. Estes índices também são temporários.

    Podemos criar triggers para tabelas temporárias assim como views que utilizem simultaneamente tabelas temporárias e permanentes.

    Os utilitários IMPORT e EXPORT podem exportar e importar a definição de uma tabela temporária, porém nenhum dado é exportado.

    Da mesma forma, podemos replicar a definição de uma tabela temporária, mas não podemos replicar seus dados.

    Só podemos executar operações de DDL (ALTER TABLE, DROP TABLE, CREATE INDEX, etc.) para a tabela temporária se não houver nenhuma tabela fazendo acesso a ela.

    Uma tabela temporária associada à transação é acessível por uma determinada transação e suas transações filha. Porém, uma tabela temporária associada à transação não é acessível por duas transações simultâneas na mesma sessão, apesar de poder ser usada por transações em diferentes sessões.

    Se uma transação do usuário faz um INSERT em uma tabela temporária, então nenhuma de suas transações filhas pode usar a tabela temporária após isto.

    Se uma transação filha faz um INSERT em uma tabela temporária, ao fim da transação filha, o dado associado com a tabela temporária é removido. Após isto, tanto a transação do usuário quanto qualquer outra transação podem fazer acesso à tabela temporária.

    Referências:

    Fernandes, Lúcia; Oracle 9i para Desenvolvedores Curso Completo, Axcel Books

    FONTE: DevMedia

  • Alternativa correta: C.

    .

    .

    Corrigindo a III: depois de um commit, os dados da tabela são perdidos, mas sua descrição permanece. A única coisa temporária são os dados da tabela.