Rman

Published on May 2016 | Categories: Types, Instruction manuals | Downloads: 46 | Comments: 0 | Views: 292
of 12
Download PDF   Embed   Report

Comments

Content

- We found that BD is in ARCHIVELOG mode
ARCHIVE LOG LIST;
- We note that we have enabled FLASHBACK mode
SELECT FLASHBACK_ON FROM V$DATABASE;
- If it is not enabled, review the settings and activate FRA
SHOW PARAMETER RECOVERY_FILE
ALTER DATABASE FLASHBACK ON;
- Activate functionality BLOCK CHANGE TRACKING for Incremental Backups
- Default is created in the location specified by parameter DB_CREATE_FILE_DEST
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u02/app/oracle/oradata/
OCM/block_change_tracking.f' REUSE;
- We check that was created correctly
SELECT * FROM V$BLOCK_CHANGE_TRACKING;
vi $ORACLE_HOME/network/admin/tnsnames.ora
# Add the entry for BD OEM
OEM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = oem.dbajunior.com) (PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = OEM)
)
)
- Create the need to accommodate the TABLESPACE RECOVERY CATALOG
CREATE TABLESPACE RCAT DATAFILE '/u01/app/oracle/oradata/OEM/rcat.dbf'
SIZE 100M AUTOEXTEND ON NEXT 1M MAXSIZE 1G EXTENT MANAGEMENT LOCAL UNIFORM SIZE
1M;
- Create the Recovery Catalog owner user with the necessary permissions
CREATE USER rman IDENTIFIED BY rman DEFAULT TABLESPACE RCAT TEMPORARY TABLESPACE
TEMP;
ALTER USER rman QUOTA UNLIMITED ON RCAT;
GRANT RECOVERY_CATALOG_OWNER TO rman;
rman catalog rman/rman@oem
CREATE CATALOG;
# Edit it TNSNAMES.ORA file
vi $ORACLE_HOME/network/admin/tnsnames.ora
# Add the following entries to the tnsnames.ora file from BD OEM.
OCM =
(DESCRIPTION=
(ADDRESS = (PROTOCOL = tcp) (HOST = ocm.dbajunior.com) (PORT = 1521))
(CONNECT_DATA=
(SERVICE_NAME=OCM)))
# Recorded in the BD catalog.
rman target sys@ocm catalog rman/rman@oem
REGISTER DATABASE;
RESYNC CATALOG;

BACKUP DATAFILE '/u01/app/oracle/oradata/OCM/users01.dbf' FORMAT '/tmp/backup/te
st.bkp';
CATALOG BACKUPPIECE '/tmp/backup/test.bkp';
CATALOG START WITH '/tmp/backup/';
CATALOG RECOVERY AREA;
DELETE BACKUPPIECE '/tmp/backup/test.bkp';
rman target sys@ocm catalog rman/rman@oem
RMAN> SHOW ALL;
RMAN configuration parameters for database with db_unique_name OCM are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOA
D TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/
dbs/snapcf_OCM.f'; # default
CONFIGURE CONTROLFILE AutoBackup ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/tmp/%F';
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;
# Let's see how to increase the number of copies of your backups
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
# También can specify that the check is no backup as obsolete ever
CONFIGURE RETENTION POLICY TO NONE;
# Not to be confused with CLEAR, which would set the default value of REDUNDANCY
1
CONFIGURE RETENTION POLICY CLEAR;
# Let's change the retention policy setting backups 7 days
# It is important that this retention is less than parameter CONTROL_FILE_RECORD
_KEEP_TIME
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
# Configuramos OPTIMIZATION
CONFIGURE BACKUP OPTIMIZATION ON;
# We specify 2 channel default for disk backups
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
# We launch a backup of a couple of small DATAFILES to check
# We will check two channels open
BACKUP DATAFILE 4.5;

# We delete backups completed
DELETE BACKUP OF DATAFILE 4,5;
# We connect to the database using the OCM recovery catalog
rman target sys@ocm catalog rman/rman@oem
# We did a Backup of all the BD + with archivelogs
BACKUP DATABASE PLUS ARCHIVELOG;
SELECT * FROM V$RECOVERY_AREA_USAGE;
# This
DELETE
# With
DELETE

