如何迁移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;

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2025-01-12 12:55:18

如何迁移Oracle表空间的相关文章

利用PL\SQL实现Oracle表空间的迁移

在9i的时候,表空间的迁移使用EXP/IMP来实现.在10g中,除了使用EXP/IMP之外,还可以使用数据泵EXPDP/IMPDP,以及RMAN的命令TRANSPORT TABLESPACE命令,除此之外,还可以通过PL/SQL包DBMS_STREAMS_TABLESPACE_ADM来实现. 这一篇介绍PULL_SIMPLE_TABLESPACE过程. Oracle的DBMS_STREAMS_TABLESPACE_ADM包提供了8个过程:ATTACH_TABLESPACES.ATTACH_SIM

Oracle表空间传输

Oracle表空间传输是8i 新增加的一种快速在数据库间移动数据的一种办法,是把一个数 据库上的格式数据文件附加到另外一个数据库中,而不是把数据导出成dmp 文件,这 在有些时候是非常管用的,因为传输表空间移动数据就象复制文件一样快. 1.关于传输表空间有一些规则(10g前): · 源数据库和目标数据库必须运行在相同的硬件平台上. [ Oracle备份与恢复总结] E-Mail / MSN : db.dw.dm@gmail.com [ Oracle备份与恢复总结] E-Mail / MSN :

Oracle表空间名称是区分大小写

今天在通过imp导入数据时,日志提示TS_W5_D表空间不存在.感觉很奇怪,导入用户的表空间是ts_w5_d,并且这个表空间也存在啊. 为什么还是提报表空间不存在呢? 并且,当时试图通过>drop tablespace ts_w5_d 时,提示ts_w5_d 表空间不存在,明明有啊,怎么说不存在? 排查了半天,最终得知,oracle表空间名称分大小写的:TS_W5_D.ts_w5_d 是两个表不同的表空间. Oracle数据库内部是对大小写不敏感的,默认全是大写.如果需要小写需要使用双引号强制(

数据库-oracle表空间修改后导出,然后导入修改好的表空间,导入失败,显示导入的表空间还是不存在!

问题描述 oracle表空间修改后导出,然后导入修改好的表空间,导入失败,显示导入的表空间还是不存在! 我原先的数据库的表空间是XMGL,然后我修改了一张表,将其表空间修改为了 WGP,然后导出,然后通过一台服务器,这台服务器的表空间就是 WGP,然后导入就报错 报错说是 XMGL不存在,问题是我原先导出前已经修改了表空间,导出还是原先的表空间,求解,数据库我也重启了,还是不行,求大神! 解决方案 参考Import: Tablespace does not exist tips 你的表里面有CL

Oracle 表空间时点恢复(TSPITR)

表空间时点恢复,是Oracle在基于冷备,热备恢复以外的一种以表空间为粒度的,不完全恢复的形式来将表空间恢复到过去某个特定的时间点的一种恢复方式.它整合了RMAN以及DataPump这2个备份恢复工具来实现时点恢复.那它具体的过程和逻辑是怎样的?下文是其具体的描述. 一.什么是表空间时点恢复 Oracle表空间时点恢复有2个需要理解的概念. 恢复粒度   表空间级别,也就是说恢复的粒度是以表空间为单位 时点恢复   时点恢复意味着是一个不完全恢复.也就是说可以把某个或几个表空间恢复到过去的特定时

Oracle 表空间与数据文件

--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念     表空间:是一个或多个数据文件的逻辑集合     表空间逻辑存储对象:永久段-->如表与索引                         临时段-->如临时表数据与排序段                      回滚段-->用于事物回滚或闪回内存的撤销数据     表空间分类:系统表空间(sys

Oracle 表空间查询与操作方法_oracle

一.查询篇 1.查询oracle表空间的使用情况 select b.file_id 文件ID, b.tablespace_name 表空间, b.file_name 物理文件名, b.bytes 总字节数, (b.bytes-sum(nvl(a.bytes,0))) 已使用, sum(nvl(a.bytes,0)) 剩余, sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比 from dba_free_space a,dba_data_files b where a.

六分钟学会创建Oracle表空间的实现步骤_oracle

经过长时间学习创建Oracle表空间,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西. 1.先查询空闲空间 复制代码 代码如下: select tablespace_name,file_id,block_id,bytes,blocks from dba_free_space; 2.增加Oracle表空间 先查询数据文件名称.大小和路径的信息,语句如下: 复制代码 代码如下: select tablespace_name,file_id,bytes,file_name fr

Oracle表空间查看sql使用情况_oracle

DBA在日常工作中,最重要的一点就是查看表空间的使用情况,去了解是否有表空间满了的情况出现. 具体方法和步骤如下所示: 第一步:打开PLSQL 第二步:新建一个SQL窗口 第三步:输入代码: select a.tablespace_name tablespace_name ,nvl(ceil((1 - b.free / a.total) * 100), 100) "usage_of_tablespace%" ,nvl(b.free, 0) "left_space(M)&quo