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:
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.
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.
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.
Para recapitular todas as mudanças nas linhas, tipo de
Você deve ver algo como isto:
Flashback completa.
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! ).
Para fazer uma cópia de sua tabela empregados, tipo
Você vê algo como isto:
Tabela criado.
# 147 Acidentalmente # 148- largar a nova tabela emp, digitando
- Você vê algo como isto:
Tabela caiu.
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.
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.