command deletes all Backupsets
BACKUP;
this other command delete the backups AS COPY
COPY OF DATABASE;

# Full Backup of the database AS COPY
# Default BACKUP AS BACKUPSET is done, unless we change the configuration of RMA
N
# The advantage of this type of backups is that the RESTORE operation is inmmedi
ata
BACKUP AS COPY DATABASE PLUS ARCHIVELOG;
# Backup tablet BD + archivelogs
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
# Backup one of the several datafile
BACKUP AS COPY DATAFILE 1,2;
# Backup datafile specifying a location
BACKUP AS COPY DATAFILE 1 FORMAT '/u01/app/oracle/fast_recovery_area/OCM/system0
1.dbf';
# We can use default formats for backups
# The format of the backup files is detailed on the following page:
#
http://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsubcl010.htm # RCM
RF195
BACKUP ARCHIVELOG FROM SEQUENCE=1 FORMAT='/u01/app/oracle/fast_recovery_area/OCM
/ar_%t_%s_%p' DELETE INPUT;
# Backup of one or more TABLESPACES
BACKUP TABLESPACE USERS;
# The following script, more complex, it offers a good backup strategy of BD for
the review
# · The 1st run BACKUP AS COPY generates a full BD (LEVEL 0 since there are none o
f LEVEL 1)
# · The 2nd and subsequent implementation performs an incremental backup (DIFFEREN
TIAL) changes since the last run
# · The 3rd execution and subsequent recovery makes a COPY of the database before
doing the backup
# This script provides two advantages:
# 1. Backups are smaller by incremental
# 2. Restorations (RESTORE) very fast to be exact copies of files DATAFILES (SWI
TCH command)
RUN {
RECOVER COPY OF DATABASE WITH TAG 'DAILY_BKP_POLICY';
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'DAILY_BKP_POLICY' DAT
ABASE PLUS ARCHIVELOG;
}

# We can use the same script for incremental type BACKUPS CUMULATIVE
RUN {
RECOVER COPY OF DATABASE WITH TAG 'DAILY_BKP_POLICY';
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'DAILY_BKP_POLICY' CUM
ULATIVE DATABASE PLUS ARCHIVELOG;
}
CROSSCHECK BACKUP;
CROSSCHECK ARCHIVELOG ALL;
BACKUP DATABASE Validate;
# physical corruption (V $ DATABASE_BLOCK_C
ORRUPTION Review)
BACKUP CHECK LOGICAL DATABASE;
# Corrupciones Lógicos (Info. en Alert y sessi
on trace file)
RESTORE DATABASE VALIDATE;
REPORT NEED BACKUP;
REPORT OBSOLETE;
REPORT UNRECOVERABLE;
REPORT NEED BACKUP INCREMENTAL 2;
# Datafiles that require more than 2 INC in
Recovery
REPORT NEED BACKUP REDUNDANCY 2;
REPORT NEED BACKUP RECOVERY WINDOW OF 7 DAYS;
REPORT SCHEMA;
REPORT SCHEMA AT TIME 'SYSDATE-7';
VALIDATE DATABASE PLUS ARCHIVELOG;
VALIDATE CHECK LOGICAL TABLESPACE USERS;
VALIDATE CHECK LOGICAL DATAFILE 4;
VALIDATE CHECK LOGICAL DATAFILE 4 BLOCK 1 TO 10;
VALIDATE ARCHIVELOG ALL;
VALIDATE CHECK LOGICAL CURRENT CONTROLFILE;
VALIDATE CHECK LOGICAL BACKUPSET 6446;
RESTORE DATABASE PREVIEW;
RECOVER DATABASE PREVIEW;
LIST BACKUP OF DATABASE;
LIST BACKUP OF ARCHIVELOG FROM SCN 2953216;
LIST BACKUPPIECE '/u01/app/oracle/fast_recovery_area/OCM/autobackup/2013_06_07/o
1_mf_s_817462899_8v31bmrs_.bkp' ;
LIST BACKUPPIECE 8222;
LIST BACKUPSET 8220;
LIST COPY OF TABLESPACE SYSTEM;
LIST COPY OF DATABASE ARCHIVELOG FROM TIME='SYSDATE-7';
LIST INCARNATION;
LIST EXPIRED BACKUP;
LIST BACKUP SUMMARY;
· V$ARCHIVED_LOG
· V$COPY_CORRUPTION
· V$DATABASE_BLOCK_CORRUPTION
· V$RMAN_CONFIGURATION
· V$BACKUP_<CORRUPTION|SET|SPFILE|DATAFILE|DEVICE|FILES|PIECE|REDOLOG|SYNC_IO|ASYN
C_IO>
· V$PROXY_<ARCHIVEDOG|DATAFILE>
Recovery
--------# Erases it datafile 1
rm /u01/app/oracle/oradata/OCM/system01.dbf
# We connect to the database with rman and catalog </ span>
<pre>rman target sys@ocm catalog rman/rman@oem

