ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN迁移表空间

RMAN迁移表空间

原创 Linux操作系统 作者:byfree 时间:2009-04-27 17:43:30 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 环境:

Windows xp

Oracle 10.2.0.1

 

备份数据库:

RMAN> backup as compressed backupset database current controlfile plus archivelog;

 

建目录:

SQL> create directory d_output as 'd:\oracle\product\10.2.0\oradata\auxi\output\';

 

执行迁移操作:

这里的辅助实例系统会自动建立并在最后自动删除!

C:\>rman target /

恢复管理器: Release 10.2.0.1.0 - Production on 星期一 4 27 17:16:42 2009

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

连接到目标数据库: ORCL (DBID=1211958316)

RMAN> transport tablespace 'TEST' auxiliary destination 'D:\oracle\product\10.2.0\oradata\auxi' datapump directory d_output dump file 'test_meta.dp' export log 'test_meta.log' import script. 'test_imp.src' tablespace destination 'D:\oracle\product\10.2.0\oradata\auxi';

RMAN-05026:警告:假定以下表空间集适用于指定的时间点

 

表空间列表要求具有 UNDO

表空间 SYSTEM

表空间 UNDOTBS1

 

使用 SID='Ehwr' 创建自动实例

 

供自动实例使用的初始化参数:

db_name=ORCL

compatible=10.2.0.1.0

db_block_size=8192

db_files=200

db_unique_name=tspitr_ORCL_Ehwr

large_pool_size=1M

shared_pool_size=110M

#No auxiliary parameter file used

db_create_file_dest=D:\oracle\product\10.2.0\oradata\auxi

control_files=D:\oracle\product\10.2.0\oradata\auxi/cntrl_tspitr_ORCL_Ehwr.f

 

 

启动自动实例 ORCL

 

Oracle 实例已启动

 

系统全局区域总计     205520896 字节

 

Fixed Size                     1248092 字节

Variable Size                146801828 字节

Database Buffers              50331648 字节

Redo Buffers                   7139328 字节

自动实例已创建

 

内存脚本的内容:

{

# set the until clause

set until  scn 884730;

# 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;';

}

正在执行内存脚本

 

正在执行命令: SET until clause

 

启动 restore 27-4 -09

分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

 

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_AUX_DISK_1: 正在复原控制文件

通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA

\ORCL\AUTOBACKUP\2009_04_27\O1_MF_S_685295725_4ZBS7GWS_.BKP

通道 ORA_AUX_DISK_1: 已恢复备份段 1

段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2009_04_27

\O1_MF_S_685295725_4ZBS7GWS_.BKP 标记 = TAG20090427T155525

通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:02

输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\CNTRL_TSPITR_ORCL_EHWR.F

完成 restore 27-4 -09

 

sql 语句: alter database mount clone database

 

sql 语句: alter system archive log current

 

sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;

释放的通道: ORA_AUX_DISK_1

 

内存脚本的内容:

{

# generated tablespace point-in-time recovery script

# set the until clause

set until  scn 884730;

# 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 filename for restore

set newname for clone datafile  3 to new;

# set an omf destination tempfile

set newname for clone tempfile  1 to new;

# set a destination filename for restore

set newname for datafile  6 to

 "D:\oracle\product\10.2.0\oradata\auxi\TEST.DBF";

# rename all tempfiles

switch clone tempfile all;

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

restore clone datafile  1, 2, 3, 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  3 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  "TEST", "SYSTEM", "UNDOTBS1", "SYSAUX" 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";

}

正在执行内存脚本

 

正在执行命令: SET until clause

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

正在执行命令: SET NEWNAME

 

临时文件 1 在控制文件中已重命名为 D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TSPITR_O

\DATAFILE\O1_MF_TEMP_%U_.TMP

 

启动 restore 27-4 -09

分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

 

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TSPITR_O\DATAFILE\O

1_MF_SYSTEM_%U_.DBF

正将数据文件00002恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TSPITR_O\DATAFILE\O

1_MF_UNDOTBS1_%U_.DBF

正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TSPITR_O\DATAFILE\O

