Escolar Documentos
Profissional Documentos
Cultura Documentos
Comando no SQL*Plus:
SQL> SELECT STATUS FROM V$INSTANCE;
Comando no RMAN:
RMAN> REPORT SCHEMA;
3
glogin.sql
$ cat $ORACLE_HOME/sqlplus/admin/glogin.sql
…
SET PAGESIZE 1000
SET LINESIZE 220
SET TIMING ON
SET TIME ON
SET SQLPROMPT '&_user@&_connect_identifier> '
DEFINE _EDITOR=vi
…
1
----------
1
Elapsed: 00:00:00.00
09:09:00 SYS@ORCL>
4
Logs
Oracle
$ tail -f $ORACLE_BASE/diag/rdbms/<database>/<SID>/trace/alert_<SID>.log
7
O que é o RMAN?
8
Packages RMAN
rman + recover.bsq:
●
DBMS_RCVMAN
●
DBMS_BACKUP_RESTORE
●
DBMS_RCVCAT
●
DBMS_TDB
9
Por que usar o RMAN?
10
Lab 0: Por que usar o RMAN?
$ rlwrap rman TARGET /
RMAN> BACKUP DATABASE;
RMAN> EXIT;
11
RMAN: Vantagens
• Backup Lógico (exp / expdp) é mais lento que Backup Físico (RMAN).
• Restore Lógico é (imp / imdp) é mais lento que Restore Físico (RMAN).
• Restores Lógicos não podem ser em um ponto do tempo.
• User Managed Backup (BEGIN BACKUP / END BACKUP) gera mais Redo Logs.
• O RMAN sabe automaticamente onde estão todos os arquivos do Banco de Dados.
• Compressão embutida significa Backups a mais, e dinheiro a mais.
• E todas as New Features a seguir não poderão ser utilizadas…
12
RMAN New Features: 10gR1
• RMAN Scripts Manageability
• Enhanced RMAN Reporting
• Backup Compression
• Bounded Backup Window
• Recovery Area Full Alert
• Flash Backup and Recovery
• RMAN Database Deregistration
• Backup and Restore of Standby Control File
• Automatic TSPITR
• Simplified Recovery Manager Cataloging of Backup Files (CATALOG START WITH...)
• Automatic Channel Failover for Backup and Restore
• Automatic File Creation During Recovery
• Simplified Backups to Disk
• Proxy Copy Backup of Archivelogs
• Incrementally Updated Backups
• Simplified Recovery Through Resetlogs
• Restore Tolerates Corrupt or Missing Backups
• Full Database Begin Backup Command
• Change-Aware Incremental Backups
13
RMAN New Features: 10gR2
• Automatic Deletion of Applied Archive Logs
• Dynamic RMAN Channel Allocation for Backing Up and Recovering RAC Database
• RMAN Backup Encryption
• Enhanced RMAN Backup Job Views
• Hardware Assisted Resilient Data (HARD) Compliant RMAN Backups
• Incremental Roll Forward of Database Copy
• Unused Block Compression
• Restore Point
• Temporary Datafiles Are Re-Created on RMAN Recovery
• Use RMAN Compression During Cloning
14
RMAN New Features: 11gR1
●
Archive Log Management Improvements
●
Fast Incremental Backups on Physical Standby Database
●
Improved Backup Compression Performance
●
Improved Integration with Data Guard
●
Network-Aware DUPLICATE Command
●
Optimized Undo Backup
●
Read-Only Transported Tablespaces Backup
●
Virtual Private Catalog
●
Data Recovery Advisor
●
Enhance LogMiner to Support Automatic Data Repair
●
Integrated Protection From Various Data Corruptions
●
Lost-Write Detection Using a Physical Standby Database
15
RMAN New Features: 11gR2
• Automatic Block Repair
• Backup to Amazon Simple Storage Service (S3) Using OSB Cloud Computing
• DUPLICATE Without Connection to Target Database
• Enhanced Tablespace Point-In-Time Recovery (TSPITR)
• New DUPLICATE Options
• New SET NEWNAME Clauses and Format Options
• Tablespace Checks in DUPLICATE
16
RMAN New Features: 12c
12cR1
• Comandos SQL / DESCRIBE / SELECT
• SYSBACKUP Administration Privilege
• Storage Snapshot Optimization
• Table-Level Recovery From Backups
• Active Database Duplication Enhancements
• Cross-Platform Backup and Restore
• DUPLICATE Enhancements
• Multisection Image Copies
• Multisection Incremental Backups
• Network-Enabled RESTORE
12cR2
• RMAN: Syntax Enhancements
• SCAN Listener Supports HTTP Protocol
• Oracle Recovery Manager - Enhanced Table Recoveries Across Schemas Using REMAP SCHEMA
• Disk Space Check During RECOVER TABLE Operation
• Upgrading the Incremental Transportable Scripts
• Cross-Platform Import of a Pluggable Database into a Multitenant Container Database
• Cross-Platform Migration Support for Encrypted Tablespaces
• Cross-Platform Support Over The Network
• Data Guard DUPLICATE Command Enhancements
• DUPLICATE Command Support for Non Auto-Login Wallet Based Encrypted Backups
17
RMAN New Features: 18c
• Oracle Data Guard Multi-Instance Redo Apply Supports Use of Block Change Tracking Files for
RMAN Backups
• RMAN recover standby simplification
• RMAN duplicate PDB into existing CDB
• Duplicate PDBs between encrypted and non-encrypted CDBs
• Backups from non-CDBs are usable after migration to CDB
• Enhanced Backup to archive storage
18
RMAN New Features: 19c
• Propagate Restore Points from Primary to Standby site
• Flashback Standby Database when Primary Database is Flashed Back
• Clear Flashback Logs Periodically for Increased Fast Recovery Area (FRA) Size Predictability
• PDB Recovery Catalog
19
Features Enterprise
• Duplexed Backup Sets
• Block Change Tracking
• Unused Block Compression Backup
• Block-Level Recovery
• Automatic Block Repair
• Parallel Backup and Recovery
• TSPITR
• TPITR
• Trial Recovery
• Flashback
• Cross-Platform Backup & Recovery
• Transportable Tablespace and Full Transportable Database
• Compression (exceto BASIC)
20
RMAN: Conexões, Opções,
Configurações e Comandos
21
Conexões
22
Conexões
TARGET
$ rman TARGET /
$ rman TARGET BACKUP_USER/BACKUP_USER
$ rman TARGET BACKUP_USER/BACKUP_USER@PRD
CATALOG
$ rman TARGET / CATALOG=RMAN_USER/RMAN_USER@CATALOGO
AUXILIARY
Estou na Produção.
$ rman AUXILIARY BACKUP_USER/BACKUP_USER@DEV TARGET /
$ rman TARGET / AUXILIARY BACKUP_USER/BACKUP_USER@DEV
Estou no Dev.
$ rman AUXILIARY / TARGET BACKUP_USER/BACKUP_USER@PROD
$ rman TARGET BACKUP_USER/BACKUP_USER@PROD AUXILIARY /
23
Opções
24
Configurações
Exibir todas configurações padrão
RMAN> SHOW ALL;
25
Comandos
@ LIST
@@ PRINT SCRIPT
ADVISE FAILURE QUIT
ALLOCATE CHANNEL RECOVER
ALLOCATE CHANNEL FOR MAINTENANCE REGISTER DATABASE
ALTER DATABASE RELEASE CHANNEL
BACKUP REPAIR FAILURE
CATALOG REPLACE SCRIPT
CHANGE REPORT
CONFIGURE RESET DATABASE
CONNECT RESTORE
CONVERT RESYNC CATALOG
CREATE CATALOG REVOKE
CREATE SCRIPT RMAN
CROSSCHECK RUN
DELETE SEND
DELETE SCRIPT SET
DROP CATALOG SHOW
DROP DATABASE SHUTDOWN
DUPLICATE SPOOL
EXECUTE SCRIPT SQL
EXIT STARTUP
FLASHBACK DATABASE SWITCH
GRANT TRANSPORT TABLESPACE
HOST UNREGISTER
IMPORT CATALOG UPGRADE CATALOG
VALIDATE
26
Lab 1.1: Conexões, Opções, Configurações
Execute o RMAN em modo DEBUG.
$ rlwrap rman DEBUG TRACE=/home/oracle/rman.trc TARGET /
RMAN> SHOW ALL;
RMAN EXIT;
27
Lab 1.2: Conexões, Opções, Configurações
Verifique todas as configurações do RMAN.
$ rlwrap rman TARGET /
RMAN> SHOW ALL;
Volte uma das configurações ao seu valor original (CLEAR), e a altere novamente.
28
Instance
29
Instance States
Estados:
SHUTDOWN
NOMOUNT --- O RMAN só conecta no TARGET e AUXILIARY a partir deste estágio.
MOUNT
OPEN – O RMAN só conecta no CATALOG neste estágio.
Comandos:
RMAN> STARTUP;
RMAN> STARTUP NOMOUNT;
RMAN> ALTER DATABASE MOUNT;
RMAN> STARTUP MOUNT;
RMAN> ALTER DATABASE OPEN;
SQL> STARTUP RESTRICT;
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
RMAN> STARTUP DBA;
RMAN> STARTUP FORCE;
RMAN> SHUTDOWN NORMAL;
RMAN> SHUTDOWN IMMEDIATE;
RMAN> SHUTDOWN TRANSACTIONAL;
RMAN> SHUTDOWN ABORT;
30
Lab 2.1: Instance
Altere o Banco de Dados para o modo NOARCHIVELOG.
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE NOARCHIVELOG;
SQL> ALTER DATABASE OPEN;
31
Archived Redo Logs
32
Archived Redo Logs
33
Parâmetros: Archived Redo Logs
archive_lag_target
log_archive_config
log_archive_dest
log_archive_dest_1, log_archive_dest_2 , log_archive_dest_3...
log_archive_dest_state_1, log_archive_dest_state_2, log_archive_dest_state_3…
• ENABLE / DEFER
log_archive_duplex_dest
log_archive_format
log_archive_local_first
log_archive_max_processes
log_archive_min_succeed_dest (MANDATORY / OPTIONAL)
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/archives' MANDATORY;
log_archive_start
log_archive_trace
standby_archive_dest
34
Format: Archived Redo Logs
%s: log sequence number
%S: log sequence number, zero filled
%t: thread number
%T: thread number, zero filled
%a: activation ID
%d: database ID
%r: resetlogs ID
35
Lab 3.1: Archived Redo Logs
Escolha um local de armazenamento dos Archived Redo Logs.
$ mkdir /u01/archives
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/archives';
Verifique se os Archived Redo Logs estão sendo gerados nos dois destinos.
36
RMAN: Backup
37
BACKUP Multitenant
RMAN> BACKUP DATABASE root;
RMAN> BACKUP DATABASE;
38
Lab 4.1: Backup
RMAN> BACKUP SPFILE;
39
Lab 4.2: Backup
RMAN> LIST ARCHIVELOG ALL;
RMAN> ALTER SYSTEM SWITCH LOGFILE;
RMAN> ALTER SYSTEM SWITCH LOGFILE;
RMAN> ALTER SYSTEM SWITCH LOGFILE;
RMAN> LIST ARCHIVELOG ALL;
41
Lab 4.4: Backup
RMAN> BACKUP AS COPY SPFILE;
42
RMAN: Repository
43
RMAN Repository
●
CONTROL_FILE_RECORD_KEEP_TIME
●
Licenciamento
●
Backup
●
High Availability
●
Backup, e depois resync
●
Já tem um Data Guard?
44
RMAN Compatibility Matrix
45
RMAN CATALOG
RC_ARCHIVED_LOG RC_DATABASE_INCARNATION
RC_BACKUP_ARCHIVELOG_DETAILS RC_DATAFILE
RC_BACKUP_ARCHIVELOG_SUMMARY RC_DATAFILE_COPY
RC_BACKUP_CONTROLFILE RC_LOG_HISTORY
RC_BACKUP_CONTROLFILE_DETAILS RC_OFFLINE_RANGE
RC_BACKUP_CONTROLFILE_SUMMARY RC_PROXY_ARCHIVEDLOG
RC_BACKUP_COPY_DETAILS RC_PROXY_ARCHIVELOG_DETAILS
RC_BACKUP_COPY_SUMMARY RC_PROXY_ARCHIVELOG_SUMMARY
RC_BACKUP_CORRUPTION RC_PROXY_CONTROLFILE
RC_BACKUP_DATAFILE RC_PROXY_COPY_DETAILS
RC_BACKUP_DATAFILE_DETAILS RC_PROXY_COPY_SUMMARY
RC_BACKUP_DATAFILE_SUMMARY RC_PROXY_DATAFILE
RC_BACKUP_FILES RC_REDO_LOG
RC_BACKUP_PIECE RC_REDO_THREAD
RC_BACKUP_PIECE_DETAILS RC_RESTORE_POINT
RC_BACKUP_REDOLOG RC_RESYNC
RC_BACKUP_SET RC_RMAN_BACKUP_JOB_DETAILS
RC_BACKUP_SET_DETAILS RC_RMAN_BACKUP_SUBJOB_DETAILS
RC_BACKUP_SET_SUMMARY RC_RMAN_BACKUP_TYPE
RC_BACKUP_SPFILE RC_RMAN_CONFIGURATION
RC_BACKUP_SPFILE_DETAILS RC_RMAN_OUTPUT
RC_BACKUP_SPFILE_SUMMARY RC_RMAN_STATUS
RC_CHECKPOINT RC_SITE
RC_CONTROLFILE_COPY RC_STORED_SCRIPT
RC_COPY_CORRUPTION RC_STORED_SCRIPT_LINE
RC_DATABASE RC_TABLESPACE
RC_DATABASE_BLOCK_CORRUPTION RC_TEMPFILE
RC_UNUSABLE_BACKUPFILE_DETAILS
46
Lab 5.1: Catalog
Crie um CATALOG em seu próprio Banco de Dados.
$ rlwrap sqlplus / AS SYSDBA
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> CREATE TABLESPACE TBS_CATALOGO DATAFILE
'/u01/app/oracle/oradata/ORCL/tbs_catalogo_01.dbf' SIZE 10M AUTOEXTEND ON NEXT 10M;
SQL> CREATE USER USER_CATALOGO IDENTIFIED BY USER_CATALOGO DEFAULT TABLESPACE
TBS_CATALOGO;
SQL> GRANT CONNECT, RESOURCE, RECOVERY_CATALOG_OWNER TO USER_CATALOGO;
SQL> ALTER USER USER_CATALOGO QUOTA UNLIMITED ON TBS_CATALOGO;
$ rlwrap rman CATALOG=USER_CATALOGO/USER_CATALOGO@PROD
RMAN> CREATE CATALOG TABLESPACE TBS_CATALOGO;
RMAN> EXIT;
47
Lab 5.2: Catalog
Com o RMAN, conecte no TARGET sem conectar no CATALOG.
$ rlwrap rman TARGET /
48
RMAN: Validate
49
Lab 6.1: Validate
RMAN> BACKUP VALIDATE DATAFILE 1;
RMAN> BACKUP VALIDATE TABLESPACE USERS;
RMAN> BACKUP VALIDATE DATABASE;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATAFILE 1;
RMAN> BACKUP VALIDATE CHECK LOGICAL TABLESPACE USERS;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;
OU
OU
51
RMAN: Compression
52
Compression
Algoritmo BZIP2
11.1.0
CONFIGURE or SET COMPRESSION ALGORITHM 'BZIP2';
11.2.0
CONFIGURE or SET COMPRESSION ALGORITHM 'BASIC';
Algoritmo LOW
11.2.0
CONFIGURE or SET COMPRESSION ALGORITHM 'LOW';
Algoritmo ZLIB
11.1.0
CONFIGURE or SET COMPRESSION ALGORITHM 'ZLIB';
11.2.0
CONFIGURE or SET COMPRESSION ALGORITHM 'MEDIUM';
Algoritmo HIGH
11.2.0
CONFIGURE or SET COMPRESSION ALGORITHM 'HIGH';
Exemplo:
RMAN> CONFIGURE COMPRESSION ALGORITHM 'HIGH' OPTIMIZE FOR LOAD53 TRUE;
Lab 7.1: Compression
Verifique a compressão padrão atual do RMAN.
RMAN> BACKUP DATABASE TAG 'NOCOMPRESS';
RMAN> LIST BACKUP OF PLUGGABLE DATABASE PROD TAG 'NOCOMPRESS';
55
Encryption
Transparent Encryption
RMAN> SET ENCRYPTION ON;
Password Encryption
RMAN> SET ENCRYPTION ON IDENTIFIED BY 'MyPasswordIsHard' ONLY;
RMAN> SET DECRYPTION IDENTIFIED BY 'MyPasswordIsHard';
56
Lab 8.1: Encryption
Habilite o Password Encryption para uma sessão.
RMAN> SET ENCRYPTION ON IDENTIFIED BY 'Nerv2021' ONLY;
Restaure o ARCHIVELOG.
RMAN> RESTORE ARCHIVELOG SEQUENCE N;
57
RMAN: Snapshot Controlfile
58
Lab 9.1: Snapshot Controlfile
Crie um diretório para armazenar o SNAPSHOT CONTROLFILE.
59
RMAN: Crosscheck
60
CROSSCHECK
61
Lab 10.1: Crosscheck
Execute Crosscheck de vários tipos de dados do Repositório do RMAN.
RMAN> CROSSCHECK BACKUP;
RMAN> CROSSCHECK BACKUP OF DATAFILE 1;
RMAN> CROSSCHECK BACKUP OF TABLESPACE USERS;
RMAN> CROSSCHECK BACKUP OF SPFILE;
RMAN> CROSSCHECK ARCHIVELOG ALL;
62
Lab 10.2: Crosscheck
Mova um BACKUP para outro diretório, e refaça o CROSSCHECK.
RMAN> LIST BACKUP OF DATAFILE 1;
RMAN> DELETE EXPIRED BACKUP;
Que informação mudou?
63
RMAN: Backup Optimization
64
Lab 11.1: Backup Optimization
Verifique se o OPTIMIZATION está em ON.
65
RMAN: Backup, Tag, Backup Set, Backup Piece
66
Hierarquia
→ BACKUP
→ BACKUP TAG
→ BACKUP SET
→ BACKUP PIECE
67
Lab 12.1: Backup, BackupSet, PackupPiece
Altere a configuração do RMAN para utilizar paralelismo de BACKUP.
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
Execute um BACKUP Completo do Banco de Dados.
Encontre no resultado os BACKUP SETs, BACKUP PIECEs e TAG.
68
RMAN: List
69
Lab 13.1: List
$ export NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'
70
RMAN: FORMAT
71
FORMAT
%a Activation ID
%c Copy number
%d Database name
%D Day of the month
%e Archived log sequence
%f Absolute file number
%F Combines the DBID, day, month, year, and sequence (somente para ControlFile AutoBackup)
%h Archived redo log thread number.
%I Database ID.
%M Month
%N Tablespace name
%n Database name, padded on the right with x
%p Piece number within the backup set
%s Backup set number
%t Backup set time stamp
%T Year, month, and day
%U System-generated unique filename
%Y Year
72
Lab 14.1: Format
Crie dois diretórios para armazenar os BACKUPs.
73
RMAN: Backup Incremental
74
Differential Incremental Backups
75
Cumulative Incremental Backups
76
Lab 15.1: Backup Incremental
Execute um BACKUP completo do Banco de Dados.
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
77
Lab 15.2: Backup Incremental
Habilite o BLOCK CHANGE TRACKING.
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/home/oracle/BCT.rman';
78
Lab 15.3: Backup Incremental
Execute um Incrementally Updated Backup.
RMAN> BACKUP INCREMENTAL LEVEL 0 AS COPY DATABASE TAG 'BackupFull';
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'BackupFull' DATABASE;
RMAN> RECOVER COPY OF DATABASE WITH TAG 'BackupFull';
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'BackupFull' DATABASE;
RMAN> RECOVER COPY OF DATABASE WITH TAG 'BackupFull';
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'BackupFull' DATABASE;
RMAN> RECOVER COPY OF DATABASE WITH TAG 'BackupFull';
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'BackupFull' DATABASE;
RMAN> RECOVER COPY OF DATABASE WITH TAG 'BackupFull';
79
RMAN: Switch
80
Lab 16.1: Switch
Troque a localização de um DATAFILE com RMAN.
SQL> ALTER TABLESPACE USERS READ WRITE;
RMAN> BACKUP DATAFILE 7;
RMAN> RUN {
SQL 'ALTER TABLESPACE USERS OFFLINE';
SET NEWNAME FOR DATAFILE 7 TO '/home/oracle/users01.NEWNAME.dbf';
RESTORE DATAFILE 7;
RECOVER DATAFILE 7;
SWITCH DATAFILE 7;
SQL 'ALTER TABLESPACE USERS ONLINE';
}
81
Lab 16.2: SWITCH DATABASE TO COPY
Troque a localização do DATABASE com RMAN.
RMAN> REPORT SCHEMA;
RMAN> BACKUP AS COPY DATABASE FORMAT '/u01/NEWORADATA/%N_%f.dbf' FORCE;
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> SWITCH DATABASE TO COPY;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
RMAN> REPORT SCHEMA;
RMAN> LIST COPY OF DATAFILE 1;
O que aconteceu?
82
RMAN: Retention
83
Lab 17.1: Retention
Altere o RETENTION para RECOVERY WINDOW OF 6 DAYS.
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 6 DAYS;
84
Lab 17.2: Retention
Altere o RETENTION para REDUNDANCY 2.
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
85
Lab 17.3: Retention
Execute um BACKUP que ignora o RETENTION.
RMAN> BACKUP DATABASE KEEP UNTIL TIME='SYSDATE+366';
86
RMAN: Scripts
87
Lab 18.1: Scripts
Crie um Stored Script para um BACKUP completo do Banco de Dados.
RMAN> CREATE SCRIPT BackupCompleto_nerv01
{BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;}
89
Lab 19.1: Change
Liste todos os BACKUPS do DATAFILE 1.
90
Lab 19.2: Change
Liste todos os Backups.
91
RMAN: Clone
92
Lab 20.1: Clone
Crie um PFILE para o banco Clone.
$ vi /u01/app/oracle/product/19.3.0.0/db_1/dbs/initTESTE.ora
*.audit_file_dest='/u01/app/oracle/admin/TESTE/adump'
*.audit_trail='db'
*.compatible='19.3.0.0.0'
*.control_files='/u01/app/oracle/oradata/TESTE/control01.ctl','/u01/app/oracle/
fast_recovery_area/TESTE/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='TESTE'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=100g
*.diagnostic_dest='/u01/app/oracle'
*.job_queue_processes=4
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=512m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_manager_plan='DEFAULT_PLAN'
*.sga_target=1024m
*.undo_tablespace='UNDOTBS1'
*.db_file_name_convert=('/u01/NEWORADATA/','/u01/app/oracle/oradata/TESTE/','/u01/app/
oracle/oradata/ORCL/','/u01/app/oracle/oradata/TESTE/','/home/oracle/','/u01/app/oracle/
oradata/TESTE/')
*.log_file_name_convert=('/u01/app/oracle/oradata/ORCL/','/u01/app/oracle/oradata/TESTE/')
*.enable_pluggable_database=TRUE
93
Lab 20.2: Clone
Crie uma entrada no tnsnames.ora para o banco Clone.
$ vi /u01/app/oracle/product/19.3.0.0/db_1/network/admin/tnsnames.ora
...
TESTE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = nerv02.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TESTE)
(UR=A)
)
)
...
94
Lab 20.3: Clone
Crie uma entrada estática no listener.ora para o banco Clone.
$ vi /u01/app/oracle/product/19.3.0.0/db_1/network/admin/listener.ora
...
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=TESTE)(ORACLE_HOME=/u01/app/oracle/
product/19.3.0.0/db_1)(SID_NAME=TESTE)))
Reinicie o LISTENER.
$ lsnrctl reload
95
Lab 20.4: Clone
Inicie a instância Clone.
$ export ORACLE_SID=TESTE
$ rlwrap sqlplus / AS SYSDBA
SQL> CREATE SPFILE FROM PFILE;
SQL> STARTUP NOMOUNT;
SQL> EXIT;
96
RMAN: Tuning
97
Tuning
Memória
●
DISK_ASYNCH_IO / TAPE_ASYNCH_IO (DBWR_IO_SLAVES / BACKUP_TAPE_IO_SLAVES)
●
PGA / LARGE_POOL / SHARED_POOL
Paralelismo
●
PARALLELISM
●
Multi-section backups: BACKUP SECTION SIZE 1G DATABASE;
Leitura
●
CONFIGURE CHANNEL 1 DEVICE TYPE DISK MAXOPENFILES 4;
●
Block Change Tracking
DURATION
●
BACKUP DURATION 5:00 PARTIAL MINIMIZE TIME DATABASE FILESPERSET 1;
●
BACKUP DURATION 5:00 PARTIAL MINIMIZE LOAD DATABASE FILESPERSET 1;
98
Tuning
Acompanhamento
SET PAGESIZE 1000
SET LINESIZE 200
COL MESSAGE FORMAT A100
COL FILENAME FORMAT A100
SQL> SELECT
SID,SERIAL#,START_TIME,((SOFAR/TOTALWORK)*100),'%',TIME_REMAINING,
MESSAGE FROM V$SESSION_LONGOPS where TIME_REMAINING > 0 ORDER BY
TIME_REMAINING;
99
Views RMAN
V$BACKUP_FILES
V$BACKUP_PIECE
V$BACKUP_SET_SUMMARY
V$BACKUP_CONTROLFILE_DETAILS
V$BACKUP_COPY_DETAILS
V$BACKUP_DATAFILE_DETAILS
V$RMAN_OUTPUT
V$RMAN_STATUS
V$RMAN_BACKUP_JOB_DETAILS
SQL> SELECT
INPUT_TYPE,
TO_CHAR(START_TIME, 'DD/MM/YYYY, HH24:MI:SS'),
TO_CHAR(END_TIME, 'DD/MM/YYYY, HH24:MI:SS'),
STATUS
FROM V$RMAN_BACKUP_JOB_DETAILS
ORDER BY START_TIME;
100
RMAN CATALOG
RC_ARCHIVED_LOG RC_DATABASE_INCARNATION
RC_BACKUP_ARCHIVELOG_DETAILS RC_DATAFILE
RC_BACKUP_ARCHIVELOG_SUMMARY RC_DATAFILE_COPY
RC_BACKUP_CONTROLFILE RC_LOG_HISTORY
RC_BACKUP_CONTROLFILE_DETAILS RC_OFFLINE_RANGE
RC_BACKUP_CONTROLFILE_SUMMARY RC_PROXY_ARCHIVEDLOG
RC_BACKUP_COPY_DETAILS RC_PROXY_ARCHIVELOG_DETAILS
RC_BACKUP_COPY_SUMMARY RC_PROXY_ARCHIVELOG_SUMMARY
RC_BACKUP_CORRUPTION RC_PROXY_CONTROLFILE
RC_BACKUP_DATAFILE RC_PROXY_COPY_DETAILS
RC_BACKUP_DATAFILE_DETAILS RC_PROXY_COPY_SUMMARY
RC_BACKUP_DATAFILE_SUMMARY RC_PROXY_DATAFILE
RC_BACKUP_FILES RC_REDO_LOG
RC_BACKUP_PIECE RC_REDO_THREAD
RC_BACKUP_PIECE_DETAILS RC_RESTORE_POINT
RC_BACKUP_REDOLOG RC_RESYNC
RC_BACKUP_SET RC_RMAN_BACKUP_JOB_DETAILS
RC_BACKUP_SET_DETAILS RC_RMAN_BACKUP_SUBJOB_DETAILS
RC_BACKUP_SET_SUMMARY RC_RMAN_BACKUP_TYPE
RC_BACKUP_SPFILE RC_RMAN_CONFIGURATION
RC_BACKUP_SPFILE_DETAILS RC_RMAN_OUTPUT
RC_BACKUP_SPFILE_SUMMARY RC_RMAN_STATUS
RC_CHECKPOINT RC_SITE
RC_CONTROLFILE_COPY RC_STORED_SCRIPT
RC_COPY_CORRUPTION RC_STORED_SCRIPT_LINE
RC_DATABASE RC_TABLESPACE
RC_DATABASE_BLOCK_CORRUPTION RC_TEMPFILE
RC_UNUSABLE_BACKUPFILE_DETAILS
101
Lab 21.1: Tuning
Qual a diferença destas duas execuções?
RMAN> BACKUP DURATION 5:00 PARTIAL MINIMIZE TIME DATABASE FILESPERSET 1;
RMAN> BACKUP DURATION 5:00 PARTIAL MINIMIZE LOAD DATABASE FILESPERSET 1;
20:00
BACKUP DURATION 08:00 PARTIAL MINIMIZE TIME DATABASE FILESPERSET 1;
12:00
BACKUP DURATION 6:00 PARTIAL MINIMIZE LOAD DATABASE NOT BACKED UP SINCE TIME
'SYSDATE-1' FILESPERSET 1; 102
RMAN: Restore & Recover
103
RESTORE & RECOVER
104
RESTORE & RECOVER Multitenant
RMAN> RESTORE DATABASE;
RMAN> RESTORE DATABASE root;
RMAN> RESTORE PLUGGABLE DATABASE PDB1;
RMAN> RESTORE TABLESPACE PDB1:USERS;
105
RMAN: Recovery - SPFILE
106
Lab 22.1: Restore SPFILE
Cenário com a Instance em OPEN.
Restore com CATALOG e com Backup.
Preparação:
• Deixe a Instance em estado OPEN.
• Remova o SPFILE.
• Se tiver um PFILE (initORCL.ora), remova-o.
• Altere um parâmetro no SPFILE.
Procedimento:
• Conectar no RMAN, com TARGET / e CATALOG centralizado.
• Listar Backups Disponíveis (LIST).
• Escolher qual Backup recuperar.
• Restaurar SPFILE (RESTORE).
• Altere um parâmetro no SPFILE.
107
Lab 22.2: Restore SPFILE
Cenário com a Instance em OPEN.
Restore sem CATALOG e com Backup.
Preparação:
• Deixe a Instance em estado OPEN.
• Remova o SPFILE.
• Se tiver um PFILE (initORCL.ora), mova-o para o /home/oracle.
• Altere um parâmetro no SPFILE.
Procedimento:
• Conectar no RMAN, com TARGET /.
• Listar Backups Disponíveis (LIST).
• Escolher qual Backup recuperar.
• Restaurar SPFILE (RESTORE).
• Altere um parâmetro no SPFILE.
108
Lab 22.3: Restore SPFILE
Cenário com a Instance em OPEN.
Restore sem CATALOG, sem Backup, e com PFILE (init).
Preparação:
• Deixe a Instance em estado OPEN.
• Crie um PFILE a partir do SPFILE, e mova-o para o /home/oracle.
• Remova o SPFILE.
• Altere um parâmetro no SPFILE.
Procedimento:
• Passe a Instance ao estado SHUTDOWN.
• Passe a instance ao estado OPEN, utilizando o PFILE.
• Criar SPFILE a partir do PFILE.
• Passe a Instance ao estado SHUTDOWN.
• Passe a instance ao estado OPEN.
• Altere um parâmetro no SPFILE.
109
Lab 22.4: Restore SPFILE
Cenário com a Instance em OPEN.
Restore sem CATALOG, sem BACKUP, e sem PFILE (init).
Preparação:
• Deixe a Instance em estado OPEN.
• Remova o SPFILE.
• Se tiver um PFILE (initORCL.ora), mova-o para o /home/oracle.
• Altere um parâmetro no SPFILE.
Procedimento:
• Criar PFILE a partir do Alert Log.
• Passe a Instance ao estado SHUTDOWN.
• Passe a instance ao estado OPEN, utilizando o PFILE.
• Criar SPFILE a partir do PFILE.
• Passe a Instance ao estado SHUTDOWN.
• Passe a instance ao estado OPEN.
• Altere um parâmetro no SPFILE.
110
Lab 22.5: Restore SPFILE
Cenário com a Instance em SHUTDOWN.
Restore com CATALOG e com Backup.
Preparação:
• Deixe a Instance em estado SHUTDOWN.
• Se tiver um PFILE (initORCL.ora), mova-o para o /home/oracle.
• Remova o SPFILE.
Procedimento:
• Conectar no RMAN, com TARGET / e CATALOG centralizado.
• SET DBID.
●
Passe a Instance ao estágio STARTUP NOMOUNT. Como, sem o SPFILE ou PFILE?
●
Listar Backups Disponíveis (LIST). Neste momento, verifique o Parâmetro control_files pelo SQL*Plus.
• Escolher qual Backup recuperar.
• Restaurar SPFILE (RESTORE).
• Passe a Instance ao estágio SHUTDOWN.
• Passe a Instance ao estágio OPEN.
• Altere um parâmetro no SPFILE.
111
Lab 22.6: Restore SPFILE
Cenário com a Instance em SHUTDOWN.
Restore sem CATALOG e com Backup.
Preparação:
• Deixe a Instance em estado SHUTDOWN.
• Se tiver um PFILE (init), mova-o para o /home/oracle.
• Remova o SPFILE.
Procedimento:
• Conectar no RMAN, com TARGET /.
• SET DBID.
• Passe a Instance ao estágio STARTUP NOMOUNT.
• Listar Backups Disponíveis (LIST). Por que não funciona?
Neste momento, verifique o Parâmetro control_files pelo SQL*Plus.
• Escolher qual BACKUP recuperar.
• Inclua este BACKUP no Repositório (CATALOG). Por que não funciona?
• Restaurar SPFILE (RESTORE).
• Passe a Instance ao estágio SHUTDOWN.
• Passe a Instance ao estágio OPEN.
• Altere um parâmetro no SPFILE.
112
Lab 22.7: Restore SPFILE
Cenários com a Instance em SHUTDOWN.
Restore sem CATALOG, sem Backup, e sem PFILE (init) e sem Alert Log.
Preparação:
• Passe a Instance ao estado SHUTDOWN.
• Remova o PFILE.
• Remova o SPFILE.
Procedimento:
• Crie um PFILE só com os parâmetros básicos.
• Passe a instance ao estado OPEN, utilizando o PFILE.
• Pelo RMAN, restaure o SPFILE.
• Passe a Instance ao estado SHUTDOWN.
• Passe a instance ao estado OPEN.
• Altere um parâmetro no SPFILE.
113
RMAN: Recovery - ARCHIVEs
114
Lab 23.1: Restore Archived Redo Logs
ARCHIVELOGs só podem ser restaurados com a INSTANCE em MOUNT ou OPEN.
Procedimento:
• Execute BACKUP de todos ARCHIVELOGs com DELETE ALL INPUT.
RMAN> BACKUP ARCHIVELOG ALL DELETE ALL INPUT;
115
RMAN: Recovery - DATAFILE
116
Hierarquia Restore & Recover
RESTORE
→ COPY
→ BACKUPSET FULL ou INCREMENTAL LEVEL 0
RECOVER
→ REDO LOGs
→ BACKUPSET INCREMENTAL LEVEL 1
→ ARCHIVED REDO LOGs
→ BACKUP ARCHIVED REDO LOGs
117
Lab 24.1: Restore Datafile
DATAFILEs só podem ser restaurados com a INSTANCE nos estados MOUNT ou OPEN.
O RESTORE só pode ser feito com dados do Repositório.
DATAFILEs isolados só podem sofrer COMPLETE RECOVERY.
Cenário com Backup de DATAFILE e a Instance em estado OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Remova o DATAFILE USERS_19.dbf pelo Sistema Operacional.
• Verifique o Alert Log.
• Crie uma tabela na TABLESPACE USERS.
CREATE TABLE T1 (C1 NUMBER) TABLESPACE USERS;
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
• Coloque o DATAFILE em OFFLINE.
ALTER DATABASE DATAFILE 19 OFFLINE;
• Execute o RESTORE do DATAFILE.
RESTORE DATAFILE 19;
• Execute o RECOVER do DATAFILE.
RECOVER DATAFILE 19;
• Altere o DATAFILE para ONLINE.
ALTER DATABASE DATAFILE 19 ONLINE;
118
Lab 24.2: Restore Datafile
Cenário com Backup de DATAFILE e a Instance em estado SHUTDOWN.
Preparação:
• Deixe a Instance em estado OPEN.
• Remova o DATAFILE USERS_19.dbf pelo Sistema Operacional.
• Execute SHUTDOWN IMMEDIATE.
• Verifique o Alert Log.
• Execute SHUTDOWN ABORT.
• Verifique o Alert Log.
Procedimento:
• Execute STARTUP. Em que estado a Instance parou?
• Execute o RESTORE do DATAFILE.
• Execute o RECOVER do DATAFILE.
• Altere a Instance para o estado OPEN.
119
Lab 24.3: Incomplete Recovery
Preparação:
• Faça um Backup do Banco de Dados.
• Espere 10 minutos.
• Remova o SCHEMA SCOTT.
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> DROP USER SCOTT CASCADE;
Procedimento:
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> RUN {
SET UNTIL TIME "TO_DATE('24/09/2021 15:05:00','DD/MM/YYYY HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
120
Lab 24.4: Restore Datafile
Cenário sem Backup de DATAFILE, com ARCHIVEs e a Instance em estado OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Crie um novo DATAFILE na TABLESPACE USERS.
• Crie uma tabela na TABLESPACE USERS.
SQL> CREATE TABLE T244 TABLESPACE USERS AS SELECT * FROM ALL_OBJECTS;
• Remova o novo DATAFILE pelo Sistema Operacional.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
• Coloque o DATAFILE em OFFLINE.
121
Lab 24.5: Restore Datafile
Cenário sem Backup de DATAFILE, com ARCHIVEs e a Instance em estado SHUTDOWN.
Preparação:
• Deixe a Instance em estado OPEN.
• Remova o novo DATAFILE da TABLESPACE USERS pelo Sistema Operacional.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
• Execute SHUTDOWN ABORT.
Procedimento:
• Execute STARTUP. Em que estado a Instance parou?
122
Lab 24.6: Restore Datafile
Cenário sem Backup de DATAFILE, sem ARCHIVEs e a Instance em estado OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Remova um DATAFILE pelo Sistema Operacional.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
• Verifique qual o PID do processo Database Writer.
$ ps aux | grep dbw
123
Lab 24.7: Restore Datafile
Cenário sem Backup de DATAFILE, sem ARCHIVEs e a Instance em estado SHUTDOWN.
Preparação:
•
●
Deixe a Instance em estado OPEN.
●
Remova o DATAFILE SOE_18.dbf pelo Sistema Operacional.
●
Execute SHUTDOWN IMMEDIATE.
●
Verifique o Alert Log.
●
Execute SHUTDOWN ABORT.
●
Verifique o Alert Log.
Procedimento:
• Execute STARTUP. Em que estado a Instance parou? SHOW PDBS
• Coloque o DATAFILE em OFFLINE DROP.
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> ALTER DATABASE DATAFILE 18 OFFLINE DROP;
• Passe a instância ao estado OPEN.
SQL> ALTER PLUGGABLE DATABASE PROD OPEN READ WRITE;
• Mova os objetos que não tinham segmentos no DATAFILE perdido para outra TABLESPACE, e remova a
antiga:
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> SELECT DISTINCT SEGMENT_NAME, SEGMENT_TYPE FROM DBA_EXTENTS WHERE
SEGMENT_NAME NOT IN (SELECT SEGMENT_NAME FROM DBA_EXTENTS WHERE FILE_ID = 18)
AND TABLESPACE_NAME = 'SOE';
SQL> CREATE TABLESPACE NEW_SOE DATAFILE '/u01/soe01.dbf' size 1g AUTOEXTEND ON;
SQL> ALTER USER SOE QUOTA UNLIMITED ON NEW_SOE;
SQL> ALTER TABLE SOE.... MOVE TABLESPACE NEW_SOE;
SQL> DROP TABLESPACE SOE INCLUDING CONTENTS AND DATAFILES; 124
Lab 24.8: Restore Datafile
Cenário com corrupção de um DATAFILE, e com a Instance em OPEN.
Preparação:
• Crie uma nova TABLESPACE.
• Crie uma Tabela, com dados, nesta nova TABLESPACE.
SQL> CREATE TABLE TESTE TABLESPACE TESTE AS SELECT * FROM ALL_OBJECTS;
Faça um BACKUP Completo do Banco de Dados.
• Verifique qual o HEADER BLOCK dos dados desta Tabela.
SQL> SELECT HEADER_BLOCK FROM DBA_SEGMENTS WHERE OWNER = 'SYS' AND SEGMENT_NAME =
'TESTE';
Procedimento:
• RMAN> BLOCKRECOVER DATAFILE 7 BLOCK 131;
• Verifique o Alert Log.
125
RMAN: Recovery - TEMPFILE
126
Lab 25.1: Restore Tempfile
TEMPFILEs só podem ser alterados com a INSTANCE nos estados MOUNT ou OPEN.
Não há BACKUP de TEMPFILEs.
Preparação:
• Deixe a Instance em estado OPEN.
• Remova todos os TEMPFILEs do CDB pelo Sistema Operacional.
• Execute uma validação do Banco de Dados.
• Crie uma Tabela a partir da ALL_OBJECTS.
SQL> CREATE TABLE T251 AS SELECT * FROM ALL_OBJECTS;
• Aumente o tamanho da tabela (6x INSERT INTO T251 SELECT * FROM T251; COMMIT;).
• Execute um SELECT que utiliza a TEMP.
SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET=10M;
SQL> CREATE INDEX IDX_T251_01 ON T251(OBJECT_NAME);
SQL> SELECT A.* FROM T251 A, T251 B;
Procedimento:
• Adicione um novo TEMPFILE.
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/ORCL/temp02.dbf'
SIZE 100M;
• Remova logicamente o TEMPFILE.
SQL> ALTER DATABASE TEMPFILE '/u01/app/oracle/oradata/ORCL/temp01.dbf' DROP;
SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET=1G;
127
RMAN: Recovery - TABLESPACES
128
Lab 26.1: Restore Tablespace
Cenário com a Instance em estado OPEN.
TABLESPACEs só podem ser restauradas com a INSTANCE nos estados MOUNT ou OPEN.
O RESTORE só pode ser feito com dados do Repositório.
Preparação:
• Execute um Backup Completo do Banco de Dados.
• Deixe a Instance em estado OPEN.
• Remova todos os DATAFILEs da TABLESPACE USERs do CDB pelo Sistema Operacional.
• Verifique o Alert Log.
• Crie uma tabela na TABLESPACE USERS.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
• Altere os DATAFILE da TABLESPACE em OFFLINE.
• Execute o RESTORE da TABLESPACE.
• Execute o RECOVER da TABLESPACE.
• Altere os DATAFILE da TABLESPACE em ONLINE.
129
Lab 26.2: Restore Tablespace
Cenário com a Instance em estado SHUTDOWN.
TABLESPACEs só podem ser restaurados com a INSTANCE nos estados MOUNT ou OPEN.
O RESTORE só pode ser feito com dados do Repositório.
Preparação:
• Deixe a Instance em estado OPEN.
• Remova todos os DATAFILEs da TABLESPACE USERs do CDB pelo Sistema Operacional.
• Execute SHUTDOWN IMMEDIATE.
• Verifique o Alert Log.
• Execute SHUTDOWN ABORT.
• Verifique o Alert Log.
Procedimento:
• Execute STARTUP. Em que estado a Instance parou?
• Execute o RESTORE da TABLESPACE.
• Execute o RECOVER da TABLESPACE.
• Altere a Instance para o estado OPEN.
130
Lab 26.3: Restore Tablespace
TSPITR: Tablespace Point In Time Recovery.
Preparação:
• Crie um diretorio temporário para esta operação.
• Crie uma TABLESPACE:
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> CREATE TABLESPACE NEWTS DATAFILE '/u01/new01.dbf’ SIZE 1G;
SQL> ALTER USER SCOTT QUOTA UNLIMITED ON NEWTS;
• Crie uma Tabela com o Usuário SCOTT na nova TABLESPACE.
$ rlwrap sqlplus SCOTT/TIGER@PROD
SQL> CREATE TABLE T1 (C1 NUMBER) TABLESPACE NEWTS;
SQL> INSERT INTO T1 VALUES (1);
SQL> COMMIT;
SQL> INSERT INTO T1 SELECT * FROM T1; – - Executar 20x.
SQL> COMMIT;
• Execute um BACKUP completo do Banco de Dados.
• Gere novos ARCHIVEs (3 x ALTER SYSTEM SWITCH LOGFILE).
• Verifique qual o último ARCHIVELOG gerado (LIST ARCHIVELOG ALL).
• Execute DROP da tabela com o usuário SCOTT.
Procedimento:
Execute o TSPITR:
RMAN> RECOVER TABLESPACE PROD:NEWTS UNTIL SEQUENCE 8 AUXILIARY
DESTINATION '/home/oracle/TableSpaceRecover/';
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> ALTER TABLESPACE NEWTS ONLINE; 131
Lab 26.4: Restore Table
TPITR: Table Point In Time Recovery.
Preparação:
• Crie um diretorio temporário para esta operação.
• Execute um BACKUP completo do Banco de Dados.
• Gere novos ARCHIVEs (ALTER SYSTEM SWITCH LOGFILE).
• Verifique qual o último ARCHIVELOG gerado (LIST ARCHIVELOG ALL).
• Apague todos os dados da Tabela T1 criada pelo SCOTT.
Procedimento:
RMAN> RECOVER TABLE SCOTT.T3 OF PLUGGABLE DATABASE PROD
UNTIL SEQUENCE N
AUXILIARY DESTINATION '/home/oracle/TableRecover/'
REMAP TABLE SCOTT.T3:T4;
132
RMAN: Recovery - UNDO
133
Lab 27.1: Restore Undo
Cenário com 1 DATAFILE de UNDO com segmentos ativos, com Backup e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Verifique qual a TABLESPACE de UNDO padrão.
• Remova o DATAFILE da TABLESPACE de UNDO.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
• Coloque o DATAFILE em OFFLINE. O que aconteceu com o DATAFILE? E sua sessão?
• Execute o RESTORE do DATAFILE. Verifique o Alert Log.
• Execute o RECOVER do DATAFILE. O que aconteceu com o DATAFILE? E sua sessão?
• Execute SHUTDOWN IMMEDIATE. Por que não funciona?
• Execute SHUTDOWN ABORT.
• Execute STARTUP. Em que estado a Instance parou? Qual o Estado do DATAFILE?
• Execute o RECOVER do DATAFILE. Qual o Estado do DATAFILE?
• Altere o DATAFILE para ONLINE.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
134
Lab 27.2: Restore Undo
Cenário com 1 DATAFILE de UNDO sem segmentos ativos, com Backup e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Verifique qual a TABLESPACE de UNDO padrão.
• Adicione um DATAFILE a TABLESPACE de UNDO padrão.
• Executa um BACKUP Completo do Banco de Dados.
• Remova (rm) o novo DATAFILE da TABLESPACE de UNDO.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
• Coloque o DATAFILE em OFFLINE.
• Execute o RESTORE do DATAFILE.
• Execute o RECOVER do DATAFILE.
• Altere o DATAFILE para ONLINE.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
135
Lab 27.3: Restore Undo
Cenário com perda de todos os DATAFILEs de UNDO, sem Backup e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Verifique qual a TABLESPACE de UNDO padrão.
• Remova todos os DATAFILEs da TABLESPACE de UNDO.
• Verifique o Alert Log.
• Execute uma validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
•Execute SHUTDOWN IMMEDIATE. Por que não funciona?
• Execute SHUTDOWN ABORT.
• Adicione no PFILE o Parâmetro UNDO_MANAGEMENT em MANUAL.
• Execute STARTUP pelo PFILE. Em que estado a Instance parou?
• Altere os DATAFILEs de UNDO para OFFLINE DROP.
• Passe a Instance ao Estado OPEN.
• Remova a antiga TABLESPACE de UNDO, e crie outra com o mesmo nome.
• Se necessário, utilize o parâmetro ."_offline_rollback_segments".
• SQL> SELECT SEGMENT_NAME FROM DBA_ROLLBACK_SEGS WHERE STATUS =
'NEEDS RECOVERY';
• Reinicie a Instance.
136
RMAN: Recovery – REDO LOGs
137
RESETLOGS
138
Incomplete Recovery
• TIME
SET UNTIL TIME "TO_DATE('2010-07-14:13:00:00','YYYY-MM-DD:HH24:MI:SS')";
• SCN
SET UNTIL SCN 824753;
• SEQUENCE
SET UNTIL SEQUENCE 42;
139
Lab 28.1: Restore Redo Logs
Cenário com REDO LOG multiplexado, e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Adicione 1 Grupo de REDO Log Multiplexado.
SQL> ALTER DATABASE ADD LOGFILE ('/u01/redo04a.log', '/u01/redo04b.log') SIZE 50M;
• Remova (rm) 1 membro deste grupo de REDO LOG.
• Verifique o Alert Log.
Procedimento:
• Execute 4x ALTER SYSTEM SWITCH LOGFILE;
• Verifique o Alert Log.
• Remova o membro.
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u01/redo04a.log';
140
Lab 28.2: Restore Redo Logs
Cenário com REDO LOG não multiplexado, REDO LOG INACTIVE, e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Verifique um REDO LOG com status INACTIVE (V$LOG).
• Remova (rm) um REDO LOG com status INACTIVE.
• Verifique o Alert Log.
Procedimento:
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
141
Lab 28.3: Restore Redo Logs
Cenário com REDO LOG não multiplexado, REDO LOG ACTIVE, e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Verifique um REDO LOG com status ACTIVE (V$LOG).
• Remova um REDO LOG com status ACTIVE.
• Verifique o Alert Log.
Procedimento:
• Execute SHUTDOWN IMMEDIATE.
• Execute STARTUP MOUNT.
• Execute um INCOMPLETE RECOVERY falso.
SQL> RECOVER DATABASE UNTIL CANCEL;
142
Lab 28.4: Restore Redo Logs
Cenário com REDO LOG não multiplexado, REDO LOG CURRENT, e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Execute um BACKUP completo do Banco de Dados.
• Execute várias vezes ALTER SYSTEM SWITCH LOGFILE.
• Verifique qual o REDO LOG com status CURRENT (V$LOG).
• Verifique qual a última SEQUENCE completada.
• Remova o REDO LOG com status CURRENT.
• Verifique o Alert Log.
Procedimento:
• Execute SHUTDOWN IMMEDIATE.
• Execute STARTUP MOUNT.
• Execute um INCOMPLETE RECOVERY.
RUN {
SET UNTIL SEQUENCE 1;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
• Verifique os INCARNATIONs de seu Banco de Dados.
143
Lab 28.5: Restore Redo Logs
Incomplete Recovery para uma outro INCARNATION.
Preparação:
• Deixe a Instance em estado OPEN.
• Execute um BACKUP completo do Banco de Dados.
Procedimento:
• Verifique os INCARNATIONs de seu Banco de Dados (LIST INCARNATION).
• Execute SHUTDOWN IMMEDIATE.
• Execute STARTUP MOUNT.
• Altere para o INCARNATION anterior ao CURRENT:
RMAN> RESET DATABASE TO INCARNATION 29467;
• Execute INCOMPLETE RECOVERY até um SCN anterior ao primeiro SCN do INCARNATION CURRENT.
RMAN> RESTORE DATABASE UNTIL SCN 5780509;
RMAN> RECOVER DATABASE UNTIL SCN 5780509;
RMAN> ALTER DATABASE OPEN RESETLOGS;
144
Flashback
145
Flashback
●
Flashback Database
●
Flashback Table
●
Flashback Drop
●
Flashback Transaction
●
Flashback Transaction Query
●
Flashback Query
●
Flashback Versions Query
●
Oracle Flashback Data Archive / Total Recall
146
Lab 29.1: Flashback Database
Ative o Flashback.
SQL> SELECT FLASHBACK_ON FROM V$DATABASE;
SQL> SHUTDOWN IMMEDIATE; <= 11gR2
SQL> STARTUP MOUNT; <= 11gR2
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN; <= 11gR2
Remova um SCHEMA.
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> SELECT TO_CHAR(SUM(BYTES)) FROM DBA_SEGMENTS WHERE OWNER = 'SOE';
SQL> SELECT NAME, TIME, GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE FROM
GV$RESTORE_POINT;
SQL> DROP USER SOE CASCADE;
148
Encontrando o DBID
Onde encontrar o DBID?
• V$DATABASE
• Ao conectar no RMAN
• No CATALOG.
• No Alert Log, ao trocar o DBID.
• No nome do CONTROLFILE AUTOBACKUP.
• Dentro dos Backups da SYSTEM, SYSAUX e UNDO (“MAXVALUE” ou “DBID:”).
• Dentro do DATAFILE da SYSTEM ou SYSAUX (“MAXVALUE” ou “DBID:”).
$ strings /u01/app/oracle/product/19.3.0.0/db_1/dbs/snapcf_ORCL.f |
grep c-
149
Lab 30.1: Restore Controlfiles
Cenário com perda de 1 CONTROLFILE multiplexado, e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Verifique quais os CONTROLFILEs do Banco de Dados.
• Apague um dos CONTROLFILEs.
• Verifique o Alert Log.
• Faça uma Validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
• Execute SHUTDOWN IMMEDIATE. Por que não funciona?
• Execute SHUTDOWN ABORT.
• Copie o CONTROLFILE sobrevivente para o que foi apagado.
• Execute STARTUP.
150
Lab 30.2: Restore Controlfiles
Cenário com perda de todos CONTROLFILEs, com Backup, com CATALOG, e com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Verifique quais os CONTROLFILEs do Banco de Dados.
• Apague todos os CONTROLFILEs.
• Verifique o Alert Log.
• Faça uma Validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
• Execute SHUTDOWN IMMEDIATE. Por que não funciona?
• Execute SHUTDOWN ABORT.
• Execute STARTUP. Em que estado a Instance parou?
• Execute o comando SET DBID.
• Execute RESTORE do CONTROLFILE. Para onde são restaurados?
• Execute um Incomplete Recovery falso:
RMAN> RECOVER DATABASE;
151
Lab 30.3: Restore Controlfiles
Cenário com perda de todos CONTROLFILEs, sem Backup via RMAN, sem CATALOG, com Backup em
TRACE, e com a Instance em SHUTDOWN.
Preparação:
• Deixe a Instance em estado OPEN.
• Execute um BACKUP em TRACE.
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/tmp/CF.trc';
Procedimento:
• Execute STARTUP. Em que estado a Instance parou?
• Execute o comando CREATE CONTROLFILE que está no final do TRACE.
• Execute um Incomplete Recovery falso.
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
152
Lab 30.4: Restore Controlfiles
Cenário com perda de todos CONTROLFILEs, sem Backup, sem CATALOG, com Backup em TRACE, e
com a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Execute um BACKUP em TRACE.
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/tmp/CF.trc';
Procedimento:
• Execute SHUTDOWN IMMEDIATE. Por que não funciona?
• Execute SHUTDOWN ABORT.
• Execute STARTUP. Em que estado a Instance parou?
• Execute o comando CREATE CONTROLFILE que está no final do TRACE.
• Execute um Incomplete Recovery falso.
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
• Quando for solicitado, indique o REDO LOG que estava CURRENT no momento do ABORT.
• Abra a Instance em RESETLOGS.
• Verifique os INCARNATIONs de seu Banco de Dados.
153
Lab 30.5: Restore Controlfiles
Cenário com perda de todos CONTROLFILEs, sem Backup, sem CATALOG, sem Backup em TRACE, e com
a Instance em OPEN.
Preparação:
• Deixe a Instance em estado OPEN.
• Verifique quais os CONTROLFILEs do Banco de Dados.
• Apague todos os CONTROLFILEs.
• Verifique o Alert Log.
• Faça uma Validação do Banco de Dados.
• Verifique o Alert Log.
Procedimento:
●
Execute SHUTDOWN IMMEDIATE. Por que não funciona?
●
Execute SHUTDOWN ABORT.
●
Copie o SNAPSHOT CONTROLFILE para os que foram apagados.
●
Execute STARTUP.
●
Execute um Incomplete Recovery falso.
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
●
Quando for solicitado, indique o REDO LOG que estava CURRENT no momento do ABORT.
154
Melhores Práticas
●
Domine a manipulação de dados do REPOSITORY.
●
Utilize um nome útil nos ARCHIVED REDO LOGs.
●
Utilize um nome útil nos BACKUPPIECEs.
●
Utilize TAGs.
●
Utilize o CATALOG.
●
Centralize o agendamento, execução e monitoração de seus BACKUPs no CATALOG.
●
Utilize RMAN STORED SCRIPTs.
●
O banco de dados do CATALOG é o mais importante de seu ambiente.
●
Execute VALIDATE CHECK LOGICAL regularmente.
●
Execute RESTORE VALIDATE regularmente. Anote o tempo de execução.
●
Utilize PASSWORD ENCRYPTION, pelo menos.
●
Habilite o CONTROLFILE AUTOBACKUP, em um local seguro.
●
Habilite o BACKUP OPTIMIZATION (exceto em CDB Arquitecture).
●
Teste qual o melhor algoritmo de compressão para seus dados e seu hardware.
●
Use REDO LOGs multiplexados.
●
Use CONTROLFILEs multiplexados.
●
SHUTDOWN ABORT é mais rápido e tão seguro quando IMMEDIATE.
●
Backup incremental não é substituto de backup completo.
●
O Incremental só é vantajoso com BCT.
●
Compare o Backup Incremental com o de Archives.
●
Utilize RETENTION do tipo REDUNDANCY: você não quer um backup do mês passado.
●
Pratique cenários de RESTORE e RECOVER regularmente. Antes que aconteça.
155
Perguntas?