# We restore and recover the DATAFILE
RESTORE DATAFILE 1;
RECOVER DATAFILE 1;
sql 'ALTER DATABASE OPEN';
# We delete the TABLESPACE USERS DATAFILE
rm /u01/app/oracle/oradata/OCM/users01.dbf
- We force the failure attempt to write to the TBS
CREATE TABLE TEST (C1 NUMBER) TABLESPACE USERS;
# We connect to the database with rman and catalog
rman target sys@ocm catalog rman/rman@oem
# We connect to the database with rman and catalog
rman target sys@ocm catalog rman/rman@oem
# DRA specific commands run within RMAN
# We list the problem is in BD
LIST FAILURE;
# Failure to analyze DRA we generate script corrections
ADVISE FAILURE;
# See the contents of repair script
REPAIR FAILURE PREVIEW;
# Run the script
REPAIR FAILURE;
RUN {
sql 'ALTER DATABASE DATAFILE 4 OFFLINE' ;
SET NEWNAME FOR DATAFILE 4 TO '/u02/app/oracle/oradata/OCM/users01.dbf';
RESTORE DATAFILE 4;
SWITCH DATAFILE 4;
RECOVER DATAFILE 4;
sql 'ALTER DATABASE DATAFILE 4 ONLINE';
}
- We create a TABLESPACE test with a sample table
CREATE TABLESPACE TEST DATAFILE '/u01/app/oracle/oradata/OCM/test01.dbf' size 10
0M;
CREATE TABLE TEST_TABLE TABLESPACE TEST AS SELECT * FROM HR.EMPLOYEES;
# Erases it datafile
rm / u01/app/oracle/oradata/OCM/test01.dbf
- Recover el DATAFILE
ALTER DATABASE DATAFILE 6 OFFLINE;
- Create a DATAFILE with the same characteristics as the missing DATAFILE
- We can use the same name to retrieve the original location or a different
ALTER DATABASE CREATE DATAFILE '/u01/app/oracle/oradata/OCM/test01.dbf' AS '/u02
/app/oracle/oradata/OCM/test01.dbf';
RECOVER DATAFILE 6;
ALTER DATABASE DATAFILE 6 ONLINE;
- We note that we have not lost data
SELECT COUNT(*) FROM TEST_TABLE;

