Método de recuperação Oracle (tabela, pacote)


Insira a descrição da imagem aqui
Conta pública do WeChat: IT Bond 1. Tabela truncada

Oracle 10g Recovery
Fy_Recover_Data é um kit de ferramentas para recuperar TRUNCATE ou dados danificados usando o mecanismo de varredura de tabela Oracle e mecanismo de enxerto de dados. Ele é escrito por puro PLSQL e
usado no terminal no Linux, da seguinte maneira:
1. Digite a seguinte URL no Windows:
http: //www.hellodba. com / Download / FY_Recover_Data.zip
2. Descompacte o arquivo FY_Recover_Data.pck baixado
[oracle @ rac1 ~] $ unzip FY_Recover_Data.zip?
Depois de descompactar, você obterá um arquivo FY_Recover_Data.pck
3. Use o usuário sys para executar o script descompactado (aqui eu descompacto O último arquivo está em / home / oracle /)
SQL> @ / home / oracle / FY_Recover_Data.pck
Este script realmente cria um pacote chamado FY_Recover_Data sob o usuário sys

4.执行
exec fy_recover_data.recover_truncated_table('SCOTT','T');
注:执行上的SQL产生2个表空间FY_REC_DATA、FY_RST_DATA
5.使用sys用户把恢复的数据从scott.t$$中插回scott.t表
注:scott.t$$中是scott.t表truncate之前的数据
SQL> insert into scott.t select * from scott.t$$;
13 rows created.
SQL> commit;
Commit complete.
可以看到被truncate的数据已经恢复。

6. Use o usuário sys para excluir os 2 tablespaces e arquivos de dados gerados ao recuperar
SQL> drop tablespace fy_rec_data incluindo conteúdo e arquivos de dados;
Tablespace eliminado.
SQL> drop tablespace fy_rst_data incluindo conteúdo e arquivos de dados;
Tablespace eliminado.

2. drop table

1. Ao excluir as tabelas do banco de dados do oracle10g, elas não são realmente excluídas, mas colocadas na lixeira Este processo é semelhante aos arquivos excluídos do Windows e serão temporariamente colocados na lixeira.
2. A tabela excluída será renomeada automaticamente pelo sistema, que é o nome que você vê no início de [BIN $].
Você pode ver as informações detalhadas da tabela excluída através do comando show recyclebin ou query
select * from recyclebin ;
3. Recuperar a tabela O comando
flashback table é o nome original da tabela antes de descartar;
4. O comando da lixeira:
purge recyclebin;
5. Se a tabela que você não deseja excluir passar pela
tabela de descarte da lixeira purga do nome da tabela;
ou desabilite a função de reciclagem do banco de dados. Na
versão 10.1, Modifique os parâmetros ocultos _recyclebin
altere o conjunto do sistema “_recyclebin” = false; Na
versão 10.2,
altere o conjunto do sistema recyclebin = off;

6. Para limpar o nome da tabela padrão, você pode usar o seguinte comando
drop table'BIN $ qLechQyAZbzgVAAjfT4Z9Q == $ 0 'purge
flashback: último a entrar primeiro a sair

7. Restaure a tabela a ser flashback sob o mesmo esquema já tem um objeto com o mesmo nome, o flashback drop deve ser renomeado
SQL> flashback table t1 to before drop rename to test_old;

Caso
Se houver índices e restrições em uma tabela e, em seguida, retornar à tabela após a eliminação, os índices e restrições ainda estão lá?
criar tabela t (id int, nome char (10));
alterar tabela para adicionar restrição pk_t chave primária (id);
inserir em valores t (1, 'sohu');
inserir em valores t (2, ' sina ');
commit;
SQL> select * from t;

Dê uma olhada nas restrições e índices
SQL> select * from user_indexes;
SQL> select * from user_constraints;

Observe as restrições e índices
SQL> select * from user_indexes; index is back, válido (site de teste), mas truncado
SQL> select * from user_constraints; restrições também são válidas (site de teste), mas truncado

Renomear índices e restrições separadamente

SQL> alter index "BIN$yF3hbvIbioTgQAB/AQAJlg==$0" rename to pk_t;
SQL> alter table t rename constraint "BIN$yF3hbvIaioTgQAB/AQAJlg==$0" to pk_t;

Insira a descrição da imagem aqui
3. Consulta de flashback (operação incorreta de DML)

a partir de timestamp to_timestamp ('2020-07-17 09:30:00', 'aaaa-mm-dd hh24: mi: ss')

4. Procedimentos armazenados de flashback, pacotes (usuário sys)

1.找回ID
SELECT obj#
FROM obj$ AS OF TIMESTAMP TO_TIMESTAMP('2020-07-24  14:30:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE NAME = 'PKG_COG'
2.通过ID反查
SELECT source
FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2020-07-24  14:30:00', 'YYYY-MM-DD HH24:MI:SS')
where obj# = 138324;

3. Saída do
script -output script command
set echo off;
set feedback off;
set verify off;
set term off;
set trimspool on;
set linesize 3000; --set
pagesize 999;
set newpage none;
set header off;
spool / oracle / scr /wpp.sql; --Execute o arquivo no diretório especificado
@ / home / oracle / scr / test.sql; --Execute script SQL (consulta de instrução sql)
SQL> @ / home / oracle / scr / wdd.sql

5. desfazer

1. O relógio flashback geralmente retorna o status do relógio a uma hora anterior ou SCN. (Na verdade, ele pode piscar para frente e para trás), restaura automaticamente os atributos relacionados, incluindo índices, gatilhos, etc. A premissa é possibilitar o movimento da linha na mesa.
Sintaxe: flashback table <table_name> para timestamp | scn

Princípio: Usando os dados de desfazer do espaço de tabela Undo, faça um flashback da tabela em um determinado ponto no tempo ou um determinado SCN, adequado para Delete

SQL> excluir aluno;
SQL> commit;
SQL> alter table student habilita movimento de linha;
SQL> flashback table student to scn XXXXX

Consulta de flashback para confirmar se este ponto no tempo passado são os dados que queremos:
select * from fb_1 as of scn 973099; Para
executar flashback, você pode executar várias operações de
flashback : tabela de flashback fb_1 a scn 973099;
ou
SYS @ ORCL> tabela de flashback scott.t para timestamp to_timestamp ('2020-08-19 01:20:00', 'aaaa-mm-dd hh24: mi: ss');

2. Consulte os dois comandos SCN atuais do sistema
SQL> selecione current_scn de v $ database;

Acho que você gosta

Origin blog.csdn.net/weixin_41645135/article/details/115053035
Recomendado
Clasificación