oracle 表空间转换,Oracle 表空间迁移

平台必须支持表空间迁移(v$transportable_platform)

convert tablespace只能在源端执行

convert datafile :只要能连接到源端就可以

convert database :必须在源端,且源端数据库必须出于read only,此为源端和目标端endian format必须一致。

convert:不会传输用户自定义类型

前提:

目标库安装好数据库软件及实例。

源库oracle版本低于或等于目标库。

源库和目标库字符集限制

1、检查需要迁移的表空间是否支持表空间迁移

SQL> exec

sys.dbms_tts.transport_set_check('TEST_TB',true);

SQL> select * from

sys.transport_set_violations;

no rows selected

--如果查询不到数据,则该表空间支持表空间迁移,否则不支持。

比如有一个table在表空间A里,其上的一个index在表空间B里。

那么对于表空间A,其中的对象不依赖表空间外的对象,所以是个自包含,但是表空间以外的index却依赖表空间内的对象,不是一个完全自包含。再表空间迁移表空间可以完全,但是index在表空间迁移会丢失,反过来,对于表空间B,表空间里的对象INDEX是依赖表空间A里的TABLE对象的。所以这里不满足自包含条件。表空间迁移也就会出现问题。

2、检查源平台与目标平台信息支是否支持传输操作

SQL> select platform_name,endian_format

from v$transportable_platform;

SQL> select

d.platform_name,endian_format from v$transportable_platform tp,v$database d

where tp.platform_name=d.platform_name ;

如果2端平台字节顺序不一致,则在传输时需要转换字节顺序。

3、表空间设置为只读模式

SQL> alter tablespace test_tb read only;

4、源端创建数据泵目录

SQL> create directory dmp as

'/home/oracle/dir_dmp/';

SQL> grant read ,write on directory dmp

to test;

5、创建传输表空间的元数据dump文件

[oracle@db ~]$ expdp \'sys/310012 as

sysdba\' directory=dmp dumpfile=test_tb.dmp logfile=test_tb.log

transport_tablespaces=test_tb

6、如跨平台需转换字节顺序,则先转换数据文件

注意:如果字节顺序一致,可跳过此步。

[oracle@db ~]$ rman

target /

RMAN> convert

tablespace test_tb to platform 'Microsoft Windows IA (64-bit)' format

'/home/oracle/backup/%U';

7、拷贝表空间元数据dump文件和数据文件到目标端

操作系统拷贝文件(可使用scp或者ftp)

8、目标端创建数据泵目录

SQL> create directory dmp as

'/OracleBackup/dir_dmp/';

9、传输的表空间附加到目标数据库

创建表空间所需要附加到的用户

create user u1 identified by u1;

[oracle@zytk35 ~]$ impdp \'sys/310012 as

sysdba\' directory=dmp dumpfile=test_tb.dmp transport_datafiles=/OracleBackup/dir_dmp/test_tb.266.887909987,/OracleBackup/dir_dmp/test_tb.267.887913297

remap_schema=test:u1

注意:数据文件名称和路径即为这边的文件名,这边可通过RMAN进行修改调整

10、验证源库和目标库数据一致性

SQL> select

owner,segment_name,segment_type,tablespace_name from dba_segments where tablespace_name

= 'TEST_TB';

SQL> select

owner,segment_name,segment_type,tablespace_name from dba_segments where owner =

'TEST';

分析源库和目标库中表的数据

由于:T1表的索引对象再表空间USERS中,表空间迁移后丢失了索引对象,需要重建。

11、把表空间改为读写模式

SQL> alter tablespace test_tb read

write;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值