ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle实验记录 (transport tablespace(Rman))

oracle实验记录 (transport tablespace(Rman))

原创 Linux操作系统 作者:fufuh2o 时间:2009-09-24 13:00:03 0 删除 编辑

 

利用rman(tablespace 不要  read only)
将XH DB 的TEXTXH TABLESPACE 传送到 orcl db

前期检查还是要进行的,版本 平台,是否自包含(dbms_tts.transport_set_check)

如果平台不一样 RMAN TRANSPORT TABLESPACE XXX 中加 to
platform  'LinuxIA(32-bit)'(平台名) (手动EXPEDP/IMPDP 的话用RMAN CONVERT DATAFILE(database,tablesapce) TO PLATFORM. ,另外可以使用 FORMAT ,db_file_name_convert

设置转换后名字路径)
alter tablespace xhtr read only;***************
RMAN> convert tablespace xhtr to platform='Linux IA (32-bit)';

启动 backup 于 24-9月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件转换
输入数据文件 fno=00008 name=D:\XHDATAFILE\XHTR.DBF
已转换的数据文件 = D:\ORACLE\PRODUCT\10.2.0\DB_2\DATABASE\DATA_D-XH_I-3093395309_TS
-XHTR_FNO-8_0FKQ20E8
通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:01
完成 backup 于 24-9月 -09
 
另外在实验中遇到一个错误 实验的表空间名字为 test2 如果是test 需要大写 加 '','TEST',而test2 这种方法不行 最后没解决
SQL> desc v$reserved_words;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 KEYWORD                                            VARCHAR2(30)
 LENGTH                                             NUMBER
 RESERVED                                           VARCHAR2(1)
 RES_TYPE                                           VARCHAR2(1)
 RES_ATTR                                           VARCHAR2(1)
 RES_SEMI                                           VARCHAR2(1)
 DUPLICATE                                          VARCHAR2(1)
This view gives a list of all SQL keywords. To determine whether a particular keyword is reserved in any way, check the RESERVED, RES_TYPE, RES_ATTR, and

RES_SEMI columns

KEYWORD VARCHAR2(30) Name of the keyword
LENGTH NUMBER Length of the keyword
RESERVED VARCHAR2(1) A value of Y means that the keyword cannot be used as an identifier. A value of N means that it is not reserved.
RES_TYPE VARCHAR2(1) A value of Y means that the keyword cannot be used as a type name. A value of N means that it is not reserved.
RES_ATTR VARCHAR2(1) A value of Y means that the keyword cannot be used as an attribute name. A value of N means that it is not reserved.
RES_SEMI VARCHAR2(1) A value of Y means that the keyword is not allowed as an identifier in certain situations, such as in DML. A value of N means that it is

not reserved.
DUPLICATE VARCHAR2(1) A value of Y means that the keyword is a duplicate of another keyword. A value of N means that it is not a duplicate.

SQL> select *from v$reserved_words where keyword='TEST';

KEYWORD                            LENGTH R R R R D
------------------------------ ---------- - - - - -
TEST                                    4 N N N N N

SQL> select name from v$database;

NAME
---------
XH

SQL> create tablespace xhtest  datafile 'd:\xhdatafile\xhtest.dbf' size 10m;

表空间已创建。

SQL>
SQL> conn xh/a123
已连接。
SQL> create table t1 (a int) tablespace xhtest;

表已创建。

SQL> insert into t1 values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

         A
----------
         1

 

C:\>rman target xh/a123@xh

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 9月 23 16:26:15 2009

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

连接到目标数据库: XH (DBID=3093395309)

RMAN> transport tablespace XHTEST tablespace destination 'd:\a' auxiliary destinati
on 'd:\b'
2> ;


为了看的更清楚 看清RMAN 过程  所有的RMAN 输出都有
RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点

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

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

供自动实例使用的初始化参数:
db_name=XH
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_XH_zCxv
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=d:\b
control_files=d:\b/cntrl_tspitr_XH_zCxv.f


启动自动实例 XH

Oracle 实例已启动

系统全局区域总计     205520896 字节

Fixed Size                     1248092 字节
Variable Size                146801828 字节
Database Buffers              50331648 字节
Redo Buffers                   7139328 字节
自动实例已创建

