重庆思庄Oracle、Redhat认证学习论坛
标题:
oracle 11g 传输表空间(数据迁移)
[打印本页]
作者:
sprain
时间:
2015-9-30 23:36
标题:
oracle 11g 传输表空间(数据迁移)
oracle 11g 传输表空间(数据迁移)
在同一台机器上实验,存储是ASM的。
Source 端:
库:OMS
用户:move01
表空间:ts01
Target 端:
库:DOMS
用户:move02
一、准备工作(建测试表空间、测试用户,赋权给用户):
Source 端:
SQL>create tablespace ts01 datafile '+DATAFILEDG' size 20M;
SQL>create user move01 identified by move01 default tablespace ts01;
SQL>grant connect,resource to move01;
SQL>grant read, write ON DIRECTORY backup TO move01;
在move01用户下建ts1表,插入测试数据,此步骤略过。
Target 端:
SQL>create user move02 identified by move02 ;
SQL>grant connect,resource to move02;
SQL>grant read, write ON DIRECTORY backup TO move02;
二、检查表空间自包含(就是改表空间里的数据没有和其他表空间数据有关联,如果
有关联会报错)
SQL> execute dbms_tts.transport_set_check('TS01', TRUE); --检测
SQL> select * from transport_set_violations; --查询结果(没有
记录说明没有错)
三、将表空间TS01设置成只读:
SQL> alter tablespace TS01 read only;
四、生成表空间集(包括expdp 导出的表空间的metadata和表空间对应的数据文件两
部分):
$ expdp dumpfile=ts01.dmp directory=backup
transport_tablespaces=ts01 transport_full_check=y logfile=TSET.log
Username: / as sysdba
。。。。。。
五、将Transportable Tablespace set 传送到Target端:
由于是同一台机器,所以expdp导出的表空间元数据就放在导出的文件所在的目录对
象(步骤一创建的backup)里;而表空间对应的数据文件则在asmcmd里用cp拷贝至目
标端的目录下。
六、在Target 系统上Import 表空间的metadata(使用move02用户,需要用到
remap_schema) :
$ impdp directory=backup dumpfile=ts01.dmp
transport_datafiles=+DATAFILEDG/ASM/DATAFILE/MOVE01.307.891772223
remap_schema=move01:move02 logfile=test.log
Username: / as sysdba
。。。。。。
七、结束验证,将表空间更改回读写。
Target 端:
SQL>select count(*) from move02.ts1;
Source 端:
alter tablespace ts01 read write;
总结:
1、在asmcmd里用cp拷贝数据文件时,asm到asm之间不能直接用数据文件原名,比如
:ASMCMD> cp +DATAFILEDG/OMS/DATAFILE/MOVE01.307.891772223
+DATAFILEDG/DOMS/DATAFILE/MOVE01.307.891772223 否则将报错!
而应该这样:
ASMCMD> cp +DATAFILEDG/OMS/DATAFILE/MOVE01.307.891772223
+DATAFILEDG/DOMS/DATAFILE/MOVE01
move01实际上是一个别名,实际对应的生成文件ASMCMD> ls -l可查询,如本例中的
查询结果显示:
move01 => +DATAFILEDG/ASM/DATAFILE/MOVE01.307.891772223
2、在导出导入时要用系统用户(sys或system都可)。但我在导出导入中以
expdp system/111111 ...impdp system/111111...这种方式却报错“ORA-39061: import mode TRANSPORTABLE conflicts with export mode SCHEMA”
最后在语句中去掉system/111111而在执行的提示中输入系统用户密码或直接输入"/ as sysdba"就通过了;郑老师的建议是expdp \'/ as sysdba\' ...impdp \'/ as sysdba\'也可以。而之前看的三思文档就是expdp system/111111 ...impdp system/111111...,后来又试了一次,结果还是报错------有点不明白。
3、本例是同一机器上同一存储结构上实验,如果是不同主机的异构平台还要转换字节顺序(参见三思笔记的convert)
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2