【赵渝强老师】使用Oracle可传输的表空间迁移数据

简介: Oracle可传输表空间通过物理拷贝数据文件+导出/导入元数据,实现高效跨库迁移。相比传统exp/imp,大幅提速,但要求表空间自包含,且源目标端字符集、OS、版本须一致。

b461.png

在Oracle数据库中,可以使用export/import的方式来传输数据。在导出/导入时都需要解析数据内容,如果需要传输的数据比较大,那么这是一个非常耗时的过程。Oracle可传输的表空间的思想就是通过绕过这个数据处理过程来提速。通过数据定义(元数据)和数据内容(业务数据)分离的方式,将数据内容通过文件拷贝(物理移动)来达到快速移动的目的。视频讲解如下:


由于可传输表空间底层是文件拷贝,因此它在兼容性上没有数据导出/导入广泛,在应用场景上有如下限制:

  • 表空间必须是自包含的(Self-contained),即表空间中对象不依赖其他表空间中的内容。
  • 目标系统的字符集、操作系统、数据库版本必须和源系统一致。

Oracle可传输的表空间是数据迁移的最佳方式,它是一种以文件为单位的数据移动技术,具体的操作步骤如下:

(1)使用管理员登录,创建测试表空间和测试用户。

SQL> create tablespace mytbs datafile '/u01/app/oracle/oradata/ORCL/mytbs01.dbf' size 100M;
SQL> create user c##myuser identified by Welcome_1 default tablespace mytbs;
SQL> grant resource, connect to c##myuser;
SQL> alter user c##myuser quota unlimited on mytbs;

(2)切换到c##myuser用户创建测试表

SQL> conn c##myuser/Welcome_1
SQL> create table test1(id integer,name varchar(10));
SQL> insert into test1 values(1,'Tom');
SQL> commit;

(3)切换到管理员用户,检查表空间是否是自包含

SQL> conn / as sysdba
SQL> exec dbms_tts.transport_set_check('MYTBS', true); 
SQL> select * from transport_set_violations;
# 在开始传输前,先检查表空间是否是自包含的。
# Oracle提供了dbms_tts.transport_set_check()存储过程来检查,
# 这个存储过程不会返回任何结果,
# 是否冲突需要通过视图transport_set_violations查询。
# 如果不返回任何结果,则表示表空间是自包含的就可以移动数据了。

(4)将表空间置于只读状态

SQL> alter tablespace mytbs read only;
# 由于需要拷贝底层的数据文件,而在拷贝过程中不允许有事务对表空间进行修改,
# 因此需要将表空间置于只读模式。这个要求对于OLTP系统可能有点苛刻,
# 可以建立一个专门表空间专门进行数据传输,这样可以不影响正常业务的运行。

(5)导出表空间的元数据

exp \"/ as sysdba\" transport_tablespace=y tablespaces=mytbs file=mytbs.dmp
# 元数据是指表空间中对象的定义数据,它们存在数据字典中,和表中的普通业务数据是分离。
# 因此拷贝表空间文件不会包含元数据,元数据依然需要通过导出/导入的方式来移动。
# transport_tablespace=y表示仅导出表空间的元数据,这个文件非常小。

(6)拷贝表空间的数据文件

# 获取表空间对应的数据文件
SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='MYTBS';
# 输出的信息如下:
TABLESPACE FILE_NAME
---------- --------------------------------------------------
MYTBS    /u01/app/oracle/oradata/ORCL/mytbs01.dbf
# 这里由于只有一个数据库,新建一个目录来模拟另一个系统
mkdir /u01/app/oracle/oradata/NEWORCL/
# 将表空间所包含的数据文件和第(4)步导出的元数据文件拷贝到目标系统,:
cp /u01/app/oracle/oradata/ORCL/mytbs01.dbf /u01/app/oracle/oradata/NEWORCL/

(7)完成数据文件的拷贝后,第(3)步中被设置为只读表空间就可以恢复读写状态了:

SQL> alter tablespace mytbs read write;

(8)在目标系统导入元数据

# 这里由于是在同一个库演示,先将原表空间及文件删除,避免冲突。
SQL> drop tablespace mytbs including contents and datafiles;
# 将第二步导出的元数据在目标系统导入即可。
使用imp命令导入元数据,这里需要提供要加载数据文件。
imp \"/ as sysdba\" transport_tablespace=y tablespaces=mytbs file=mytbs.dmp datafiles=/u01/app/oracle/oradata/NEWORCL/mytbs01.dbf

(9)导入后再次查询dba_data_files表,确定表空间指向的是新数据文件,确定导入成功。

SQL> select tablespace_name, file_name from dba_data_files where tablespace_name='MYTBS';

