Oracle传输表空间迁移数据库

简介:

本文是通过exp/imp方式实现,需要将数据库表空间处于只读模式,对于实时应用的生产数据库,可以采用rman方式进行传输表空间,本文源与目标数据库均为oralce 10.2.0.5 for linux版本。
执行表空间传输有以下限制条件:    
(1)源数据库和目标数据库必须处于相同的平台,10g以后可以用RMAN命令修改数据文件实现跨平台移动表空间。    
(2)对于源数据库和目标数据库版本不同时,源数据库的版本必须低于目标数据库。    
(3)两边数据库字符集和国家字符集必须一致。    
(4)目标数据库不能存在同名的表空间。

1. 查询oracle支持的平台转换

SQL> col PLATFORM_NAME for a40;   
SQL> select * from v$transportable_platform order by 3;

PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT   
----------- ---------------------------------------- --------------    
          6 AIX-Based Systems (64-bit)               Big    
         18 IBM Power Based Linux                    Big    
          2 Solaris[tm] OE (64-bit)                  Big    
          4 HP-UX IA (64-bit)                        Big    
         16 Apple Mac OS                             Big    
          1 Solaris[tm] OE (32-bit)                  Big    
          9 IBM zSeries Based Linux                  Big    
          3 HP-UX (64-bit)                           Big    
         17 Solaris Operating System (x86)           Little    
         20 Solaris Operating System (x86-64)        Little    
         12 Microsoft Windows x86 64-bit             Little    
         13 Linux x86 64-bit                         Little    
          8 Microsoft Windows IA (64-bit)            Little    
         19 HP IA Open VMS                           Little    
         11 Linux IA (64-bit)                        Little    
          5 HP Tru64 UNIX                            Little    
         10 Linux IA (32-bit)                        Little    
          7 Microsoft Windows IA (32-bit)            Little    
         15 HP Open VMS                              Little

 

2. 创建测试表空间和测试用户、表

SQL> create tablespace tjoa datafile '/u01/app/oracle/oradata/orcl/tjoa.dbf' size 10m autoextend on next 10m;   
SQL> create user abc identified by abc default tablespace TJOA;    
SQL> grant connect,resource to abc;    
SQL> conn abc/abc    
SQL> create table t as select * from all_objects;

 

3. 检查自包含性

SQL> conn / as sysdba   
SQL> execute dbms_tts.transport_set_check(ts_list=>'TJOA',incl_constraints=>TRUE);    
SQL> select * from transport_set_violations;

设置表空间只读

SQL> alter tablespace TJOA read only;   
SQL> select tablespace_name, status from dba_tablespaces where tablespace_name = 'TJOA';

TABLESPACE_NAME                STATUS   
------------------------------ ---------    
TJOA                           READ ONLY

SQL>

 

4. 执行导出

exp \'/ as sysdba \' file=tjoa.dmp transport_tablespace=y tablespaces=TJOA buffer=10240000

通过expdp方式:   
expdp \'/ as sysdba \' dumpfile=tjoa.dmp directory=dump_dir transport_tablespaces=TJOA

 

5. 源库将表空间设置为读写状态

SQL> alter tablespace TJOA read write;

 

6. 模拟平台转换

windows/linux平台字节序同为Little都不需要转换,10g及以上版本的数据文件可以直接拷贝。

使用rman的convert命令转换文件示例如下:   
$ rman target /    
RMAN> convert tablespace TJOA to platform 'Linux IA (32-bit)' format '/u01/%U';

 

7. 复制表空间转换后的数据文件及导出文件到目标平台

scp tjoa.dmp 192.168.233.160:/home/oracle    
scp tjoa.dbf 192.168.233.160:/u01/app/oracle/oradata/orcl/

 

8. 先在目标数据库创建用户abc

SQL> create user abc identified by abc;   
SQL> grant connect,resource to abc;

 

9. 导入表空间

imp \'/ as sysdba \' file=tjoa.dmp transport_tablespace=y tablespaces=TJOA datafiles=/u01/app/oracle/oradata/orcl/tjoa.dbf

通过impdp方式:   
impdp \'/ as sysdba \' dumpfile=tjoa.dmp directory=dump_dir transport_datafiles=/u01/app/oracle/oradata/orcl/tjoa.dbf remap_schema=tjoa:tjoa

 

10. 目标库配置

SQL> alter user abc default tablespace TJOA;   
SQL> select tablespace_name, status from dba_tablespaces where tablespace_name = 'TJOA';    
SQL> alter tablespace TJOA read write;

SQL> conn / as sysdba;   
Connected.    
SQL> alter user abc default tablespace TJOA;

User altered.

SQL> select tablespace_name, status from dba_tablespaces where tablespace_name = 'TJOA';

TABLESPACE_NAME                STATUS   
------------------------------ ---------    
TJOA                           READ ONLY

SQL>    
SQL>     
SQL> alter tablespace TJOA read write;

Tablespace altered.

SQL>    
SQL> select tablespace_name, status from dba_tablespaces where tablespace_name = 'TJOA';

TABLESPACE_NAME                STATUS   
------------------------------ ---------    
TJOA                           ONLINE

SQL>



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

相关文章
|
15天前
|
弹性计算 安全 关系型数据库
活动实践 | 自建数据库迁移到云数据库
通过阿里云RDS,用户可获得稳定、安全的企业级数据库服务,无需担心数据库管理与维护。该方案使用RDS确保数据库的可靠性、可用性和安全性,结合ECS和DTS服务,实现自建数据库平滑迁移到云端,支持WordPress等应用的快速部署与运行。通过一键部署模板,用户能迅速搭建ECS和RDS实例,完成数据迁移及应用上线,显著提升业务灵活性和效率。
|
8天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
41 11
|
21天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
27天前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
14天前
|
安全 关系型数据库 MySQL
体验自建数据库迁移到云数据库RDS,领取桌面置物架!
「技术解决方案【Cloud Up 挑战赛】」正式开启!本方案旨在帮助用户将自建数据库平滑迁移至阿里云RDS MySQL,享受稳定、高效、安全的数据库服务,助力业务快速发展。完成指定任务即可赢取桌面置物架等奖励,限量供应,先到先得。活动时间:2024年12月3日至12月31日16点。
|
14天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
7月前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
197 2
|
Oracle 关系型数据库 数据库
9-4 Oracle管理表空间和数据文件
9-4 Oracle管理表空间和数据文件
126 0
|
Oracle 关系型数据库
Oracle管理表空间和数据文件
Oracle管理表空间和数据文件
206 0
|
Oracle 关系型数据库 数据库
Oracle 快速创建 N 个表空间数据文件
Oracle 数据库是由无数个表空间组成,表空间是由无数个数据文件组成,数据文件存放在磁盘中。

推荐镜像

更多