Como usar Tabela Flashback da Oracle 12c

Muito semelhante ao Flashback Query é Tabela Flashback da Oracle 12c. Na verdade, ambos são construídos sobre a mesma tecnologia subjacente. Tabela Flashback é capaz de piscar volta alterações de linha ou a tabela inteira se fosse cair acidentalmente.

Mantenha os seguintes requisitos em mente:

  • O parâmetro UNDO_RETENTION vai controlar quão longe pode fazer piscar a mesa.

  • Você precisa usar um recurso chamado o movimento de linhas que devem ser habilitado em qualquer tabela que deseja flash back linhas. (As próximas etapas mostram como para permitir o movimento da linha.)

  • Se você quer ser capaz de flash back uma tabela a partir de uma gota, você precisa ter o seu parâmetro RECYCLEBIN definido para ON. Este parâmetro é ativado por padrão, mas note que se tiver sido desligado requer um salto banco de dados para ligá-lo novamente.

Considere um exemplo sobre como eliminar acidentalmente algumas linhas de uma tabela. Eles foram muito fácil de recuperar, porque identificá-los não foi difícil. No entanto, suponha que você queira recuperar de uma atualização acidental. Atualizações são mais difíceis de se recuperar de com Flashback Query. Você pode fazê-lo, mas você pode ser capaz de torná-lo mais fácil em si mesmo, piscando de volta a tabela inteira.

Flashback Table funciona em toda a tabela, e não apenas determinadas linhas, para se certificar de que trazer toda a tabela de volta no tempo não vai causar outros problemas.

Para usar o Flashback Table, siga estes passos:

  1. Você deve ter linha movimento enabled- para habilitá-lo, digite

    Você deve ver o seguinte:

    Tabela alterada.

    Como uma nota lateral, você não tem que permitir o movimento de linha antes de alterar seus dados. Você pode fazê-lo após o fato.

  2. Veja o que os seus dados se parece com digitando

    Você deve ver algo como isto:

    DEPARTMENT_NAMEMANAGER_ID ------------------------------ ---------- Administration200Marketing 201Purchasing 114Human Resources203Shipping 121IT Relações 103Public 204Sales 145Executive 100Finance108Accounting 20511 linhas selecionadas.

    Para # 147 mess-up # 148- os dados, digite o seguinte:

    lt; atualizar departmentsset manager_id = 205where manager_id não é null-compromisso>

    Que deviam ver algo como isto:

    11 linhas updated.Commit completa.
  3. Olhe para os seus dados novamente, digitando

    Você deve ver algo como isto:

    DEPARTMENT_NAMEMANAGER_ID ------------------------------ ---------- Administration205Marketing 205Purchasing 205Human Resources205Shipping 205IT Relações 205Public 205Sales 205Executive 205Finance205Accounting 20511 linhas selecionadas.
  4. Para recapitular todas as mudanças nas linhas, tipo de

    Você deve ver algo como isto:

    Flashback completa.
  5. Verifique os seus dados novamente, digitando

    Você deve ver algo como isto:

DEPARTMENT_NAMEMANAGER_ID ------------------------------ ---------- Administration200Marketing 201Purchasing 114Human Resources203Shipping 121IT Relações 103Public 204Sales 145Executive 100Finance108Accounting 20511 linhas selecionadas.

Os dados estão de volta onde ele estava no timestamp especificado.

O próximo exercício o ajuda a se você acidentalmente deixou cair sua mesa. Ele utiliza o recurso mencionado acima chamado RECYCLEBIN. Ele funciona muito parecido com o Lixeira em um desktop do Windows. Você pode restaurar um objeto para o que parecia antes de ser descartado.

Para este próximo exemplo, você começar por fazer uma cópia da tabela de funcionários para trabalhar. A razão pela qual você está fazendo uma cópia é que no esquema de demonstração fornecido com o banco de dados, há um monte de integridade referencial, o que o impede de cair tabelas em primeiro lugar (uma das muitas razões de integridade referencial é uma boa ideia! ).

  1. Para fazer uma cópia de sua tabela empregados, tipo

    Você vê algo como isto:

    Tabela criado.
  2. # 147 Acidentalmente # 148- largar a nova tabela emp, digitando

    -

    Você vê algo como isto:

    Tabela caiu.
  3. Consultar o seu RECYCLEBIN para ver o que você pode recuperar - Tipo

    lt; select object_name, original_name, operação, droptimefrom user_recyclebin->

    Você vê algo como isto:

    OBJECT_NAME ORIGINAL_NAME OPERAÇÃO DROPTIME ------------------------------ --------------- - -------- ------------------- BIN $ 5BtB5dF6GmXgQ1ABqMC8yg == $ 0 EMP GOTA 2013/08/16: 21: 02: 12

    Observe o nome engraçado começando com BIN $. Com o RECYCLEBIN ligado, o que está realmente acontecendo durante uma queda é o objeto está sendo renomeado. Você ainda pode consultar a tabela original usando este nome!

    Isto pode ser útil se você quiser restaurar apenas algumas linhas, em vez de toda a tabela. Você pode consultar as linhas ou fazer um # 147-criar a tabela como selecionar # 148- armazená-los em uma nova tabela completamente.

  4. Para undrop sua mesa, tipo

    lt; tabela emp flashback de antes drop>

    Você vê isso:

    Flashback completa.

    Agora você pode consultar a tabela novamente.

Embora a piscar de volta à mesa para antes de uma queda não colocar de volta todos os privilégios e índices, os índices de manter o nome BIN $. Você pode dar a seus índices trás o nome original com um comando de mudança de nome se quiser.

menu