Restore #2 PDB TSPITR: Tablespace Point In Time Recovery de um PDB.
Neste cenário vamos simular a recuperação em um ponto específico no tempo para um tablespace de um PDB. O Oracle facilitou muito nossa vida na versão 12 em diante com este tipo de recuperação.
Nas versões anteriores não era possível fazer de forma automatizada este tipo de recuperação, era tudo manual.
Criando o cenário:
1 - Dentro nosso PDB, vamos criar um novo usuário e um novo tablespace.
ALTER SESSION SET CONTAINER=PDBTESTE; CREATE TABLESPACE NOVA_TBS DATAFILE SIZE 500m; CREATE USER USER_TESTE IDENTIFIED BY teste default tablespace NOVA_TBS; ALTER USER user_teste QUOTA UNLIMITED ON NOVA_TBS; grant create session to user_teste; grant create table to user_teste; |
2 - Vamos criar um nova tabela e popular.
3 - Criaremos um backup full da base de dados em seguida realizar alguns switchs para que sejam gerados novos archives.
CREATE TABLE USER_TESTE.TABELA_TESTE (C NUMBER) TABLESPACE NOVA_TBS; INSERT INTO USER_TESTE.TABELA_TESTE VALUES (1000); INSERT INTO USER_TESTE.TABELA_TESTE SELECT * FROM user_teste.TABELA_TESTE; COMMIT; |
3 - Criaremos um backup full da base de dados em seguida realizar alguns switchs para que sejam gerados novos archives.
run{ backup format '/u01/app/oracle/oradata/TESTE/backup/%U' database; sql 'ALTER SYSTEM SWITCH LOGFILE'; sql 'ALTER SYSTEM SWITCH LOGFILE'; } |
4 - Após isso iremos verifica o último archive gerado. No nosso caso, foi o 37.
RMAN> LIST ARCHIVELOG ALL; List of Archived Log Copies for database with db_unique_name TESTE ===================================================================== Key Thrd Seq S Low Time ------- ---- ------- - --------- 33 1 36 A 27-JAN-20 Name: /u01/app/oracle/oradata/TESTE/archive/1_36_1030548094.dbf 34 1 37 A 27-JAN-20 Name: /u01/app/oracle/oradata/TESTE/archive/1_37_1030548094.dbf |
Obs: Existem outras formas mais simples de se recuperar apenas uma tabela excluída usando o recurso Flashback, mas o foco aqui é outro em outro post falo sobre ele.
SQL> DROP TABLE TABELA_TESTE; |
Restore:
Agora vamos executar o comando de recover utilizando um espaço auxiliar. Quando você estiver rodando o comando de recover, verá que o Oracle vai usar essa localixação auxiliar para criação de um nova instância temporária e em seguida vai apaga-lá.
RMAN> RECOVER TABLESPACE PDBTESTE:NOVA_TBS UNTIL SEQUENCE 37 AUXILIARY DESTINATION '/u01/app/oracle/oradata/TESTE/auxiliar/'; Starting recover at 27-JAN-20 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=494 device type=DISK allocated channel: ORA_DISK_2 channel ORA_DISK_2: SID=1347 device type=DISK RMAN-05026: warning: presuming following set of tablespaces applies to specified point-in-time List of tablespaces expected to have UNDO segments |
Terminado o recover, você pode tentar consultar a tabela porém vai receber um erro porque ela vai estar offline.
SQL> select tablespace_name,status from dba_tablespaces; TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE SYSAUX ONLINE UNDOTBS1 ONLINE TEMP ONLINE USERS ONLINE NOVA_TBS OFFLINE |
Coloque o tablespace online e realize a consulta.
SQL> alter tablespace NOVA_TBS online; SQL> select * from user_teste.TABELA_TESTE; |
Comentários