Oracle教程之Oracle表空间的迁移
原创
©著作权归作者所有:来自51CTO博客作者Oracle小混子的原创作品,请联系作者获取转载授权,否则将追究法律责任
可迁移的表空间是为了将数据从一个DB移到另一个DB而定义的。迁移的基本概念是从数据字典中卸出表和表空间的定义,将该表空间下的数
据文件复制到目标服务器的目录下,再装入表和表空间的定义。这种方法可将大量的数据从一个DB移到另一个DB,是一种较快并且有效的方
法。表和索引都可以使用此方法进行迁移。
迁移时的限制:
1.源和目标DB必须是oracle8i以上的版本;
2.源和目标DB必须在相同的硬件和OS平台上;
3.源和目标DB的块尺寸应该一样;
4.目标DB中不能存在与源DB中要迁移的表空间相同名字的表空间;
5.要迁移的表空间应该是个自包含的表空间,即该表空间中的对象不能参考别的表空间中的对象。例如:表空间包含一个索引,该索引所
在的表也应该在该表空间中;
6.要迁移的表空间如果包含分区表,则所有分区都必须在该表空间下。
迁移的步骤:
1.检查表空间是否是自包含:
Execute sys.dbms_tts.transport_set_check(‘tablespace_name1,…’,true);
Select * from sys.transport_set_violations;
如果在执行完select后,显示“no rows selected”则表明为自包含表空间。
2.设置表空间为只读
Alter tablespace tablespace_name read only;
3.用EXPORT生成元数据卸出文件
exp file=xx.dmp transport_tablespace=y tablespaces=(tablespace_name,…) constraints=n
4.查询该表空间所对应的数据文件
select file_name,tablespace_name from dba_data_files where tablespace_name='tablespace_name’;
5.复制数据文件到目标DB的相应目录
6.修改表空间为可读写
Alter tablespace tablespace_name read write;
7.用IMPORT导入
imp file=xxx.dmp transport_tablespace=y tablespaces=tablespace_name datafiles=('/path') fromuser=('user_name') touser=
('user_name')
其中只有transport_tablespace和datafiles语句是必须提供的。如果没有指定tablespaces或tts_owners,则认为这些关键字的值与卸出文
件中的关键字相同。如没有指定fromuser和touser,则oracle将这些对象装入与源DB中拥有这些对象的用户名相同的用户中。目标DB中必须
已经存在同名用户。
8.将表空间改为可读写
Alter tablespace tablespace_name read write;
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章