跨平台表空间传输(linux 10g表空间跨平台迁移到window 11g)

简介:

 最近公司的一个项目里的linux 系统中的oracle 10g数据库,需要把某个表空间里的所有数据都迁移到window 2003的11g里,经过我与dba的交流、测试,决定使用跨平台的表空间传输技术,目前此项任务已经完成,经过测试,没有问题,下面是我为此项任务做的测试,此次是做linux(oracle 10g)对window (oracle 11g)做跨平台表空间传输(同字节顺序)需要注意:

         对于导出文件dmp来说,Oracle实现了跨平台的处理,即在任何一个可运行的平台上,都能使用imp将其导入,但是对于表空间所包含的数据文件而言,各个平台上是不一样的,包含不能通过简单的复制来处理。数据文件不是独立于OS的。

传输表空间移动数据速度非常快。
 
使用前提:
 
1.源和目标数据库使用相同的字符集(也就是说little endian与big engian);
 
2.目标数据库不能有和源表空间相同的表空间;
 
3.源和目标数据库拥有相同的块大小;
 
4.必须传输自包含的对象集;
 
5.源和目标数据库运行的硬件平台必须相同;

下图是我的环境

一、环境检查

1、检查linux平台的环境

 
  1. [root@master ~]# su - oracle  
  2. [oracle@master ~]$ sqlplus sys/dl528888@10.1.88.188:1521/bgtp as sysdba  
  3.  
  4. SQL*Plus: Release 10.2.0.1.0 - Production on Wed May 16 09:33:01 2012  
  5.  
  6. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  7.  
  8.  
  9. Connected to:  
  10. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production  
  11. With the Partitioning, OLAP and Data Mining options  
  12. SQL> select instance_name,host_name,version from v$instance where rownum < 2;  
  13.  
  14. INSTANCE_NAME    HOST_NAME                            VERSION  
  15. ---------------- ---------------------------------------------------------------- -----------------  
  16. BGTP         master                               10.2.0.1.0  

2、检查windows平台的环境

 
  1. [oracle@master dbs]$ sqlplus sys/dl528888@10.1.88.191:1521/bgtp as sysdba  
  2.  
  3. SQL*Plus: Release 10.2.0.1.0 - Production on Wed May 16 09:22:58 2012  
  4.  
  5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  6.  
  7.  
  8. Connected to:  
  9. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production  
  10. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  11.  
  12. SQL> select instance_name,host_name,version from v$instance where rownum < 2;  
  13.  
  14. INSTANCE_NAME    HOST_NAME                            VERSION  
  15. ---------------- ---------------------------------------------------------------- -----------------  
  16. bgtp         ADMIN-F99B9A60C                          11.2.0.1.0  

二、字节顺序检查

1、linux平台的

通过v$transportable_platfrom与v$database来查看本地平台的字节顺序
 
  1. SQL> select d.platform_name,endian_format from v$transportable_platform tp, v$database d where tp.platform_name = d.platform_name;   
  2.  
  3. PLATFORM_NAME                ENDIAN_FORMAT  
  4. ---------------------------------------- --------------  
  5. Linux 64-bit for AMD             Little  

2、windows平台的

 
  1. SQL> select d.platform_name,endian_format from v$transportable_platform tp, v$database d where tp.platform_name = d.platform_name;  
  2.  
  3. PLATFORM_NAME                                                 ENDIAN_FORMAT  
  4. ----------------------------------------------------------------------------------------------------- --------------  
  5. Microsoft Windows IA (32-bit)                                         Little  

三、进行准备工作

1、在linux平台里先建立dl表空间

 
  1. SQL> create tablespace dl logging datafile '/home/oracle/oradata/BGTP/dl_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local;  
  2.  
  3. Tablespace created.  

2、创建dl用户默认dl表空间

 
  1. SQL> create user dl identified by dl default tablespace dl;
  2. User created.

