使用RMAN传输表空间!

 前面提到的传输表空间是手动的,可以看到需要把表空间read only,如果使用rman则不需要,因为rman是利用的备份集。

 

可传输表空间实验环境
 OSIPSID存储方式表空间用户
源数据库redhat5.410.10.10.7orclASMttb1user1

test

目标数据库redhat5.410.10.10.8orcl文件系统——user1——

下面给出创建测试环境的脚本(源数据库上面执行的操作)

SQL> show user
USER 为 "SYS"
SQL> create tablespace ttb1 datafile '+datadg' size 10m;

表空间已创建。

SQL> create user user1 identified by user1 default tablespace ttb1;

用户已创建。

SQL> grant connect,resource to user1;

授权成功。

SQL> create table user1.test as select * from dba_objects where rownum < 100;

表已创建。

SQL> conn user1/user1
已连接。
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
TEST                           TABLE

SQL> select count(*) from test;

  COUNT(*)
----------
        99

 

可传输表空间实战

1.确认要传输表空间的平台是否兼容(源数据库和目标数据库上面都一样,因为都是redhat5.4的OS)

SQL> select tp.* from v$transportable_platform tp,v$database d where tp.PLATFORM_NAME = d.PLATFORM_NAME;

PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT
----------- ---------------------------------------- --------------
         10 Linux IA (32-bit)                        Little


2.确认传输的表空间是否自包含(源数据库上面执行的操作)

SQL> exec dbms_tts.transport_set_check('ttb1',true,true);

PL/SQL 过程已成功完成。

SQL> select * from transport_set_violations;

未选定行

 

3.备份数据库(源数据库上面执行的操作)

RMAN> sql "alter system checkpoint";

sql 语句: alter system checkpoint

RMAN> sql "alter system archive log current";

sql 语句: alter system archive log current

RMAN> sql "alter system switch logfile";

sql 语句: alter system switch logfile

RMAN> backup database;

启动 backup 于 07-10月-11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=+DATADG/orcl/datafile/system.260.762322843
输入数据文件 fno=00002 name=+DATADG/orcl/datafile/undotbs1.261.762322855
输入数据文件 fno=00003 name=+DATADG/orcl/datafile/sysaux.262.762322857
输入数据文件 fno=00005 name=+DATADG/orcl/datafile/tb1.267.763910145
输入数据文件 fno=00006 name=+DATADG/orcl/datafile/tb2.268.763910201
输入数据文件 fno=00007 name=+DATADG/orcl/datafile/ttb1.269.763916007
输入数据文件 fno=00004 name=+DATADG/orcl/datafile/users.264.762322865
通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
段句柄=+FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记=TAG20111007T154253 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记=TAG20111007T154253 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 07-10月-11

RMAN> backup archivelog all;

启动 backup 于 07-10月-11
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =29 记录 ID=1 时间戳=762324929
输入存档日志线程 =1 序列 =30 记录 ID=2 时间戳=762374199
输入存档日志线程 =1 序列 =31 记录 ID=3 时间戳=762886152
输入存档日志线程 =1 序列 =32 记录 ID=4 时间戳=763918707
输入存档日志线程 =1 序列 =33 记录 ID=5 时间戳=763918939
输入存档日志线程 =1 序列 =34 记录 ID=6 时间戳=763918951
输入存档日志线程 =1 序列 =35 记录 ID=7 时间戳=763919033
通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
段句柄=+FLSHDG/orcl/backupset/2011_10_07/annnf0_tag20111007t154353_0.268.763919035 标记=TAG20111007T154353 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
完成 backup 于 07-10月-11

RMAN> backup current controlfile;

启动 backup 于 07-10月-11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11
通道 ORA_DISK_1: 已完成段 1 于 07-10月-11
段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncnnf0_tag20111007t154419_0.269.763919061 标记=TAG20111007T154419 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 07-10月-11

说明:这里使用全库备份,因为除了目标表空间的备份以外,RMAN还需要SYSTEM、SYSAUX以及UNDO表空间的备份,如果任意一个表空间的备份不存在,则就会导致“RMAN-06019: 无法转换表空间名称"TTB1"”的错误。


4.生成传输集(源数据库上面执行的操作)

RMAN> transport tablespace ttb1 tablespace destination '/u01/td' auxiliary destination '/u01/ad';

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

表空间列表要求具有 UNDO 段
表空间 SYSTEM
表空间 UNDOTBS1

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

供自动实例使用的初始化参数:
db_name=ORCL
compatible=10.2.0.3.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_ORCL_hiEo
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=/u01/ad
control_files=/u01/ad/cntrl_tspitr_ORCL_hiEo.f