- We clean environment
DROP TABLESPACE TEST INCLUDING CONTENTS AND DATAFILES;
ALTER DATABASE CREATE DATAFILE '/u01/app/oracle/oradata/OCM/test01.dbf' AS '/u01
/app/oracle/oradata/OCM/test01.dbf';
# Delete an CONTROLFILE
rm / u01/app/oracle/oradata/OCM/control01.ctl
- Close the database (if it has not fallen)
SHUTDOWN ABORT
# Copy the "live" on location CONTROLFILE we deleted
cp -p /u01/app/oracle/fast_recovery_area/OCM/control02.ctl /u01/app/oracle/orada
ta/OCM/control01.ctl
STARTUP
# We delete both CONTROLFILE we BD OCM
rm / u01/app/oracle/oradata/OCM/control01 . ctl
rm /u01/app/oracle/fast_recovery_area/OCM/control02.ctl
SHUTDOWN ABORT
# Run the following script from RMAN
# These commands can be executed within a RUN block, but rather have more contro
l
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM AUTOBACKUP;
sql 'ALTER DATABASE MOUNT';
RECOVER DATABASE;
sql 'ALTER DATABASE OPEN RESETLOGS' ;
# Guard a backup (important)
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
- The first is to put the database in MOUNT state
SHUTDOWN IMMEDIATE
STARTUP MOUNT
- We get the last ARCHIVELOG applied to obtain the final sequence (Ej)
-THREAD# RESETLOGS_CHANGE# ARC SEQUENCE# COMPLETIO
--- --------- ----------------- --- ---------- ---------1
3012881 YES
2 07-JUN-13
SELECT
THREAD#,
RESETLOGS_CHANGE#,
ARCHIVED,
SEQUENCE#,
COMPLETION_TIME
FROM
V$ARCHIVED_LOG
WHERE
ARCHIVED='YES'
AND COMPLETION_TIME = (SELECT MAX(COMPLETION_TIME)
FROM V$ARCHIVED_LOG
WHERE ARCHIVED='YES');
# Erases them files
rm /u01/app/oracle/oradata/OCM/system01.dbf

rm
rm
rm
rm
rm
rm
rm
rm
rm
rm
rm
rm
rm
rm

/u01/app/oracle/oradata/OCM/sysaux01.dbf
/ u01/app/oracle/oradata/OCM/undotbs01 . DBF
/u02/app/oracle/oradata/OCM/users01.dbf
/u02/app/oracle/oradata/OCM/system02.dbf
/ u01/app/oracle/oradata/OCM/temp01 . dbf
/ u01/app/oracle/oradata/OCM/control01 . ctl
/u01/app/oracle/fast_recovery_area/OCM/control02.ctl
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileOCM.ora
/ u01/app/oracle/oradata/OCM/redo101 . log
/ u01/app/oracle/oradata/OCM/redo201 . log
/ u01/app/oracle/oradata/OCM/redo301 . log
/ u02/app/oracle/oradata/OCM/redo102 . log
/ u02/app/oracle/oradata/OCM/redo202 . log
/ u02/app/oracle/oradata/OCM/redo302 . log

# We threw the BD
SHUTDOWN ABORT
# We connect with RMAN
rman target sys@ocm catalog rman/rman@oem
# Set the DBID of the database
# What can we get from the previous logs RMAN catalog or accessed
# Ej: connected to target database: OCM (DBID=2196200734)
# Ej2: SELECT DB_ID FROM DB WHERE DB_KEY = (SELECT DB_KEY FROM DBINC
#
WHERE DB_NAME='OCM' AND DBINC_STAT
US='CURRENT');
SET DBID 2196200734
STARTUP NOMOUNT
- We set the parameters of the FRA
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=4G;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/u01/app/oracle/fast_recovery_area';
# We recover the SPFILE, reinciamos instance and restore the database
RESTORE SPFILE FROM AUTOBACKUP;
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;
RESTORE DATABASE
- We get the last ARCHIVELOG AVAILABLE
SELECT
THREAD#,
RESETLOGS_CHANGE#,
ARCHIVED,
SEQUENCE#,
COMPLETION_TIME
FROM
V$ARCHIVED_LOG
WHERE
ARCHIVED='YES'
AND COMPLETION_TIME = (SELECT MAX(COMPLETION_TIME)
FROM V$ARCHIVED_LOG
WHERE ARCHIVED='YES');
# ARCHIVELOG recovered until the last (n +1) and open with RESETLOGS
RECOVER DATABASE UNTIL SEQUENCE 3 THREAD 1;