1_MF_SYSAUX_%U_.DBF

正将数据文件00006恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TEST.DBF

通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA

\ORCL\BACKUPSET\2009_04_27\O1_MF_NNNDF_TAG20090427T155424_4ZBS5KCQ_.BKP

通道 ORA_AUX_DISK_1: 已恢复备份段 1

段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_04_27\

O1_MF_NNNDF_TAG20090427T155424_4ZBS5KCQ_.BKP 标记 = TAG20090427T155424

通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:01:06

完成 restore 27-4 -09

 

数据文件 1 已转换成数据文件副本

输入数据文件副本 recid=6 stamp=685297575 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA

\AUXI\TSPITR_O\DATAFILE\O1_MF_SYSTEM_4ZBTZ6NJ_.DBF

数据文件 2 已转换成数据文件副本

输入数据文件副本 recid=7 stamp=685297576 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA

\AUXI\TSPITR_O\DATAFILE\O1_MF_UNDOTBS1_4ZBTZ6PG_.DBF

数据文件 3 已转换成数据文件副本

输入数据文件副本 recid=8 stamp=685297576 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA

\AUXI\TSPITR_O\DATAFILE\O1_MF_SYSAUX_4ZBTZ6OZ_.DBF

数据文件 6 已转换成数据文件副本

输入数据文件副本 recid=9 stamp=685297576 文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA

\AUXI\TEST.DBF

 

sql 语句: alter database datafile  1 online

 

sql 语句: alter database datafile  2 online

 

sql 语句: alter database datafile  3 online

 

sql 语句: alter database datafile  6 online

 

启动 recover 27-4 -09

使用通道 ORA_AUX_DISK_1

 

正在开始介质的恢复

 

存档日志线程 1 序列 42 已作为文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O

RCL\ARCHIVELOG\2009_04_27\O1_MF_1_42_4ZBS7BTC_.ARC 存在于磁盘上

存档日志线程 1 序列 43 已作为文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O

RCL\ARCHIVELOG\2009_04_27\O1_MF_1_43_4ZBS8ZDP_.ARC 存在于磁盘上

存档日志线程 1 序列 44 已作为文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O

RCL\ARCHIVELOG\2009_04_27\O1_MF_1_44_4ZBSKNF5_.ARC 存在于磁盘上

存档日志线程 1 序列 45 已作为文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O

RCL\ARCHIVELOG\2009_04_27\O1_MF_1_45_4ZBTCBQX_.ARC 存在于磁盘上

存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\200

9_04_27\O1_MF_1_42_4ZBS7BTC_.ARC 线程 =1 序列 =42

存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\200

9_04_27\O1_MF_1_43_4ZBS8ZDP_.ARC 线程 =1 序列 =43

存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\200

9_04_27\O1_MF_1_44_4ZBSKNF5_.ARC 线程 =1 序列 =44

存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\200

9_04_27\O1_MF_1_45_4ZBTCBQX_.ARC 线程 =1 序列 =45

介质恢复完成, 用时: 00:00:08

完成 recover 27-4 -09

 

数据库已打开

 

内存脚本的内容:

{

#mark read only the tablespace that will be exported

sql clone "alter tablespace TEST read only";

# export the tablespaces in the recovery set

host 'expdp userid=\"/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV

0=oracleEhwr)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^

'ORACLE_SID=Ehwr^'))(CONNECT_DATA=(SID=Ehwr))) as sysdba\" transport_tablespaces

=

 TEST dumpfile=

test_meta.dp directory=

d_output logfile=

test_meta.log';

}

正在执行内存脚本

 

sql 语句: alter tablespace TEST read only

 

 