3、查看dl用户所属的表空间

 
  1. SQL> select username,default_tablespace,temporary_tablespace from dba_users where username='DL';  
  2.  
  3. USERNAME         DEFAULT_TABLESPACE         TEMPORARY_TABLESPACE  
  4. -------------------- ------------------------------ ------------------------------  
  5. DL           DL                 TEMP  

4、连接用户

 
  1. SQL> conn dl/dl  
  2. Connected.  
  3. SQL> show user  
  4. USER is "DL"  

5、创建测试表dl_test

 
  1. SQL> create table dl_test as select * from dict;  
  2.  
  3. Table created.  
  4. SQL> select count(*) from dl_test;  
  5.  
  6.   COUNT(*)  
  7. ----------  
  8.       1870  

四、进行传输

1、查看数据文件的位置

 
  1. SQL> select file_name from dba_data_files where tablespace_name='DL';  
  2.  
  3. FILE_NAME  
  4. ------------------------------------------------------------------------------------------------------------------------------------------------------  
  5. /home/oracle/oradata/BGTP/dl_data.dbf  

2、然后进行压缩数据文件

 
  1. SQL> !  
  2. [oracle@master ~]$ cd /home/oracle/oradata/BGTP/  
  3. [oracle@master BGTP]$ ll  
  4. total 1056712  
  5. -rw-r----- 1 oracle oinstall   7061504 May 16 10:07 control01.ctl  
  6. -rw-r----- 1 oracle oinstall   7061504 May 16 10:07 control02.ctl  
  7. -rw-r----- 1 oracle oinstall   7061504 May 16 10:07 control03.ctl  
  8. -rw-r----- 1 oracle oinstall  52436992 May 16 10:05 dl_data.dbf  
  9. -rw-r----- 1 oracle oinstall  52429312 May 15 22:00 redo01.log  
  10. -rw-r----- 1 oracle oinstall  52429312 May 16 07:01 redo02.log  
  11. -rw-r----- 1 oracle oinstall  52429312 May 16 10:07 redo03.log  
  12. -rw-r----- 1 oracle oinstall 314580992 May 16 10:07 sysaux01.dbf  
  13. -rw-r----- 1 oracle oinstall 503324672 May 16 10:07 system01.dbf  
  14. -rw-r----- 1 oracle oinstall  20979712 May 15 22:00 temp01.dbf  
  15. -rw-r----- 1 oracle oinstall  26222592 May 16 10:07 undotbs01.dbf  
  16. -rw-r----- 1 oracle oinstall   5251072 May 16 07:06 users01.dbf  
  17. [oracle@master BGTP]$ tar zcf dl_data.tar.gz  dl_data.dbf  
  18. [oracle@master BGTP]$ du -sh dl_data.dbf   
  19. 51M dl_data.dbf  
  20. [oracle@master BGTP]$ du -sh dl_data.tar.gz   
  21. 180K    dl_data.tar.gz  

3、使用exp导出dl表空间

导出之前,先查看表空间dl是否有self-contained(自包含),通过系统包dbms_tts来检查表空间是否自包含,如果有的话,就不能进行传输
先进行非严格方式(full_check=false)
 
  1. SQL> exec sys.dbms_tts.transport_set_check('DL',TRUE);  
  2.  
  3. PL/SQL procedure successfully completed.  
  4.  
  5. SQL> select * from sys.transport_set_violations;  
  6.  
  7. no rows selected  
进行严格方式
 
  1. SQL> exec sys.dbms_tts.transport_set_check('DL',TRUE,true);  
  2.  
  3. PL/SQL procedure successfully completed.  
  4.  
  5. SQL> select * from sys.transport_set_violations;  
  6.  
  7. no rows selected  