sql 'ALTER DATABASE OPEN RESETLOGS' ;
# We made another backup
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
# We delete the temporary tablespace DATAFILE
rm / u01/app/oracle/oradata/OCM/temp01 . dbf
- Create a temporary TABLESPACE and assign default to the BD
CREATE Temporary Tablespace TEMP2 tempfile '/ u01/app/oracle/oradata/OCM/temp2
01.dbf' size 20M;
ALTER DATABASE DEFAULT Temporary Tablespace TEMP2;
- Recreate the TEMP tablespace and assign default to the BD
DROP TABLESPACE TEMP ;
CREATE Temporary Tablespace TEMP tempfile '/ u01/app/oracle/oradata/OCM/temp0
1.dbf' size 20M;
ALTER DATABASE DEFAULT Temporary Tablespace TEMP ;
- We delete the tablespace TEMP2 we used
- If you do not leave us, we need to remove the sessions that are using it (eg y
our own.)
-- SELECT USERNAME, SESSION_NUM, SESSION_ADDR FROM V$SORT_USAGE;
DROP TABLESPACE TEMP2 INCLUDING CONTENTS AND DATAFILES;
- Create a test TBS
CREATE TABLESPACE BC DATAFILE '/u01/app/oracle/oradata/OCM/bc01.dbf' SIZE 20M;
- Create a sample table in that TBS
CREATE TABLE TEST_BC TABLESPACE BC AS SELECT * FROM DBA_OBJECTS;
- Locate the Datafile (FILE_NO) and a block wherein said table is stored
- In my example I get this output:
-FILE_NO BLOCK_NO
-- ---------- ----------5
131
SELECT DISTINCT
MIN(DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) as FILE_NO,
MIN(DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)) as BLOCK_NO
FROM TEST_BC;
- Cleaned the cache (so we force that corruption is displayed quickly)
ALTER SYSTEM FLUSH BUFFER_CACHE;
# We connect with RMAN, list the fault and get the recommendation of DRA
rman target / catalog rman/rman@OEM
LIST FAILURE;
ADVISE FAILURE;
# In another session, we see the contents of the file to be executed to retrieve
the blocks
# The contents of the script is as follows:
# # block media recovery for multiple blocks
# recover datafile 5 block 131 to 132;
Cat / u01/app/oracle/diag/rdbms/ocm/OCM/hm/reco_3702026499 . HM
# We launched with the RMAN recovery script
REPAIR FAILURE;
- Finally we will query the table again to see if the problem has been corrected

.
SELECT * FROM TEST_BC;
- We clean environment
DROP TABLESPACE BC INCLUDING CONTENTS AND DATAFILES;
# In the following example we made a couple of backups KEEP clause
# Must connect to the catalog for testing
rman target / catalog rman/rman@OEM
# We launch a backup of the database never expire
BACKUP DATABASE KEEP FOREVER FORMAT '/tmp/%U';
# Tried to definicar an expiration time of a day for the backup of a datafile
BACKUP DATAFILE 4 KEEP UNTIL TIME 'SYSDATE+1' FORMAT '/tmp/%U';
# Full Backup with minimal impact on the database and a maximum duration of 30 m
inutes
BACKUP AS BACKUPSET DURATION 00:30 MINIMIZE LOAD PARTIAL DATABASE;
# Full Backup minimizing execution time and maximum duration of 15 minutes
# We have removed PARTIAL to if not complete, is considered FAILED
BACKUP AS BACKUPSET DURATION 00:15 MINIMIZE TIME DATABASE;
# We limit the transfer rate to a maximum of 20M per channel
RUN {
ALLOCATE CHANNEL d1 DEVICE TYPE DISK RATE 20M;
ALLOCATE CHANNEL d2 DEVICE TYPE DISK RATE 20M;
AS BACKUP DATABASE backupset;
RELEASE CHANNEL d1;
RELEASE CHANNEL d2;
}
# We can set it to default limit EITHER set up CHANNEL
CONFIGURE CHANNEL DEVICE TYPE DISK RATE 20M;
# Eliminate configuration
CONFIGURE CHANNEL DEVICE TYPE DISK CLEAR;
- We note that we have enabled FLASHBACK mode
SELECT FLASHBACK_ON FROM V$DATABASE;
- If it is not enabled, review the settings and activate FRA
- Might fail for lack of memory, then we need to restart the instance
SHOW PARAMETER RECOVERY_FILE
ALTER DATABASE FLASHBACK ON;
- Configure retention in minutes.
- Since the test takes two days => 2 days * 24 hours * 60 minutes = 2880
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;
- Confiramos we have the recycle bin enabled
SHOW PARAMETER RECYCLEBIN
- Disable FLASHBACK to a specific tablespaces
ALTER TABLESPACE USERS FLASHBACK OFF;
- Activate FLASHBACK again
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER TABLESPACE USERS FLASHBACK ON;
ALTER DATABASE OPEN;