Export: Release 10.2.0.1.0 - Production on 星期一, 27 4, 2009 16:26:46

 

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

 

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01":  userid="/********@(DESCRIPTION=(ADDRE

SS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0=oracleEhwr)(ARGS='(DESCRIPTION=(LOCAL=YE

S)(ADDRESS=(PROTOCOL=beq)))')(ENVS='ORACLE_SID=Ehwr'))(CONNECT_DATA=(SID=Ehwr)))

 AS SYSDBA" transport_tablespaces= TEST dumpfile=test_meta.dp directory=d_output

 logfile=test_meta.log

处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK

处理对象类型 TRANSPORTABLE_EXPORT/TABLE

处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01"

******************************************************************************

SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:

  D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\OUTPUT\TEST_META.DP

作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 16:27:20 成功完成

 

主机命令完成

/*

   The following command may be used to import the tablespaces.

   Substitute values for and .

   impdp directory= dumpfile= 'test_meta.dp' transport_datafi

les= D:\oracle\product\10.2.0\oradata\auxi\TEST.DBF

*/

--------------------------------------------------------------

-- Start of sample PL/SQL script. for importing the tablespaces

--------------------------------------------------------------

-- creating directory objects

CREATE DIRECTORY STREAMS$DIROBJ$1 AS  'D:\oracle\product\10.2.0\oradata\auxi\';

/* PL/SQL Script. to import the exported tablespaces */

DECLARE

  -- the datafiles

  tbs_files     dbms_streams_tablespace_adm.file_set;

  cvt_files     dbms_streams_tablespace_adm.file_set;

  -- the dumpfile to import

  dump_file     dbms_streams_tablespace_adm.file;

  dp_job_name   VARCHAR2(30) := NULL;

  -- names of tablespaces that were imported

  ts_names       dbms_streams_tablespace_adm.tablespace_set;

BEGIN

  -- dump file name and location

  dump_file.file_name :=  'test_meta.dp';

  dump_file.directory_object := 'd_output';

  -- forming list of datafiles for import

  tbs_files( 1).file_name :=  'TEST.DBF';

  tbs_files( 1).directory_object :=  'STREAMS$DIROBJ$1';

  -- import tablespaces

  dbms_streams_tablespace_adm.attach_tablespaces(

    datapump_job_name      => dp_job_name,

    dump_file              => dump_file,

    tablespace_files       => tbs_files,

    converted_files        => cvt_files,

    tablespace_names       => ts_names);

  -- output names of imported tablespaces

  IF ts_names IS NOT NULL AND ts_names.first IS NOT NULL THEN

    FOR i IN ts_names.first .. ts_names.last LOOP

      dbms_output.put_line('imported tablespace '|| ts_names(i));

    END LOOP;

  END IF;

END;

/

-- dropping directory objects

DROP DIRECTORY STREAMS$DIROBJ$1;

--------------------------------------------------------------

-- End of sample PL/SQL script

--------------------------------------------------------------

 

删除自动实例

关闭自动实例

Oracle 实例已关闭

自动实例已删除

 

删除自动实例

自动实例已删除

 

验证迁移结果:

由于我的表空间是专为此次实验新建的,所以我直接删除了TEST表空间,再由D:\oracle\product\10.2.0\oradata\auxi目录下生成的相关文件导入做结果验证。生产环境千万不可如此!!!

C:\>impdp test/test directory=d_output dumpfile=TEST_META.DP logfile=imp_test.log transport_datafiles=D:\oracle\product\10.2.0\oradata\auxi\test.dbf

Import: Release 10.2.0.1.0 - Production on 星期一, 27 4, 2009 16:42:06

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

 

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

已成功加载/卸载了主表 "TEST"."SYS_IMPORT_TRANSPORTABLE_01"

启动 "TEST"."SYS_IMPORT_TRANSPORTABLE_01":  test/******** directory=d_output dumpf

ile=TEST_META.DP logfile=imp_test.log transport_datafiles=D:\oracle\product\10.2

.0\oradata\auxi\test.dbf

处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK

处理对象类型 TRANSPORTABLE_EXPORT/TABLE

处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

作业 "TEST"."SYS_IMPORT_TRANSPORTABLE_01" 已于 16:43:26 成功完成

 

select相关table,验证结果。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17997/viewspace-591977/,如需转载,请注明出处,否则将追究法律责任。

上一篇: RMAN全自动TSPITR
下一篇: 配置RAC中的VIP
请登录后发表评论 登录
全部评论

注册时间:2008-04-16

  • 博文量
    65
  • 访问量
    212840