RMAN 高级恢复(四)--表空间时间点恢复
二、手工执行TSPITR
Oracle 支持为TSPITR 创建自己的辅助实例。 也可以使用手工的TSPITR来完成失败的自动TSPITR操作。 首先,依然是应用前面的准备阶段中列出的步骤,接着必须准备辅助实例,然后执行TSPITR过程。
3.2.1 准备辅助实例
首先,需要启动和运行辅助实例。辅助实例只是RMAN用于执行TSPITR的临时实例。 辅助实例必须驻留在与目标数据库相同的机器中,并且在辅助实例上不能执行任何类型的DML。
在启动TSPITR前,需要准备辅助实例。和普通的数据库实例创建一样。
Windows Oracle 10G手工创建数据库
http://blog.csdn.net/tianlesoftware/archive/2009/10/17/4680230.aspx
linux 下手工新建数据库
http://blog.csdn.net/tianlesoftware/archive/2009/10/17/4680213.aspx
我们假设创建的辅助实例名是TEST. 操作步骤如下:
(1) 创建口令文件
C:>orapwd file=D:/app/Administrator/product/11.2.0/dbhome_1/database/PWDTEST.ora password=admin
(2) 创建服务
C:/>oradim -new -sid TEST
oradim是创建实例的工具程序名称,-new表明执行新建实例,-delete表明执行删掉实例,-sid指定害例的名称。
(3) 创建参数文件
辅助数据库的参数文件不同于目标数据库所使用的参数文件。辅助实例中应该添加的一些参数如下表:
参数名
可选或必选
说明
Db_name
可选
与目标数据库相同的名称
Lock_name_space
必选
不同于创建辅助实例所在系统上其他数据库名的唯一名称。
Db_file_name_convert
可选
用RMAN还原辅助数据库中的数据文件时,该参数用于为这些数据文件定义一组文件命名转换模式。 它可以代替RMAN的configure auxname命令。
Log_file_name_convert
可选
用RMAN还原辅助数据库中的重做日志时,该参数用于为这些重做日志定义一组命令转换模式。 它可以代替RMAN的set newnameml .
Control_files
必要
这个参数定义了辅助实例控制文件的名称和位置。 辅助实例控制文件的名称应当不同于锁一定位置中已有的其他控制文件名。
Remote_login_passwordfile
可选/必要
用于允许RMAN 通过Oracle networking 服务连接辅助数据库。 要求存在一个当前的口令文件。 如果要本地连接辅助数据库,就不需要设置该参数。
Compatible
必要
必须与目标数据库的设置相同
Db_block_size
可选/必要
如果在目标数据库上设置了该参数,在辅助数据库中也必须设置为同样的参数值。
我们将所有辅助实例都放到F:/TEST目录下,辅助实例的参数如下:
db_name=BL
db_unique_name=TEST
db_block_size=8192
db_cache_size=8388608
timed_statistics=TRUE
shared_pool_size=110M
large_pool_size=1M
compatible=11.2.0.0.0
Background_dump_dest=F:/TEST
Core_dump_dest=F:/TEST
User_dump_dest=F:/TEST
Control_files=F:/TEST/control01.ctl
db_create_file_dest=F:/TEST
log_file_name_convert=('D:/app/Administrator/oradata/bl','F:/TEST');
将该参数保存为initTEST.ora, 存放在F:/TEST/下。
(4) 启动辅助实例,并检查网络连通性
C:/Users/Administrator.DavidDai>set ORACLE_SID=TEST
C:/Users/Administrator.DavidDai>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 7月 8 15:52:17 2010
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup nomount pfile='f:/test/inittest.ora';
ORA-32006: BACKGROUND_DUMP_DEST initialization parameter has been deprecated
ORA-32006: USER_DUMP_DEST initialization parameter has been deprecated
ORACLE 例程已经启动。
Total System Global Area 163221504 bytes
Fixed Size 1373236 bytes
Variable Size 146803660 bytes
Database Buffers 8388608 bytes
Redo Buffers 6656000 bytes
SQL>
(5) 执行带有手工辅助实例的TSPITR
用RMAN 连接目标数据库,辅助实例,和恢复目录(如果有)。
还原控制文件,打开辅助实例。
C:/Users/Administrator.DavidDai>set ORACLE_SID=TEST
C:/Users/Administrator.DavidDai>rman target sys/admin@bl auxiliary=/
恢复管理器: Release 11.2.0.1.0 - Production on 星期四 7月 8 16:05:56 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: BL (DBID=680066685)
已连接到辅助数据库: BL (未装载)
RMAN> run
2> {
3> set until time "to_date('2010-7-8 16:23:18','yyyy-mm-dd hh24:mi:ss')";
4> restore clone controlfile ;
5> sql clone 'alter database mount clone database';
6> sql 'alter system archive log current';
7> }
正在执行命令: SET until clause
启动 restore 于 08-7月 -10
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在还原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份片段 D:/APP/ADMINISTRATOR/FLASH_RECOVERY_AREA/B
L/AUTOBACKUP/2010_07_08/O1_MF_S_723831710_63C2O0HN_.BKP
通道 ORA_AUX_DISK_1: 段句柄 = D:/APP/ADMINISTRATOR/FLASH_RECOVERY_AREA/BL/AUTOBA
CKUP/2010_07_08/O1_MF_S_723831710_63C2O0HN_.BKP 标记 = TAG20100708T162150
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:02
输出文件名=F:/TEST/CONTROL01.CTL
完成 restore 于 08-7月 -10
sql 语句: alter database mount clone database
sql 语句: alter system archive log current
RMAN>
说明:1. alter system archive log current,它确保用于副本数据库恢复的所有重做都可用。
2. Sql colne 命令是在副本数据库上执行sql命令
确定并还原数据文件
我们需要还原system,sysaux, undo, temp 表空间,和我们将要还原的表空间,这里是BL 表空间。要注意的是,在我们开始创建辅助实例之前,要将待恢复的表空间设置为offline.
SQL> select file_id,tablespace_name from dba_data_files;
FILE_ID TABLESPACE_NAME
---------- ------------------------------
4 USERS
3 UNDOTBS1
2 SYSAUX
1 SYSTEM
5 BL
SQL> alter tablespace BL offline for recover;
表空间已更改。
RMAN> run
2> {
3> # set requested point in time
4> set until time "to_date('2010-7-8 16:23:18','yyyy-mm-dd hh24:mi:ss')";
5> # set destinations for recovery set and auxiliary set datafiles
6> set newname for clone datafile 1 to new;
7> set newname for clone datafile 3 to new;
8> set newname for clone datafile 2 to new;
9> set newname for clone tempfile 1 to new;
10> set newname for datafile 5 to "D:/APP/ADMINISTRATOR/ORADATA/BL/BL01.DBF";
11> # switch all tempfiles
12> switch clone tempfile all;
13> # restore the tablespaces in the recovery set and the auxiliary set
14> restore clone datafile 1, 3, 2, 5;
15> switch clone datafile all;
16> }
说明: set newname for clone 命令确保还原期间正确的命令这些文件。 对数据文件5进行set newname是为还原该数据文件做准备。
打开辅助实例,准备执行TSPITR:
run
{
# set requested point in time
set until time "to_date('2010-7-8 16:23:18','yyyy-mm-dd hh24:mi:ss')";
# online the datafiles restored or switched
sql clone "alter database datafile 1 online";
sql clone "alter database datafile 3 online";
sql clone "alter database datafile 2 online";
sql clone "alter database datafile 5 online";
# recover and open resetlogs
recover clone database tablespace "BL", "SYSTEM", "UNDOTBS1", "SYSAUX" delete archivelog;
alter clone database open resetlogs;
}
导出元数据,在导入数据
Exp user/pwd point_in_time_recover=y tablespaces=BL file=tspitr.dmp
Imp user/pwd point_in_time_recover=y file=tspitr.dmp
最后将BL表空间online
Alter tablespace BL online.
操作完成后,别忘了重新备份数据库,及删除辅助实例。
从上面的步骤来看,手工操作和自动步骤是一样的,只不过手工将这些步骤分开了。
三、TSPITR的限制
TSPITR 有许多的限制:
(1)不能还原包含SYS用户特有对象的表空间
(2)不能用TSPITR恢复含有复制主表的表空间
(3)不支持使用快照日志的表空间
(4)不能还原含有回滚段的表空间
(5)如果要恢复的表空间中的对象包含如下对象,则不支持:
Varray
嵌套表
外部文件
此外,TSPITR 不能用于恢复删除的表空间,我们也不能恢复旧的对象统计表。
如果使用不含恢复目录的RMAN,还会存在下面与TSPITR的限制:
(1)在要恢复的点和当前的点之间,目标数据库中撤销和回滚段的当前物理结构必须没有变化。 回滚段在恢复期间不能发生变化。
(2)完成指定表空间的TSPITR后,这个表空间以前的所有备份就不能在用于以后的TSPITR。 这就是TSPITR后的表空间备份操作非常重要的原因,只有再次备份表空间后才能执行下一个TSPITR.
oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html