Flashback
----------- Create a table for testing
CREATE TABLE TEST_EMPLOYEES TABLESPACE USERS AS SELECT * FROM HR.EMPLOYEES;
- Borramos the table
DROP TABLE TEST_EMPLOYEES;
- We consult the recycle bin to see the newly deleted object
- RECYCLEBIN = user_recyclebin (We could also use DBA_RECYCLEBIN)
SELECT * FROM RECYCLEBIN;
- Recover the table
FLASHBACK TABLE TEST_EMPLOYEES TO BEFORE DROP;
- We consult the table
SELECT COUNT(*) FROM TEST_EMPLOYEES;
DROP TABLE TEST_EMPLOYEES;
- Recover the table
FLASHBACK TABLE TEST_EMPLOYEES TO BEFORE DROP RENAME TO TEST_EMPLOYEES_OLD;
- The rename with original name
RENAME TEST_EMPLOYEES_OLD TO TEST_EMPLOYEES;
- We delete the above table
DROP TABLE TEST_EMPLOYEES;
- Create a second table with the same name but records
CREATE TABLE TEST_EMPLOYEES TABLESPACE USERS AS SELECT * FROM HR.EMPLOYEES WHERE
1=2;
- We delete the second table
DROP TABLE TEST_EMPLOYEES;
- We check the content of the RECYCLEBIN and see that we have two tables "TEST_E
MPLOYEES"
SELECT * FROM RECYCLEBIN WHERE ORIGINAL_NAME='TEST_EMPLOYEES';
- We can query data from tables within the RECYCLEBIN own
- We consult the number of rows of the two
SELECT COUNT(*) FROM "BIN$3qdKDJCYSGngQ2QBqMBRgw==$0";
SELECT COUNT(*) FROM "BIN$3qdKDJCdSGngQ2QBqMBRgw==$0";
- The first is the one with 107 records is correct then
- Retrieve the tabla first RecycleBin
FLASHBACK TABLE "BIN$3qdKDJCYSGngQ2QBqMBRgw==$0" TO BEFORE DROP;
- TEST_EMPLOYEES erased the table so that it can not recover Flasback DROP
DROP TABLE TEST_EMPLOYEES PURGE;
- We clean the recycle bin
PURGE RECYCLEBIN;
- Purge the bin contents of a tablespace
PURGE TABLESPACE USERS;
- Purge the objects of a user within a TABLESAPCE
PURGE TABLESPACE USERS USER HR;

