Oracle以TSPITR方式恢复表空间数据一例(2)

创建表的时候,logseq是32,之后切换了一次日志,到33,此时的表中仍然是有数据的,但是truncate操作后表中的数据就没有了,这个动作基本就是在logseq 34的时候发生的,truncate完以后又切了日志,到了35,我们实验的目的就是要把表空间恢复到logseq=34这个时间点(Time In Point)。根据刚才说的那个例子,就是到故障点8点以前的某个数据未丢失的时间点(5点)

 

--创建一个auxiliary目录(必要步骤

[oracle@bak ~]$ mkdir /u01/aux

[oracle@bak ~]$ rman target /

 

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Dec 26 16:54:36 2014

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

connected to target database: ORA10G (DBID=4175411955)

 

auxiliary目标目录中会在之后的RMAN脚本执行过程中,生成一些系统恢复需要的文件,等RMAN恢复完后会展示一下这个目录的结构。

 

--最关键的来了,用RMAN命令进行TSPITR恢复到故障点之前的某个时刻

RMAN> recover tablespace tspitr until logseq 33 auxiliary destination '/u01/aux';

 

Starting recover at 26-DEC-14

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=159 devtype=DISK

RMAN-05026: WARNING: presuming following set of tablespaces applies to specified point in time

 

List of tablespaces expected to have UNDO segments    --有undo段的表空间列表

tablespace SYSTEM

tablespace UNDOTBS1

 

Creating automatic instance, with SID='xvBc'    --创建一个自动化实例,随机SID为xvBc

 

initialization parameters used for automatic instance:    --为自动化实例分配的参数

db_name=ORA10G

compatible=10.2.0.1.0

db_block_size=8192

db_files=200

db_unique_name=tspitr_ORA10G_xvBc

large_pool_size=1M

shared_pool_size=110M

#No auxiliary parameter file used

db_create_file_dest=/u01/aux    --之前创建的auxiliary目录

control_files=/u01/aux/cntrl_tspitr_ORA10G_xvBc.f    --控制文件的位置

 

 

starting up automatic instance ORA10G    --启动自动化实例

 

Oracle instance started

 

Total System Global Area     201326592 bytes

 

Fixed Size                     1218508 bytes

Variable Size                146802740 bytes

Database Buffers              50331648 bytes

Redo Buffers                   2973696 bytes

Automatic instance created

 

contents of Memory Script:   --第1个内存脚本内容

{

# set the until clause

set until  logseq 33 thread 1;    --指定的需要恢复到的logseq

# restore the controlfile

restore clone controlfile;

# mount the controlfile

sql clone 'alter database mount clone database';

# archive current online log for tspitr to a resent until time

sql 'alter system archive log current';

# avoid unnecessary autobackups for structural changes during TSPITR

sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';

}

executing Memory Script

 

executing command: SET until clause

 

Starting restore at 26-DEC-14

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: sid=36 devtype=DISK

 

channel ORA_AUX_DISK_1: starting datafile backupset restore

channel ORA_AUX_DISK_1: restoring control file

channel ORA_AUX_DISK_1: reading from backup piece /u01/orabackup/backupsets/ora10g-c-4175411955-20141226-05.ctl

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/u01/orabackup/backupsets/ora10g-c-4175411955-20141226-05.ctl tag=TAG20141226T164935

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02

output filename=/u01/aux/cntrl_tspitr_ORA10G_xvBc.f

Finished restore at 26-DEC-14

 

sql statement: alter database mount clone database

 

sql statement: alter system archive log current

 

sql statement: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;

released channel: ORA_DISK_1

released channel: ORA_AUX_DISK_1

 

contents of Memory Script:   --第2个内存脚本内容

{

# generated tablespace point-in-time recovery script

# set the until clause

set until  logseq 33 thread 1;

plsql <<<-- tspitr_2

declare

  sqlstatement       varchar2(512);

  offline_not_needed exception;

  pragma exception_init(offline_not_needed, -01539);

begin

  sqlstatement := 'alter tablespace '||  'TSPITR' ||' offline for recover';

  krmicd.writeMsg(6162, sqlstatement);

  krmicd.execSql(sqlstatement);

exception

  when offline_not_needed then

    null;

end; >>>;

# set an omf destination filename for restore

set newname for clone datafile  1 to new;

# set an omf destination filename for restore

set newname for clone datafile  2 to new;

# set an omf destination tempfile

set newname for clone tempfile  2 to new;

# set a destination filename for restore

set newname for datafile  6 to 

 "/data/oradata/ora10g/tspitr01.dbf";

# rename all tempfiles

switch clone tempfile all;

# restore the tablespaces in the recovery set plus the auxilliary tablespaces

restore clone datafile  1, 2, 6;

switch clone datafile all;

#online the datafiles restored or flipped

sql clone "alter database datafile  1 online";

#online the datafiles restored or flipped

sql clone "alter database datafile  2 online";

#online the datafiles restored or flipped

sql clone "alter database datafile  6 online";

# make the controlfile point at the restored datafiles, then recover them

recover clone database tablespace  "TSPITR", "SYSTEM", "UNDOTBS1" delete archivelog;

alter clone database open resetlogs;

# PLUG HERE the creation of a temporary tablespace if export fails due to lack

# of temporary space.

# For example in Unix these two lines would do that:

#sql clone "create tablespace aux_tspitr_tmp

#           datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";

}

executing Memory Script

 

executing command: SET until clause

 

sql statement: alter tablespace TSPITR offline for recover

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

renamed temporary file 2 to /u01/aux/TSPITR_ORA10G_XVBC/datafile/o1_mf_temp_%u_.tmp in control file

 

Starting restore at 26-DEC-14

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: sid=39 devtype=DISK

 

channel ORA_AUX_DISK_1: starting datafile backupset restore

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /u01/aux/TSPITR_ORA10G_XVBC/datafile/o1_mf_system_%u_.dbf

restoring datafile 00002 to /u01/aux/TSPITR_ORA10G_XVBC/datafile/o1_mf_undotbs1_%u_.dbf

restoring datafile 00006 to /data/oradata/ora10g/tspitr01.dbf

channel ORA_AUX_DISK_1: reading from backup piece /u01/orabackup/backupsets/full_ora10g_14pr577l_1_1

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/u01/orabackup/backupsets/full_ora10g_14pr577l_1_1 tag=TAG20141226T164644

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:02:26

Finished restore at 26-DEC-14

 

datafile 1 switched to datafile copy

input datafile copy recid=4 stamp=867344300 filename=/u01/aux/TSPITR_ORA10G_XVBC/datafile/o1_mf_system_b9t8nvw3_.dbf

datafile 2 switched to datafile copy

input datafile copy recid=5 stamp=867344300 filename=/u01/aux/TSPITR_ORA10G_XVBC/datafile/o1_mf_undotbs1_b9t8nvx5_.dbf

 

sql statement: alter database datafile  1 online

 

sql statement: alter database datafile  2 online

 

sql statement: alter database datafile  6 online

 

Starting recover at 26-DEC-14

using channel ORA_AUX_DISK_1

 

starting media recovery

 

archive log thread 1 sequence 32 is already on disk as file /oracle/flash_recovery_area/ORA10G/archivelog/2014_12_26/o1_mf_1_32_b9t8dkr8_.arc

channel ORA_AUX_DISK_1: starting archive log restore to default destination

channel ORA_AUX_DISK_1: restoring archive log

archive log thread=1 sequence=31

channel ORA_AUX_DISK_1: reading from backup piece /u01/orabackup/backupsets/arc_ora10g_15pr57ct_1_1

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/u01/orabackup/backupsets/arc_ora10g_15pr57ct_1_1 tag=TAG20141226T164933

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03

archive log filename=/u01/app/oracle/product/10.2.0/db_1/dbs/arch1_31_860802036.dbf thread=1 sequence=31

channel clone_default: deleting archive log(s)

archive log filename=/u01/app/oracle/product/10.2.0/db_1/dbs/arch1_31_860802036.dbf recid=32 stamp=867344306

archive log filename=/oracle/flash_recovery_area/ORA10G/archivelog/2014_12_26/o1_mf_1_32_b9t8dkr8_.arc thread=1 sequence=32

media recovery complete, elapsed time: 00:00:05

Finished recover at 26-DEC-14

 

database opened

 

contents of Memory Script:    --第3个内存脚本(逻辑导入导出)

{

# export the tablespaces in the recovery set

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0f417dac01ed75369c919483d6341626.html