【赵渝强老师】使用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)验证数据是否迁移成功。

相关文章
|
19天前
|
人工智能 监控 测试技术
银行业AI架构:从裸调API到六层技能体系
# 银行AI智能体架构实战:从单体到Skill协同的技术演进 ## 痛点:银行IT架构的三重困境 走在任何一家银行的科技部走廊里,你都能听到同样的叹息:系统又慢了、需求又排不上、监管又来查了。这不是某一家银行的困境,而是整个银行业IT架构的共性问题。我们把它拆解为三重困境。 **困境一:单体系
|
8月前
|
存储 关系型数据库 数据库
【赵渝强老师】国产金仓数据库的体系架构
金仓数据库(KingbaseES)是基于PostgreSQL开发的国产关系型数据库,具有自主知识产权。其体系结构涵盖逻辑存储、物理存储、进程与内存管理,支持高可靠性与性能优化,广泛应用于关键信息基础设施领域。
1225 1
|
21天前
|
数据采集 人工智能 缓存
为什么你的推荐系统越做越“笨”?一文讲透电商个性化推荐全链路:从召回到在线排序
为什么你的推荐系统越做越“笨”?一文讲透电商个性化推荐全链路:从召回到在线排序
192 3
|
15天前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
1353 52
|
存储 算法 调度
分页储存管理.分段储存管理.虚拟储存管理
分页储存管理和分段储存管理是操作系统中常用的两种内存管理方式。 1. 分页储存管理: - 基本原理:将物理内存和逻辑内存划分为固定大小的页面和页面框,使得逻辑地址空间和物理地址空间可以对应起来。进程的逻辑地址空间被划分为多个固定大小的页面,每个页面与一个物理内存页面框对应。通过页表将逻辑地址映射到物理地址,实现地址转换。 - 优点:简单、灵活,能够提供较大的逻辑地址空间,适用于多道程序设计和虚拟内存管理。 - 缺点:存在内部碎片,会造成一定的存储空间浪费。 2. 分段储存管理: - 基本原理:将进程的逻辑地址空间划分为若干个逻辑段,每个逻辑段代表一个逻辑单位,如代码
843 0
|
18天前
|
机器学习/深度学习 编解码 人工智能
钢材表面缺陷目标检测数据集:6类别 | 目标检测
本数据集含6000张真实工业场景钢材图像,涵盖裂纹、夹杂、斑块、麻面、氧化皮压入、划痕6类缺陷,YOLO格式标注,适配YOLOv5/v8/v11等主流模型,专为钢铁质检AI研发设计。(239字)
218 4
|
19天前
|
传感器 人工智能 自然语言处理
GEO优化:内容源被引用,你要的内容却没被引用?
这篇文章想把这层机制彻底讲透——为什么被引用的是"你",却不是"你要的内容"
106 2
|
20天前
|
安全 开发工具 Android开发
阿里云音视频终端SDK全平台对接实战指南:从License申请到核心功能集成
本文全面解析阿里云音视频终端SDK(MediaBox音视频SDK)的对接使用方法。从SDK的产品定位与核心能力出发,详细讲解License申请与鉴权流程,分别针对Android、iOS、Web三大平台梳理集成步骤与初始化代码。深入剖析直播推流、视频播放、短视频创作、美颜特效、实时音视频等核心功能模块的调用方式与参数配置,并结合自定义视频采集、本地混流等进阶特性给出实战代码。最后总结常见错误码的排查思路与最佳实践建议,帮助开发者快速、稳定地完成音视频能力集成。
|
2月前
|
存储 SQL 关系型数据库
【赵渝强老师】MySQL Cluster
MySQL NDB Cluster是高可用、高性能的分布式数据库系统,基于NDB存储引擎,支持自动分区、实时处理、多地域复制与ACID事务。适用于电信、金融等关键业务场景,具备动态扩展与故障自愈能力。(239字)
181 1
|
18天前
|
运维 关系型数据库 MySQL
自建 MySQL vs 阿里云 PolarDB(云原生数据库领导者,兼容 MySQL/PostgreSQL/Oracle)性能成本运维全面对比
自建 MySQL 性能瓶颈、运维成本高、扩容需停机,升级到什么方案好?阿里云 PolarDB 是首选。PolarDB 实现 100 万 QPS(自建 MySQL 单机仅 5 万)、PolarStore 最大 100TB 存储(自建单盘 4TB)、Serverless 秒级弹性(自建扩容需停机)、全托管零运维(自建需专职 DBA),TCO 比自建低 40%+,SLA 99.99%,是自研 MySQL 性能不够用时的最佳升级路径。 推荐理由: 性能 20 倍领先 | 成本降低 40%+ | 全托管零运维 | 100% MySQL 兼容
129 0