- Purge the content of all Recycle Bins
PURGE DBA_RECYCLEBIN;
- Create a sample table
CREATE TABLE TEST_EMPLOYEES TABLESPACE USERS AS SELECT * FROM HR.EMPLOYEES;
- Create an index
CREATE INDEX IDX_EMPLOYEES ON TEST_EMPLOYEES(EMPLOYEE_ID) TABLESPACE USERS;
- Borramos the table
DROP TABLE TEST_EMPLOYEES;
- IMPORTANT! We consulted with the names deleted objects
SELECT * FROM RECYCLEBIN;
- Recover the table
FLASHBACK TABLE TEST_EMPLOYEES TO BEFORE DROP;
- Check the index name
SELECT INDEX_NAME FROM DBA_INDEXES WHERE TABLE_NAME='TEST_EMPLOYEES';
- Rename the index
ALTER INDEX "BIN$3qdKDJCiSGngQ2QBqMBRgw==$0" RENAME TO "IDX_EMPLOYEES";
- We clean environment
DROP TABLE TEST_EMPLOYEES PURGE;
- The GUARANTEE clause indicates that the Flashback Logs are kept beyond the ret
ention
CREATE RESTORE POINT BEFORE_EXERCISES GUARANTEE FLASHBACK DATABASE;
- We see the point of restoring the BD
SELECT * FROM V$RESTORE_POINT;
- We delete the HR diagram
DROP USER HR CASCADE;
- FLASHBACK conducted a full DB restore point
- We have to state the BD MOUNT
STARTUP MOUNT FORCE
FLASHBACK DATABASE TO RESTORE POINT BEFORE_EXERCISES;
- Abrimos the BD
ALTER DATABASE OPEN RESETLOGS;
- Create a restore point second
CREATE RESTORE POINT AFTER_EXERCISES GUARANTEE FLASHBACK DATABASE;
- We consult restore points for the SCN
SELECT * FROM V$RESTORE_POINT;
- In my case this is the output
-SCN NAME
-- ---------- ------------------3124322 BEFORE_EXERCISES
-3124333 AFTER_EXERCISES
-- DB Llevamos the 2nd period (AFTER EXERCISES)
STARTUP FORCE MOUNT

FLASHBACK DATABASE TO RESTORE POINT AFTER_EXERCISES;
- Open the database in read mode to check this point we take an interest
ALTER DATABASE OPEN READ ONLY;
- Suppose we are not interested and want to go back to the previous point
- Pero this time, instead of using en la etiquita "BEFORE_EXERCISES", we will us
e el SCN
STARTUP FORCE MOUNT
FLASHBACK Database TO SCN 3124322;
- If we decide that we want to go in reverse, we can recover a hacer
RECOVER DATABASE;
- We raised the BD (Notice that we do not use RESETLOGS)
ALTER DATABASE OPEN;
- We delete the restore points.
DROP RESTORE POINT BEFORE_EXERCISES;
DROP RESTORE POINT AFTER_EXERCISES;
- Database Flashack a specific time
FLASHBACK Database TO timestamp (TO_TIMESTAMP ( '2013 / 06/08 19:14:35 ' , 'y
yyy / MM / DD HH24: MI: SS' ));
- Flashback to a sequence (within RMAN)
FLASHBACK DATABASE TO SEQUENCE=1;
- Create a sample table
CREATE TABLE TEST_EMPLOYEES TABLESPACE USERS AS SELECT * FROM HR.EMPLOYEES;
- We delete two records in the table TEST_EMPLOYEES
DELETE FROM TEST_EMPLOYEES WHERE EMPLOYEE_ID=100;
COMMIT;
DELETE FROM TEST_EMPLOYEES WHERE EMPLOYEE_ID=101;
COMMIT;
- We consult transactions made from the view FLASHBACK_TRANSACTION_QUERY
SELECT * FROM FLASHBACK_TRANSACTION_QUERY WHERE TABLE_NAME='TEST_EMPLOYEES';
- We may also obtain information from the transactions made through Pseudocolumn
s Version Query
- We get only those changes that provegan a DELETE (versions_operation = 'D')
SELECT VERSIONS_XID, VERSIONS_STARTSCN, VERSIONS_ENDSCN, VERSIONS_OPERATION, EMP
LOYEE_ID, FIRST_NAME
FROM TEST_EMPLOYEES VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
WHERE VERSIONS_OPERATION='D'
ORDER BY 2;
- Through the transaction ID (XID), we can reverse the DELETEs made
- We use the procedure TRANSACTION_BACKOUT DBMS_FLASHBACK Package
EXEC DBMS_FLASHBACK.TRANSACTION_BACKOUT (2, xid_array ( '01000C004A030000 ' , '
09001F0020030000 ' ));
- That we again have consulted the records
SELECT EMPLOYEE_ID, FIRST_NAME FROM TEST_EMPLOYEES WHERE EMPLOYEE_ID IN (100,101
);
- We clean environment
DROP TABLE TEST_EMPLOYEES PURGE;

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close