内存脚本的内容:
{
# set the until clause
set until  scn 1085288;
# 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 于 23-9月 -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\XH
\BACKUPSET\2009_09_23\O1_MF_NCSNF_TAG20090923T174229_5CMVFYX9_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF
_NCSNF_TAG20090923T174229_5CMVFYX9_.BKP 标记 = TAG20090923T174229
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:01
输出文件名=D:\B\CNTRL_TSPITR_XH_ZCXV.F
完成 restore 于 23-9月 -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 1085288;
# 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
 "d:\a\XHTEST.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, 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  "XHTEST", "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:\B\TSPITR_X\DATAFILE\O1_MF_TEMP_%U_.TMP

启动 restore 于 23-9月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\B\TSPITR_X\DATAFILE\O1_MF_SYSTEM_%U_.DBF
正将数据文件00002恢复到D:\B\TSPITR_X\DATAFILE\O1_MF_UNDOTBS1_%U_.DBF
正将数据文件00003恢复到D:\B\TSPITR_X\DATAFILE\O1_MF_SYSAUX_%U_.DBF
正将数据文件00007恢复到D:\A\XHTEST.DBF
通道 ORA_AUX_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH
\BACKUPSET\2009_09_23\O1_MF_NNNDF_TAG20090923T174229_5CMVD62X_.BKP
通道 ORA_AUX_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF
_NNNDF_TAG20090923T174229_5CMVD62X_.BKP 标记 = TAG20090923T174229
通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:55
完成 restore 于 23-9月 -09

数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=5 stamp=698349154 文件名=D:\B\TSPITR_X\DATAFILE\O1_MF_SYSTEM
_5CMVXBVT_.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=6 stamp=698349155 文件名=D:\B\TSPITR_X\DATAFILE\O1_MF_UNDOTB
S1_5CMVXBX9_.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=7 stamp=698349155 文件名=D:\B\TSPITR_X\DATAFILE\O1_MF_SYSAUX
_5CMVXBWS_.DBF
数据文件 7 已转换成数据文件副本
输入数据文件副本 recid=8 stamp=698349155 文件名=D:\A\XHTEST.DBF

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 于 23-9月 -09
使用通道 ORA_AUX_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 42 已作为文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\A
RCHIVELOG\2009_09_23\O1_MF_1_42_5CMVG07B_.ARC 存在于磁盘上
存档日志线程 1 序列 43 已作为文件 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\A
RCHIVELOG\2009_09_23\O1_MF_1_43_5CMVJCD6_.ARC 存在于磁盘上
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_09_
23\O1_MF_1_42_5CMVG07B_.ARC 线程 =1 序列 =42
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\ARCHIVELOG\2009_09_
23\O1_MF_1_43_5CMVJCD6_.ARC 线程 =1 序列 =43
介质恢复完成, 用时: 00:00:02
完成 recover 于 23-9月 -09

数据库已打开

内存脚本的内容:
{
#mark read only the tablespace that will be exported
sql clone "alter tablespace XHTEST read only";
# create directory for datapump export
sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as ''
d:\a''";
# export the tablespaces in the recovery set
host 'expdp userid=\"/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0=o
raclezCxv)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'ORACL
E_SID=zCxv^'))(CONNECT_DATA=(SID=zCxv))) as sysdba\" transport_tablespaces=
 XHTEST dumpfile=
dmpfile.dmp directory=
STREAMS_DIROBJ_DPDIR logfile=
explog.log';
}
正在执行内存脚本

sql 语句: alter tablespace XHTEST read only

sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ''d:\a''


Export: Release 10.2.0.1.0 - Production on 星期三, 23 9月, 2009 17:52:58

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=(ADDRESS=
(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0=oraclezCxv)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADD
RESS=(PROTOCOL=beq)))')(ENVS='ORACLE_SID=zCxv'))(CONNECT_DATA=(SID=zCxv))) AS SYSDB
A" transport_tablespaces= XHTEST dumpfile=dmpfile.dmp directory=STREAMS_DIROBJ_DPDI
R 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 的转储文件集为:
  D:\A\DMPFILE.DMP
作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 17:53:50 成功完成