(10)导入后的表空间是只读的。如果要更新,则要将其改为读写状态。

SQL> alter tablespace mytbs read write;

(11)验证数据是否迁移成功。

相关文章
|
4月前
|
SQL 算法 关系型数据库
【MySQL百日打怪升级第10天】JOIN的底层原理与优化:NLJ、Hash Join 与 Merge Join
本文系统解析MySQL三大JOIN算法:NLJ(含Simple/Index/Block变体)、8.0.18引入的Hash Join(O(N+M)复杂度,专治无索引大表连接),以及面试常考但MySQL原生不支持的Sort-Merge Join,附实战EXPLAIN识别与优化指南。(239字)
406 5
|
2月前
|
人工智能 监控 测试技术
银行业AI架构:从裸调API到六层技能体系
# 银行AI智能体架构实战:从单体到Skill协同的技术演进 ## 痛点:银行IT架构的三重困境 走在任何一家银行的科技部走廊里,你都能听到同样的叹息:系统又慢了、需求又排不上、监管又来查了。这不是某一家银行的困境,而是整个银行业IT架构的共性问题。我们把它拆解为三重困境。 **困境一:单体系
|
2月前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
4236 146
|
4月前
|
人工智能 BI API
切换 kimi-k2.6 多版本时,​D​М‌X​Α‌РΙ 的稳调实录
`kimi-k2.6` 是Kimi系列从“高质量回答”迈向“可持续执行”的平台级升级:支持256k上下文、原生多模态、thinking/non-thinking双模式及对话/Agent双任务形态。其核心价值在于将业务意图拆解为可落地的多步子任务,并通过工具链交付网页、文档、报表等成果。搭配DMXAPI统一接入层,可实现稳定、可观测、可治理的生产级调用,真正成为嵌入企业流程的执行中枢。(239字)
|
2月前
|
数据采集 人工智能 缓存
为什么你的推荐系统越做越“笨”?一文讲透电商个性化推荐全链路:从召回到在线排序
为什么你的推荐系统越做越“笨”?一文讲透电商个性化推荐全链路:从召回到在线排序
338 3
|
2月前
|
消息中间件 关系型数据库 Serverless
阿里云函数计算对接使用完全指南:从零搭建Serverless应用
本文提供完整的阿里云函数计算对接指南,涵盖开通服务、创建服务与函数、配置HTTP/OSS/定时/API网关触发器、连接RDS数据库、环境变量与层管理、Python代码实战、冷启动优化、监控链路追踪以及成本分析。通过单引号代码示例和详细配置说明,帮助开发者快速上手Serverless架构。
|
2月前
|
搜索推荐 API 开发工具
阿里云信息查询服务(IQS)对接完全指南:从开通到生产级集成
本文提供了一份完整的阿里云信息查询服务(IQS)对接指南。IQS是专为AI大模型设计的开放域搜索解决方案,提供毫秒级响应和智能优化的搜索接口[reference:0]。文章从服务开通、凭证获取讲起,详细介绍了HTTP API和SDK两种调用方式,并给出了Python、cURL等完整代码示例。随后深入讲解了如何在阿里云百炼、PAI LangStudio、Dify等主流Agent平台中集成IQS,以及CLI工具的使用方法。在性能优化方面,讨论了搜索引擎类型选择、分页与重排序机制、查询词优化等关键策略。最后总结了VPC内网访问、计费模式、错误排查等常见问题,帮助开发者快速完成从开通到生产级集成的全流
|
2月前
|
机器学习/深度学习 编解码 人工智能
钢材表面缺陷目标检测数据集:6类别 | 目标检测
本数据集含6000张真实工业场景钢材图像,涵盖裂纹、夹杂、斑块、麻面、氧化皮压入、划痕6类缺陷,YOLO格式标注,适配YOLOv5/v8/v11等主流模型,专为钢铁质检AI研发设计。(239字)
299 4
|
2月前
|
传感器 人工智能 自然语言处理
GEO优化:内容源被引用,你要的内容却没被引用?
这篇文章想把这层机制彻底讲透——为什么被引用的是"你",却不是"你要的内容"
193 2
|
2月前
|
人工智能 安全 搜索推荐
AI加持下的钓鱼攻击激增,我们该如何应对?
2026年,AI驱动的“设备代码钓鱼攻击”激增1380%,绕过多因素认证(MFA),窃取会话令牌而非密码。依托“钓鱼即服务”(PhaaS)平台,攻击实现高度自动化、个性化,门槛大幅降低。防御需结合零信任架构、物理安全密钥、CAE持续评估及FIDO2无密码认证。(239字)
166 4