【IT168 技术文档】一个月前,在某种场合下,有人问我transport tablespace ,当时我没说清楚,甚是尴尬。。于是当时回来就立刻找了相关资料,现把资料和大家一起分享有关transport tablespace的测试全过程。transport tablespace 测试全过程,数据库oracle9.2.0.4,操作系统平台HP
1.建立测试表空间
create tablespace tts_test datafile '/dev/vgjs03/rjsdata00274' size 2046m reuse extent management local uniform size 1m;
2.建立测试表
create table tts_test( a number(10), b number(10) )tablespace tts_test;
3.往测试表中灌数据
variable i number; begin for i in 1..30000 loop insert into tts_test(a,b) values(i,i+1); end loop; commit; end;
4.检测测试表空间的完整性
execute dbms_tts.transport_set_check('tts_test', true);
若报过程dbms_tts.transport_set_check不存在,则用sys的数据库用户执行脚本"$ORACLE_HOME/rdbms/admin/dbmsplts.sql"建立之.
5.将要测试的表空间改为只读
alter tablespace tts_test read only;
6.导出元数据
exp 'sys/password@cntjs as sysdba' transport_tablespace=y tablespaces=tts_test file=tts.dmp log=tts_e.log
7.使用dd命令拷贝出裸设备的数据
dd if=/dev/vgjs03/rjsdata00274 of=raw_device ibs=1024 obs=1024
8.删除测试的表空间
drop tablespace tts_test including contents;
9.使用dd命令将7中拷贝出的文件重新拷到裸设备中
dd if=raw_device of=/dev/vgjs03/rjsdata00274 ibs=1024 obs=1024
10.使用imp导入测试表空间
imp 'sys/password@cntjs as sysdba' transport_tablespace=y tablespaces=tts_test file='/oracle_export/changqr/tts.dmp' datafiles='/dev/vgjs03/rjsdata00274' tts_owners=supp fromuser=supp touser=supp log=tts_i.log
11.将测试表空间改为可读写
alter tablespace tts_test read write;
以上步骤,已经在江苏数据库上测试通过.
关键点:
1.一定要保证所要导出表空间中数据的完备性,具体定义参见oracle的官方文档.
2.在表空间改为只读后明确有几个用户的数据在此表空间上.