这表示该表空里的对象集是自包含的(对象及其索引都在此表空间中)
下面可以进行exp了
4、在进行exp导出之前,先把dl表空间设为只读
 
  1. SQL> conn / as sysdba  
  2. Connected.  
  3. SQL> show user  
  4. USER is "SYS"  
  5. SQL> alter tablespace dl read only;  
  6.  
  7. Tablespace altered.  
  8.  
  9. [oracle@master tmp]$ exp userid=\'sys/dl528888 as sysdba\' tablespaces=DL transport_tablespace=y file=/tmp/dl.dmp  
  10.  
  11. Export: Release 10.2.0.1.0 - Production on Wed May 16 10:29:47 2012  
  12.  
  13. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  14.  
  15.  
  16. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production  
  17. With the Partitioning, OLAP and Data Mining options  
  18. Export done in US7ASCII character set and AL16UTF16 NCHAR character set  
  19. server uses ZHS16GBK character set (possible charset conversion)  
  20. Note: table data (rows) will not be exported  
  21. About to export transportable tablespace metadata...  
  22. For tablespace DL ...  
  23. . exporting cluster definitions  
  24. . exporting table definitions  
  25. . . exporting table                        DL_TEST  
  26. . exporting referential integrity constraints  
  27. . exporting triggers  
  28. . end transportable tablespace metadata export  
  29. Export terminated successfully without warnings.  
  30. [oracle@master tmp]$ ll dl.dmp   
  31. -rw-r--r-- 1 oracle oinstall 16384 May 16 10:29 dl.dmp  
  32. [oracle@master tmp]$ du -sh dl.dmp   
  33. 20K dl.dmp  
导出成功
5、然后把dl_data.tar.gz与dl.dmp都传输到window的平台上
 
  1. [oracle@master tmp]$ ll dl*  
  2. -rw-r--r-- 1 oracle oinstall 174677 May 16 10:08 dl_data.tar.gz  
  3. -rw-r--r-- 1 oracle oinstall  16384 May 16 10:29 dl.dmp  
6、然后把这2个文件传输到window平台的e:\soft目录下对dl_data.tar.gz进行解压

7、然后在window平台上建立用户dl

8、然后进行imp导入

9、然后查看dl_test表数据是否正确

10、在查看linux里的dl_test表里的数据

可以看得2者的数据都一致,所以此次跨平台表空间传输成功

11、最后再将dl表空间设置为读写模式,然后就可以进行正常的数据操作了

这样就完成了跨平台传输表空间,这种方法很方便、而且快速,以后将作为我公司oracle的数据迁移的方案之一!



 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/865850,如需转载请自行联系原作者





相关文章
|
1月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux vsFTPd服务详解——文件加密传输配置
Linux vsFTPd服务详解——文件加密传输配置
143 2
|
5月前
|
存储 NoSQL Redis
【Redis】安装(Linux&window)及Redis的常用命令
【Redis】安装(Linux&window)及Redis的常用命令
104 0
|
6月前
|
移动开发 小程序 Linux
【Linux】Linux和Window下\r与\n的区别、git命令行的使用
目录 1. 回车换行符在Window下和在Linux下的区别: 1.1回车换行符: 1. 2.行缓冲区打印: 1.3进度条小程序 :
105 0
|
7月前
|
Java Linux 数据安全/隐私保护
jdk21(最新版) download 配置(linux window mac)
不同系统使用最新版jdk后续持续更新 可评论区提问
1651 0
|
6月前
|
安全 Linux 网络安全
在Linux中传输文件文件夹的10个scp命令
本文为转载,原文链接为:https://mp.weixin.qq.com/s/IPFNwPiWioMPAix51hrXzg
|
5月前
|
Linux 异构计算
HMI-66-【MeterDisplay for Arm Linux】液晶仪表Arm Linxu迁移
先说结论,虽然移植成功,但是显示效果不理想,可以直接看和面的视频。先说说做了什么吧。
HMI-66-【MeterDisplay for Arm Linux】液晶仪表Arm Linxu迁移
|
1月前
|
安全 Linux 网络安全
|
6月前
|
人工智能 弹性计算 并行计算
操作系统迁移难?Alibaba Cloud Linux 支持跨版本升级 | 龙蜥技术
无需担心数据丢失,无需考虑如何解决在升级后同步问题。
|
6月前
|
Linux
迁移Linux服务器用户数据
迁移Linux服务器用户数据
55 0