Point in time recovery using RMAN (until a log sequence number)
Recovery
Objective
SQL>
conn scott/tiger
Connected.
SQL>
select count(*) from myobjects;
COUNT(*)
----------
249410
Switch
a logfile
SQL>
conn / as sysdba
Connected.
SQL>
alter system switch logfile;
System
altered.
Note
the current log sequence number (13)
SQL>
archive log list
Database
log mode Archive Mode
Automatic
archival Enabled
Archive
destination
/u02/ORACLE/opsdba/arch
Oldest
online log sequence 12
Next
log sequence to archive 14
Current
log sequence 14
Simulate
an application failure – WRONG Delete!!
SQL>
conn scott/tiger
Connected.
SQL>
delete myobjects;
249410
rows deleted.
SQL>
commit;
Commit
complete.
The developer
states that the wrong DML statement was made AFTER 8.15 AM and is positive
about the same.
We
need to determine the log sequence we need to recover until
select
sequence#,first_change#, to_char(first_time,'HH24:MI:SS') from v$log order by 3
SQL>
/
SEQUENCE# FIRST_CHANGE# TO_CHAR(
----------
------------- --------
13
2760463 07:49:36
14
2761178 08:12:47
15
2766622 08:18:49
Log
sequence 14 was first written to at 8:12 AM so we should recover to a log sequence
before this – i.e sequence# 13
Shutdown
and mount the database
SQL>
shutdown immediate;
Database
closed.
Database
dismounted.
ORACLE
instance shut down.
SQL>
startup mount;
ORACLE
instance started.
Total
System Global Area 264241152 bytes
Fixed
Size 2070416 bytes
Variable
Size 163580016 bytes
Database
Buffers 92274688 bytes
Redo
Buffers 6316032 bytes
Database
mounted.
RMAN>
run {
2>
set until sequence=14; >>> add
one to the sequence number we have to recover until
3>
restore database;
4>
recover database;
5>
}
executing
command: SET until clause
Starting
restore at 29-JAN-07
allocated
channel: ORA_DISK_1
channel
ORA_DISK_1: sid=154 devtype=DISK
allocated
channel: ORA_SBT_TAPE_1
channel
ORA_SBT_TAPE_1: sid=158 devtype=SBT_TAPE
channel
ORA_SBT_TAPE_1: Data Protection for Oracle: version 5.2.4.0
channel
ORA_DISK_1: starting datafile backupset restore
channel
ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring
datafile 00001 to /u02/ORACLE/opsdba/system01.dbf
restoring
datafile 00002 to /u02/ORACLE/opsdba/undotbs01.dbf
restoring
datafile 00003 to /u02/ORACLE/opsdba/sysaux01.dbf
restoring
datafile 00004 to /u02/ORACLE/opsdba/users01.dbf
restoring
datafile 00005 to /u02/ORACLE/opsdba/users02.dbf
restoring
datafile 00006 to /u02/ORACLE/opsdba/users03.dbf
restoring
datafile 00007 to /u02/ORACLE/opsdba/users05.dbf
restoring
datafile 00008 to /u02/ORACLE/opsdba/users06.dbf
restoring
datafile 00009 to /u02/ORACLE/opsdba/users07.dbf
restoring
datafile 00010 to /u02/ORACLE/opsdba/users04.dbf
restoring
datafile 00011 to /u02/ORACLE/opsdba/drtbs1.dbf
restoring
datafile 00012 to /u02/ORACLE/opsdba/drtbs2.dbf
channel
ORA_DISK_1: reading from backup piece /opt/oracle/backup/opsdba/OPSDBA.20070129.161.1.1.613122551
channel
ORA_DISK_1: restored backup piece 1
piece
handle=/opt/oracle/backup/opsdba/OPSDBA.20070129.161.1.1.613122551
tag=TAG20070129T074911
channel
ORA_DISK_1: restore complete, elapsed time: 00:00:16
Finished
restore at 29-JAN-07
Starting
recover at 29-JAN-07
using
channel ORA_DISK_1
using
channel ORA_SBT_TAPE_1
starting
media recovery
archive
log thread 1 sequence 13 is already on disk as file
/u02/ORACLE/opsdba/arch/arch_1_13_613052894.dbf
channel
ORA_DISK_1: starting archive log restore to default destination
channel
ORA_DISK_1: restoring archive log
archive
log thread=1 sequence=12
channel
ORA_DISK_1: reading from backup piece
/opt/oracle/backup/opsdba/OPSDBA.20070129.162.1.1.613122577
channel
ORA_DISK_1: restored backup piece 1
piece
handle=/opt/oracle/backup/opsdba/OPSDBA.20070129.162.1.1.613122577
tag=TAG20070129T074937
channel
ORA_DISK_1: restore complete, elapsed time: 00:00:02
archive
log filename=/u02/ORACLE/opsdba/arch/arch_1_12_613052894.dbf thread=1
sequence=12
archive
log filename=/u02/ORACLE/opsdba/arch/arch_1_13_613052894.dbf thread=1
sequence=13
media
recovery complete, elapsed time: 00:00:01
Finished
recover at 29-JAN-07
RMAN>
sql 'alter database open resetlogs';
sql
statement: alter database open resetlogs
Confirm
that the recovery has worked
opsdba:/opt/tivoli/tsm/client/oracle/bin64>sqlplus
scott/tiger
SQL*Plus:
Release 10.2.0.2.0 - Production on Mon Jan 29 09:43:14 2007
Copyright
(c) 1982, 2005, Oracle. All Rights
Reserved.
Connected
to:
Oracle
Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With
the Partitioning, Oracle Label Security, OLAP and Data Mining options
SQL>
select count(*) from myobjects;
COUNT(*)
----------
249410
No comments:
Post a Comment