启动自动实例 ORCL

Oracle 实例已启动

系统全局区域总计     201326592 字节

Fixed Size                     1266584 字节
Variable Size                146803816 字节
Database Buffers              50331648 字节
Redo Buffers                   2924544 字节
自动实例已创建

内存脚本的内容:
{
# set the until clause
set until  scn 973897;
# 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 于 07-10月-11
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在还原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011
通道 ORA_AUX_DISK_1: 已还原备份片段 1
段句柄 = +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记 = TAG20111007T154253
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:18
输出文件名=/u01/ad/cntrl_tspitr_ORCL_hiEo.f
完成 restore 于 07-10月-11

sql 语句: alter database mount clone database

sql 语句: alter system archive log current

sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
释放的通道: ORA_DISK_1
释放的通道: ORA_AUX_DISK_1

内存脚本的内容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until  scn 973897;
# 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  7 to 
 "/u01/td/ttb1.269.763916007";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile  1, 2, 3, 7;
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  7 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace  "TTB1", "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 在控制文件中已重命名为 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_%u_.tmp

启动 restore 于 07-10月-11
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
正将数据文件00001还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_%u_.dbf
正将数据文件00002还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_%u_.dbf
正将数据文件00003还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_%u_.dbf
正将数据文件00007还原到/u01/td/ttb1.269.763916007
通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973
通道 ORA_AUX_DISK_1: 已还原备份片段 1
段句柄 = +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记 = TAG20111007T154253
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:36
完成 restore 于 07-10月-11

数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=6 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=7 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf
数据文件 7 已转换成数据文件副本
输入数据文件副本 recid=8 stamp=763919178 文件名=/u01/td/ttb1.269.763916007

sql 语句: alter database datafile  1 online

sql 语句: alter database datafile  2 online

sql 语句: alter database datafile  3 online

sql 语句: alter database datafile  7 online

启动 recover 于 07-10月-11
使用通道 ORA_AUX_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 35 已作为文件 +FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 存在于磁盘上
存档日志文件名 =+FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 线程 =1 序列 =35
介质恢复完成, 用时: 00:00:02
完成 recover 于 07-10月-11

数据库已打开

内存脚本的内容:
{
#mark read only the tablespace that will be exported
sql clone "alter tablespace TTB1 read only";
# create directory for datapump export
sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as ''
/u01/td''";
# export the tablespaces in the recovery set
host 'expdp userid=\"/@\(DESCRIPTION=\(ADDRESS=\(PROTOCOL=beq\)\(PROGRAM=/u01/app/oracle/product/10.2.0/db_1/bin/oracle\)\(ARGV0=oraclehiEo\)\(ARGS=^'\(DESCRIPTION=\(LOCAL=YES\)\(ADDRESS=\(PROTOCOL=beq\)\)\)^'\)\(ENVS=^'ORACLE_SID=hiEo^'\)\)\(CONNECT_DATA=\(SID=hiEo\)\)\) as sysdba\" transport_tablespaces=
 TTB1 dumpfile=
dmpfile.dmp directory=
STREAMS_DIROBJ_DPDIR logfile=
explog.log';
}
正在执行内存脚本

sql 语句: alter tablespace TTB1 read only

sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ''/u01/td''


Export: Release 10.2.0.4.0 - Production on 星期五, 07 10月, 2011 15:46:44

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

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01":  userid="/********@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/oracle/product/10.2.0/db_1/bin/oracle)(ARGV0=oraclehiEo)(ARGS=\(DESCRIPTION=\(LOCAL=YES\)\(ADDRESS=\(PROTOCOL=beq\)\)\))(ENVS=ORACLE_SID=hiEo))(CONNECT_DATA=(SID=hiEo))) AS SYSDBA" transport_tablespaces= TTB1 dumpfile=dmpfile.dmp directory=STREAMS_DIROBJ_DPDIR logfile=explog.log 
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 
******************************************************************************
SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
  /u01/td/dmpfile.dmp
作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 15:47:14 成功完成

主机命令完成
/*
   The following command may be used to import the tablespaces.
   Substitute values for <logon> and <directory>.
   impdp <logon> directory=<directory> dumpfile= 'dmpfile.dmp' transport_datafiles= /u01/td/ttb1.269.763916007 
*/
--------------------------------------------------------------
-- Start of sample PL/SQL script for importing the tablespaces
--------------------------------------------------------------
-- creating directory objects
CREATE DIRECTORY STREAMS$DIROBJ$1 AS  '/u01/td/';
CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS  '/u01/td';
/* 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 :=  'dmpfile.dmp';
  dump_file.directory_object := 'STREAMS$DIROBJ$DPDIR';
  -- forming list of datafiles for import
  tbs_files( 1).file_name :=  'ttb1.269.763916007';
  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;
DROP DIRECTORY STREAMS$DIROBJ$DPDIR;
--------------------------------------------------------------
-- End of sample PL/SQL script
--------------------------------------------------------------

删除自动实例
关闭自动实例 
Oracle 实例已关闭
自动实例已删除
已删除辅助实例文件 /u01/ad/cntrl_tspitr_ORCL_hiEo.f
已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf
已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf
已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf
已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_78xclrd5_.tmp
已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_1_78xclmkj_.log
已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_2_78xclnjl_.log
已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_3_78xclnxc_.log

说明:可以看见“/u01/ad/”目录下面的东西ramn最后自动删除了的,这个目录只是一个临时目录的作用。查看一下“/u01/td/”目录

[oracle@linux td]$ pwd
/u01/td
[oracle@linux td]$ ll
总计 10352
-rw-r----- 1 oracle oinstall    77824 10-07 15:47 dmpfile.dmp
-rw-r--r-- 1 oracle oinstall     1110 10-07 15:47 explog.log
-rw-r--r-- 1 oracle oinstall     2042 10-07 15:47 impscrpt.sql
-rw-r----- 1 oracle oinstall 10493952 10-07 15:46 ttb1.269.763916007

  impscrpt.sql --元数据信息,目标数据库必须存在相应的对象属主,数据文件路径不一致还要修改脚本。
  dmpfile.dmp --也是元数据信息,如果使用dump文件导入元数据信息则就没有上面的限制了。
  ttb1.269.763916007 --数据文件,可以发现生成的数据文件和原来的数据文件一模一样。
  explog.log --导出操作的日志文件。

 

5.转换字节顺序,如果两个平台的字节顺序不一样,中间需要一个转换过程,可以使用rman。(可选操作,这里并没有执行。)

RMAN> convert tablespace books to platform 'Microsoft Windows IA (32-bit)' format '/tmp/%N_%F';  
RMAN> convert datafile '/tmp/BOOKS_5' db_file_name_convert '/tmp/BOOKS_5','/tmp/books01.dbf';  

说明:这就是第一步检查的目的,虽然这里并不需要转换。这里给出的只是转换的方法。

 

6.复制/u01/td目录和数据文件到目标数据库/u01/td(目标数据库上面执行的操作)

[root@linux ~]# cd /u01/
[root@linux u01]# chown -R oracle:oinstall td/
[root@linux u01]# cd td/
[root@linux td]# ll
总计 10352
-rw-r--r-- 1 oracle oinstall    77824 10-06 15:50 dmpfile.dmp
-rw-r--r-- 1 oracle oinstall     1110 10-06 15:50 explog.log
-rw-r--r-- 1 oracle oinstall     2042 10-06 15:50 impscrpt.sql
-rw-r--r-- 1 oracle oinstall 10493952 10-06 15:50 ttb1.269.763916007
 
 
7.检查源表空间和目标数据库的块大小是否一样

源数据库

SQL> select block_size from dba_tablespaces where tablespace_name = 'TTB1';  
  
BLOCK_SIZE  
----------   
      8192  
    
SQL> show parameter db_block_size  
  
NAME                                 TYPE        VALUE  
------------------------------------ ----------- ------------------------------   
db_block_size                        integer     8192  
目标数据库
SQL> show parameter db_block_size  
  
NAME                                 TYPE        VALUE  
------------------------------------ ----------- ------------------------------   
db_block_size                        integer     8192  

8.导入元数据(目标数据库上面执行的操作)
 a.使用asm存储体系,使用dump导入
   convert datafile '/opt/tts/td/tts.288.755520393' format '+datagroup';
   如果是使用的asm则需要把os上面的文件放到asm里面,上面这条命令可以在os和asm之间转换数据文件。
   impdp system/oracle@orcl directory=dp dumpfile=dmpfile.dmp nologfile=y transport_datafiles='+DATAGROUP/ORCL/DATAFILE/TTS.290.755528197';
 b.使用文件系统,使用dump导入。
   impdp system/oracle@orcl directory=dp dumpfile=dmpfile.dmp nologfile=y transport_datafiles='/opt/oradata/tts.288.755520393';
  c.@/opt/tts/td/impsctpt.sql
a、b、c选择一个执行就可以拉,这里我选择c
首先创建用户
SQL> show user
USER 为 "SYS"
SQL> create user user1 identified by user1;

用户已创建。

SQL> grant connect,resource to user1;

授权成功。
运行脚本
SQL> @/u01/td/impscrpt.sql

目录已创建。


目录已创建。


PL/SQL 过程已成功完成。


目录已删除。


目录已删除。
SQL> show user
USER 为 "SYS"
SQL> alter user user1 default tablespace ttb1;

用户已更改。
 
9.刚导入的表空间默认是read-only 状态,将表空间更改为read write(目标数据库执行)
SQL> show user
USER 为 "SYS"
SQL> select tablespace_name,status from dba_tablespaces where tablespace_name = 'TTB1';

TABLESPACE_NAME                STATUS
------------------------------ ---------
TTB1                           READ ONLY

SQL> alter tablespace ttb1 read write;

表空间已更改。

SQL> select tablespace_name,status from dba_tablespaces where tablespace_name = 'TTB1';

TABLESPACE_NAME                STATUS
------------------------------ ---------
TTB1                           ONLINE
SQL> conn user1/user1
已连接。
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
TEST                           TABLE

SQL> select count(*) from test;

  COUNT(*)
----------
        99
 
10.规范数据文件名字(目标数据库执行)
可以看见导入的数据文件的存放路径和名字不太规范
USER 为 "SYS"
SQL> select file_name from dba_data_files;

FILE_NAME
-------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/test01.dbf
/u01/app/oracle/oradata/orcl/perfstat01.dba
/u01/app/oracle/oradata/orcl/undo01.dbf
/u01/app/oracle/oradata/orcl/tbspart01.dbf
/u01/app/oracle/oradata/orcl/tbspart02.dbf
/u01/app/oracle/oradata/orcl/tbspart03.dbf
/u01/app/oracle/oradata/orcl/tbspart04.dbf

FILE_NAME
--------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/tb1.dbf
/u01/app/oracle/oradata/orcl/tb2.dbf
/u01/td/ttb1.269.763916007

已选择14行。
使用rman移动数据库文件
RMAN> backup as copy datafile '/u01/td/ttb1.269.763916007' format '/u01/app/oracle/oradata/orcl/ttb1.dbf';

启动 backup 于 06-10月-11
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=143 devtype=DISK
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00014 name=/u01/td/ttb1.269.763916007
输出文件名 = /u01/app/oracle/oradata/orcl/ttb1.dbf 标记 = TAG20111006T161958 recid = 1 时间戳 = 763834799
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 06-10月-11

RMAN> sql "alter tablespace ttb1 offline";

sql 语句: alter tablespace ttb1 offline

RMAN> switch datafile '/u01/td/ttb1.269.763916007' to copy;

RMAN> sql "alter tablespace ttb1 online";

sql 语句: alter tablespace ttb1 online
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: sql 命令 (default 通道上, 在 10/06/2011 16:28:00 上) 失败
RMAN-11003: 在分析/执行 SQL 语句期间失败: alter tablespace ttb1 online
ORA-01113: 文件 14 需要介质恢复
ORA-01110: 数据文件 14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'

RMAN> recover datafile 14;

启动 recover 于 06-10月-11
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:00

完成 recover 于 06-10月-11

RMAN> sql "alter tablespace ttb1 online";

sql 语句: alter tablespace ttb1 online
再次查看
SQL> select file_name,ONLINE_STATUS from dba_data_files;

FILE_NAME                                                                                            ONLINE_
---------------------------------------------------------------------------------------------------- -------
/u01/app/oracle/oradata/orcl/system01.dbf                                                            SYSTEM
/u01/app/oracle/oradata/orcl/undotbs01.dbf                                                           ONLINE
/u01/app/oracle/oradata/orcl/sysaux01.dbf                                                            ONLINE
/u01/app/oracle/oradata/orcl/users01.dbf                                                             ONLINE
/u01/app/oracle/oradata/orcl/test01.dbf                                                              ONLINE
/u01/app/oracle/oradata/orcl/perfstat01.dba                                                          ONLINE
/u01/app/oracle/oradata/orcl/undo01.dbf                                                              ONLINE
/u01/app/oracle/oradata/orcl/tbspart01.dbf                                                           ONLINE
/u01/app/oracle/oradata/orcl/tbspart02.dbf                                                           ONLINE
/u01/app/oracle/oradata/orcl/tbspart03.dbf                                                           ONLINE
/u01/app/oracle/oradata/orcl/tbspart04.dbf                                                           ONLINE

FILE_NAME                                                                                            ONLINE_
---------------------------------------------------------------------------------------------------- -------
/u01/app/oracle/oradata/orcl/tb1.dbf                                                                 ONLINE
/u01/app/oracle/oradata/orcl/tb2.dbf                                                                 ONLINE
/u01/app/oracle/oradata/orcl/ttb1.dbf                                                                ONLINE

已选择14行。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值