主机命令完成
/*
   The following command may be used to import the tablespaces.
   Substitute values for and .
   impdp directory= dumpfile= 'dmpfile.dmp' transport_datafiles=
 d:\a\XHTEST.DBF
*/
--------------------------------------------------------------
-- Start of sample PL/SQL script. for importing the tablespaces
--------------------------------------------------------------
-- creating directory objects
CREATE DIRECTORY STREAMS$DIROBJ$1 AS  'd:\a\';
CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS  'd:\a';
/* 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 :=  'XHTEST.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;
DROP DIRECTORY STREAMS$DIROBJ$DPDIR;
--------------------------------------------------------------
-- End of sample PL/SQL script
--------------------------------------------------------------

删除自动实例
关闭自动实例
Oracle 实例已关闭
自动实例已删除
已删除辅助实例文件 D:\B\CNTRL_TSPITR_XH_ZCXV.F
已删除辅助实例文件 D:\B\TSPITR_X\DATAFILE\O1_MF_SYSTEM_5CMVXBVT_.DBF
已删除辅助实例文件 D:\B\TSPITR_X\DATAFILE\O1_MF_UNDOTBS1_5CMVXBX9_.DBF
已删除辅助实例文件 D:\B\TSPITR_X\DATAFILE\O1_MF_SYSAUX_5CMVXBWS_.DBF
已删除辅助实例文件 D:\B\TSPITR_X\DATAFILE\O1_MF_TEMP_5CMVZKB8_.TMP
已删除辅助实例文件 D:\B\TSPITR_X\ONLINELOG\O1_MF_1_5CMVZCOH_.LOG
已删除辅助实例文件 D:\B\TSPITR_X\ONLINELOG\O1_MF_2_5CMVZF6C_.LOG
已删除辅助实例文件 D:\B\TSPITR_X\ONLINELOG\O1_MF_3_5CMVZGBQ_.LOG

RMAN>


C:\>set oracle_sid=orcl

C:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 9月 23 17:56:18 2009

Copyright (c) 1982, 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

SQL> @D:\a\impscript.sql
SP2-0310: 无法打开文件 "D:\a\impscript.sql"
SQL> @ D:\a\impscript.sql
SP2-0310: 无法打开文件 "D:\a\impscript.sql"
SQL> @D:\a\impscript.sql
SP2-0310: 无法打开文件 "D:\a\impscript.sql"
SQL> @D:\a\impscrpt.sql

目录已创建。


目录已创建。

PL/SQL 过程已成功完成
目录已删除。


目录已删除。

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TEST
RMAN_TS
TESTXH
XHTEST

已选择10行。

从上面可以分析到 为什么 rman不需要read only 很简单 rman 建立一个auxiliary database 把要transport 的 tablespace及其必要的文件controlfile,undo,system 从备份中

restore过去,然后进行 recover (利用archivelog 恢复到最新)然后将auyxiliary db中 transport tablesapce read only, exp导出,然后制作一个impdp脚本 ,在要target

端执行这个导入脚本就行了


~~~~~~~~~~~~~~
rman  没有备份的时候

C:\>rman target xh/a123@xh

恢复管理器: Release 10.2.0.1.0 - Production on 星期四 9月 24 09:48:16 2009

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

连接到目标数据库: XH (DBID=3093395309)

RMAN> delete noprompt backup;

使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=134 devtype=DISK

备份段列表
BP 关键字  BS 关键字  Pc# Cp# 状态      设备类型段名称
------- ------- --- --- ----------- ----------- ----------
9       9       1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_NNNDF_TAG20090923T173725_5CMV2PC7_.BKP
10      10      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_NCSNF_TAG20090923T173725_5CMV4H4W_.BKP
11      11      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_ANNNN_TAG20090923T174226_5CMVD42X_.BKP
12      12      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_NNNDF_TAG20090923T174229_5CMVD62X_.BKP
13      13      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_NCSNF_TAG20090923T174229_5CMVFYX9_.BKP
14      14      1   1   AVAILABLE   DISK        D:\ORACLE\PRODUCT\10.2.0\FLASH_RECO
VERY_AREA\XH\BACKUPSET\2009_09_23\O1_MF_ANNNN_TAG20090923T174328_5CMVG21G_.BKP
已删除备份段
备份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_NNNDF_TAG20090923T173725_5CMV2PC7_.BKP recid=9 stamp=698348246
已删除备份段
备份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_NCSNF_TAG20090923T173725_5CMV4H4W_.BKP recid=10 stamp=698348303
已删除备份段
备份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_ANNNN_TAG20090923T174226_5CMVD42X_.BKP recid=11 stamp=698348548
已删除备份段
备份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_NNNDF_TAG20090923T174229_5CMVD62X_.BKP recid=12 stamp=698348550
已删除备份段
备份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_NCSNF_TAG20090923T174229_5CMVFYX9_.BKP recid=13 stamp=698348606
已删除备份段
备份段 handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\XH\BACKUPSET\2009_09_23\
O1_MF_ANNNN_TAG20090923T174328_5CMVG21G_.BKP recid=14 stamp=698348610
6 对象已删除


RMAN> list backup;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~没有备份了


SQL> create tablespace xhtr datafile 'd:\xhdatafile\xhtr.dbf' size 10m;

表空间已创建。

SQL> create table t2 (a int) tablespace xhtr;

表已创建。

SQL> insert into t2 values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t2;

         A
----------
         1

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 INACTIVE
         3 CURRENT

SQL> alter database begin backup ;

数据库已更改。

SQL> host copy d:\ORACLE\PRODUCT\10.2.0\ORADATA\xh\SYSTEM01.DBF  d:\catalog\SYSTEM0
1.DBF
已复制         1 个文件。

SQL> host copy d:\ORACLE\PRODUCT\10.2.0\ORADATA\xh\undotbs01.DBF  d:\catalog\undotb
s01.DBF
已复制         1 个文件。

SQL> host copy d:\xhdatafile\xhtr.dbf  d:\catalog\xhtr.DBF
已复制         1 个文件。

SQL> alter database end backup;

数据库已更改。

SQL> alter database backup controlfile to 'd:\catalog\tctl.ctl';

数据库已更改。

SQL> show user;
USER 为 "XH"

AUXILIARY DB 要正常使用需要UNDO ,SYSTEM, CONTROLFILE
表空间列表要求具有 UNDO 段
表空间 SYSTEM
表空间 UNDOTBS1

 

SQL> alter database backup controlfile to 'd:\catalog\tctl.ctl';

数据库已更改。~要用这样的backup controlfile才能 注册进来否则 注册时候

(ORA-19620: D:\CATALOG\TEST.CTL 的类型不是 backup control file)有这个错误

RMAN> catalog start with 'd:\catalog';

搜索与样式 d:\catalog 匹配的所有文件

数据库未知文件的列表
=====================================
文件名: D:\catalog\coNTROL01.CTL
文件名: D:\catalog\SYSTEM01.DBF
文件名: D:\catalog\TCTL.CTL
文件名: D:\catalog\test.CTL
文件名: D:\catalog\undotbs01.DBF
文件名: D:\catalog\xhtr.DBF

是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes
正在编制文件目录...
目录编制完毕

已列入目录的文件的列表
=======================
文件名: D:\catalog\SYSTEM01.DBF
文件名: D:\catalog\TCTL.CTL
文件名: D:\catalog\undotbs01.DBF
文件名: D:\catalog\xhtr.DBF

未列入目录的文件的列表
=======================================
文件名: D:\catalog\coNTROL01.CTL
  RMAN-07519: 原因: 编制目录时出错。请参阅 alert.log。~~~~~~~~~~~~~~~~~
文件名: D:\catalog\test.CTL
  RMAN-07519: 原因: 编制目录时出错。请参阅 alert.log。~~~~~~~~~~~~~~~~~~这2个controlfile是 host copy产生所以不行
RMAN> list copy of controlfile;


控制文件副本列表
关键字     S 完成时间   Ckp SCN    Ckp 时间   名称
------- - ---------- ---------- ---------- ----
8       A 24-9月 -09 1115458    24-9月 -09 D:\CATALOG\TCTL.CTL
6       A 24-9月 -09 1115458    24-9月 -09 D:\CATALOG\TCTL.CTL
RMAN> list copy of database;


数据文件副本列表
关键字     文件 S 完成时间   Ckp SCN    Ckp 时间   名称
------- ---- - ---------- ---------- ---------- ----
1       1    A 24-9月 -09 1109552    24-9月 -09 D:\CATALOG\SYSTEM01.DBF
9       2    A 24-9月 -09 1115360    24-9月 -09 D:\CATALOG\UNDOTBS01.DBF
10      8    A 24-9月 -09 1115360    24-9月 -09 D:\CATALOG\XHTR.DBF

 

RMAN> transport tablespace xhtr tablespace destination 'd:\a' auxiliary destination
 'd:\b';

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

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

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

供自动实例使用的初始化参数:
db_name=XH
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_XH_cwbw
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=d:\b
control_files=d:\b/cntrl_tspitr_XH_cwbw.f


启动自动实例 XH

Oracle 实例已启动

系统全局区域总计     205520896 字节

Fixed Size                     1248092 字节
Variable Size                146801828 字节
Database Buffers              50331648 字节
Redo Buffers                   7139328 字节
自动实例已创建

删除自动实例
关闭自动实例
Oracle 实例已关闭
自动实例已删除
RMAN-03002: tranport tablespace 命令 (在 09/24/2009 11:07:49 上) 失败
RMAN-20202: 在恢复目录中未找到表空间
RMAN-06019: 无法转换表空间名称"XHTR"

RMAN> list copy of tablespace xhtr;


数据文件副本列表
关键字     文件 S 完成时间   Ckp SCN    Ckp 时间   名称
------- ---- - ---------- ---------- ---------- ----
10      8    A 24-9月 -09 1115360    24-9月 -09 D:\CATALOG\XHTR.DBF


这个错误 说在catalog中没有xhtr这个TABLESPACE 原因是 备份的控制文件太新了 create tablespace xhtr 产生的 redo 还在current redo里没有针对这个tablespace的

archivelog

SQL> alter system switch logfile;      解决

系统已更改。
RMAN> transport tablespace xhtr tablespace destination 'd:\a' auxiliary destination
 'd:\b';

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

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

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

供自动实例使用的初始化参数:
db_name=XH
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_XH_zBFh
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=d:\b
control_files=d:\b/cntrl_tspitr_XH_zBFh.f


启动自动实例 XH

Oracle 实例已启动

系统全局区域总计     205520896 字节

Fixed Size                     1248092 字节
Variable Size                146801828 字节
Database Buffers              50331648 字节
Redo Buffers                   7139328 字节
自动实例已创建

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

通道 ORA_AUX_DISK_1: 正在复原控制文件
通道 ORA_AUX_DISK_1: 已复制控制文件副本
输出文件名=D:\CATALOG\TCTL.CTL
输出文件名=D:\B\CNTRL_TSPITR_XH_ZBFH.F
完成 restore 于 24-9月 -09

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 1115701;
# 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  8 to
 "d:\a\XHTR.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, 8;
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  8 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace  "XHTR", "SYSTEM", "UNDOTBS1", "SYSAUX" delete ar
chivelog;
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:\B\TSPITR_X\DATAFILE\O1_MF_TEMP_%U_.TMP

启动 restore 于 24-9月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK


删除自动实例
关闭自动实例
Oracle 实例已关闭
自动实例已删除
RMAN-03002: tranport tablespace 命令 (在 09/24/2009 11:09:34 上) 失败
RMAN-03015: 在存储的脚本Memory Script中出现错误
RMAN-06026: 有些目标没有找到 - 终止恢复
RMAN-06023: 没有找到数据文件3的副本来恢复

RMAN> list copy of datafile 3;


RMAN>                                  又失败了 原因很简单需要sysaux tablespace(recover clone database tablespace  "XHTR", "SYSTEM", "UNDOTBS1", "SYSAUX"

delete ar)
原因在与
SQL> select OCCUPANT_NAME, OCCUPANT_DESC from v$sysaux_occupants;

OCCUPANT_NAME
----------------------------------------------------------------
OCCUPANT_DESC
----------------------------------------------------------------
LOGMNR
LogMiner

LOGSTDBY
Logical Standby

STREAMS
Oracle Streams~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~streamS 信息 存sysaux中 当生成 IMPDP脚本时实际使用 streams

(dbms_streams_tablespace_adm.file_set,dbms_streams_tablespace_adm.attach_tablespaces)


SQL> alter database begin backup ;

数据库已更改。


SQL> host copy d:\ORACLE\PRODUCT\10.2.0\ORADATA\xh\SYSAUX01.DBF  d:\catalog\SYSAUX0
1.DBF
已复制         1 个文件。

SQL> alter database end backup;

数据库已更改。

SQL> alter system switch logfile;

系统已更改。
RMAN> catalog datafilecopy 'd:\catalog\sysaux01.dbf';

已将数据文件副本列入目录
数据文件副本 filename=D:\CATALOG\SYSAUX01.DBF recid=11 stamp=698412296

RMAN> list copy of datafile 3;


数据文件副本列表
关键字     文件 S 完成时间   Ckp SCN    Ckp 时间   名称
------- ---- - ---------- ---------- ---------- ----
11      3    A 24-9月 -09 1116790    24-9月 -09 D:\CATALOG\SYSAUX01.DBF

RMAN> list copy of tablespace sysaux;


数据文件副本列表
关键字     文件 S 完成时间   Ckp SCN    Ckp 时间   名称
------- ---- - ---------- ---------- ---------- ----
11      3    A 24-9月 -09 1116790    24-9月 -09 D:\CATALOG\SYSAUX01.DBF

RMAN> transport tablespace xhtr tablespace destination 'd:\a' auxiliary destination
 'd:\b';
最后完成

可以 向前面那样 登陆 ORCL DB 然后执行脚本也可以 手动
.DMP ,和 导入脚本 ,EXPLOG (可以手动调整前面这些存储位置和名字), 还有 transport tablespace 的datafile DELAUTE 存在tablespace destination

C:\>set oracle_sid=orcl

C:\>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 9月 24 11:34:45 2009

Copyright (c) 1982, 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

SQL> col file_name format a30
SQL> col tablespace format a10
SQL> col tablespace_name format a10
SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE FILE_NAME
---------- ------------------------------
SYSTEM     E:\SYSDATAFILE2.DBF
TEST       D:\TEST.DBF
EXAMPLE    E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\EXAMPLE01.DBF

USERS      E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\USERS01.DBF

SYSAUX     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSAUX01.DBF


TABLESPACE FILE_NAME
---------- ------------------------------
UNDOTBS1   E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\UNDOTBS01.DBF

SYSTEM     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSTEM01.DBF

RMAN_TS    D:\RMAN_TS.DBF
TESTXH     E:\ORCLDATAFILE\TESTXH.DBF
XHTEST     D:\A\XHTEST.DBF

已选择10行。

SQL>
SQL> host mkdir d:\impdp

SQL> host copy d:\a\DMPFILE.DMP d:\impdp\dumpfile.dmp
已复制         1 个文件。

SQL> create directory implist as 'd:\impdp';
SQL>  host impdp  system/a831115 directory=implist dumpfile=dumpfile.dmp transport_
datafiles=d:\a\XHTR.DBF remap_schema=xh:system

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE FILE_NAME
---------- ------------------------------
SYSTEM     E:\SYSDATAFILE2.DBF
TEST       D:\TEST.DBF
EXAMPLE    E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\EXAMPLE01.DBF

USERS      E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\USERS01.DBF

SYSAUX     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSAUX01.DBF


TABLESPACE FILE_NAME
---------- ------------------------------
UNDOTBS1   E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\UNDOTBS01.DBF

SYSTEM     E:\ORACLE\PRODUCT\10.2.0\ORADA
           TA\ORCL\SYSTEM01.DBF

RMAN_TS    D:\RMAN_TS.DBF
TESTXH     E:\ORCLDATAFILE\TESTXH.DBF
XHTEST     D:\A\XHTEST.DBF
XHTR       D:\A\XHTR.DBF

已选择11行。

SQL> conn system/a831115
已连接。
SQL> select  * from t2;

         A
----------
         1

 

 

其他:

在执行transport  tablespace 命令时候 会产生DUMPFILE.DMP,impscrpt.SQL,EXPLOG.LOG  默认都是用这些名字 生成在 tablespace destination 位置,AUXILIXARY DB所用的辅

助文件'system,undo,sysaux ,COTROLFILE在 ' auxiliary destination位置
如果不想要  DUMPFILE.DMP,impscrpt.SQL,EXPLOG.LOG  在 tablespace destination位置可以改
DATAPUMP DIRECTORY XXXX
DUMP FILE 'XXX.dmp'
IMPORT SCRIPT. 'XXXX.sql'
EXPORT LOG 'XXXX.log';
另外 这个类似TSPITR 恢复 我们可以将要传输的表空间在auxiliary db中进行恢复,恢复到特定时间点是需加上until scn,until time ,until restore point 'XXX'(还原点)
 create restore point   V$RESTORE_POINT


 

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

请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    182
  • 访问量
    426861