Oracle 可传输表空间(Transportable Tablespace)

在数据归档、备份、测试等场景,我们经常需要将数据从一个系统移动到另一个系统,一个较常用的方案是数据的导出/导入(export/import),但是在数据量较大的场景,此方案可能比较耗时。而可传输表空间是一种以文件为单位的数据移动技术,它绕过了导出/导入的数据处理过程,直接利用操作系统复制底层数据文件来快速移动数据。

文章目录

  • 一、可传输表空间简介
  • 二、可传输表空间示例
    • 2.1 将表空间置于只读状态
    • 2.2 导出元数据
    • 2.3 拷贝文件
    • 2.4 在目标系统导入元数据

一、可传输表空间简介

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

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

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

可传输表空间的过程分为下面4个步骤:
1. 将表空间置于只读状态
2. 导出元数据
3. 将表空间对应的数据文件及第2步导出的元数据文件拷贝到目标服务器
4. 在目标服务器导入元数据

二、可传输表空间示例

在实际应用中,也可以专门建立一个表空间来使用这个特性。每次传输前将要传输的数据复制到这个表空间中,然后移动到目标系统,最后再加载到需要的表中。

先建立一个表空间和一张表作为示例数据:

create tablespace trans_tbs;
create table t(id integer) tablespace trans_tbs;
insert into t values(1);
commit;

在这里插入图片描述

在开始传输前,先检查表空间是否是自包含的,Oracle提供了dbms_tts.transport_set_check() 存储过程来检查,这个存储过程不会返回任何结果,是否冲突需要通过视图transport_set_violations查询:

exec dbms_tts.transport_set_check('TRANS_TBS', true); 
Select * from transport_set_violations;

在这里插入图片描述
确定表空间是自包含的就可以移动数据了。

2.1 将表空间置于只读状态

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

alter tablespace trans_tbs read only;

在这里插入图片描述
这里仅仅演示了一个表空间,如果同时传输多个表空间,只需要保证这些表空间是自包含的,并将它们置于只读即可。

2.2 导出元数据

元数据是指表空间中对象的定义数据,它们存在数据字典中,和表中的普通业务数据是分离。因此拷贝表空间文件不会包含元数据,元数据依然需要通过导出/导入的方式来移动。

下面的命令会在当前目录下生成名为trans_tbs.dmp的文件,transport_tablespace=y 选项意味着仅导出表空间的元数据,因此这个文件非常小:
exp userid=“/ as sysdba” transport_tablespace=y tablespaces=trans_tbs file=trans_tbs.dmp
在这里插入图片描述

2.3 拷贝文件

表空间对应的数据文件路径可以用下面的命令查询,:

select tablespace_name, file_name from dba_data_files where tablespace_name='TRANS_TBS';

在这里插入图片描述

将表空间所包含的数据文件和第二步导出的元数据文件拷贝到目标系统,这里由于只有一个数据库,新建一个目录来模拟另一个系统:

mkdir /u01/app/oracle/oradata/PROD/PROD/datafile/trans_tbs
cp /u01/app/oracle/oradata/PROD/PROD/datafile/o1_mf_trans_tb_ljtf5d9p_.dbf /u01/app/oracle/oradata/PROD/PROD/datafile/trans_tbs/trans.dbf

在这里插入图片描述

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

alter tablespace trans_tbs read write;

在这里插入图片描述

2.4 在目标系统导入元数据

最后一步,仅需要将第二步导出的元数据在目标系统导入即可。这里由于是在同一个库演示,先将原表空间及文件删除,避免冲突:

drop tablespace trans_tbs including contents and datafiles;

在这里插入图片描述

使用imp命令导入元数据,这里需要提供要加载数据文件:

imp userid=\"/ as sysdba\" transport_tablespace=y tablespaces=trans_tbs file=trans_tbs.dmp datafiles=/u01/app/oracle/oradata/PROD/PROD/datafile/trans_tbs/trans.dbf

在这里插入图片描述

导入后再次查询dba_data_files表,可以看到表空间指向的是新数据文件,导入成功:

select tablespace_name, file_name from dba_data_files where tablespace_name='TRANS_TBS';

在这里插入图片描述

导入后的表空间是只读的,如果要更新,则要将其改为读写状态。如果只是用来迁移数据,可以采用直接路径插入insert /*+ append */ into … select …. 来将其快速加载到目标表中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Linux系统中搜索当前路径及其子目录下所有PDF文件中是否包含特定字符串

目录标题 方法一:pdfgrep方法二:使用find和xargs与pdftotext(将PDF转换为文本)组合,然后用grep搜索 方法一:pdfgrep pdfgrep -ri "rockchip" .方法二:使用find和xargs与pdftotext&am…

消息队列选型(RabbitMq、RocketMq、Kafaka)

文章目录 前言RabbitMq优点缺点 RocketMq优点缺点 Kafaka优点缺点 总结 前言 当引入消息队列时,常见的选择包括ActiveMQ、Kafka、RabbitMQ和RocketMQ。然而,近年来,ActiveMQ的活跃度已经下降,很多公司已经不再使用这款消息队列中…

wangEditor集成Word导入(富文本编辑器)

wangEditor集成Word导入(富文本编辑器),wangEditor – 支持word上传的富文本编辑器,WANGEDITOR实现WORD图片自动转存,JAVA中将WORD转换为HTML导入到WANGEDITOR编辑器中(解决图片问题,样式,非常完美&#xf…

视频怎么做成二维码分享?微信扫码播放视频的操作技巧

随着互联网的快速发展,现在大家喜欢通过扫描二维码的方式来获取信息,比如现在通过扫码看视频就是很常见的一种方式。生成二维码的方式可以实现内容传递的简单化,而且可以有效的降低制作者的成本,提升用户的体验效果。 现在使用比…

【matlab 代码的python复现】 Matlab实现的滤波器设计实现与Python 的库函数相同实现Scipy

实现一个IIR滤波器的设计 背景 Matlab 设计的滤波器通常封装过于完整,虽然在DSP中能够实现更多功能的滤波器设计但是很难实现Python端口的实现。 我们以一段原始的生物电信号EEG信号进行处理。 EEG信号 1.信号获取 EEG信号通常通过头皮电极,经过多通道采样芯片采样,将获…

解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上,运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本,激活win10步骤流程。

一. 解决 0x803F7001在运行Microsoft Windows非核心版本的计算机错误 首先,按下winR打开"运行",输入 regedit 后回车,打开注册表。   然后再注册表下输入地址HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProt…

代码随想录算法训练营DAY28|C++回溯算法Part.4|93.复原IP地址、78.子集、90.子集II

文章目录 93.复原IP地址思路确定非法的范围树形结构 伪代码 78.子集思路伪代码实现CPP代码 90.子集II思路CPP代码用used去重的办法用set去重的版本不使用used数组、set的版本 93.复原IP地址 力扣题目链接 文章讲解:93.复原IP地址 视频讲解:回溯算法如何分…

docker容器技术篇:安装与配置flannel

Docker安装与配置flannel flannel是什么? Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址;通俗的将就是通过flannel接管dock…

粤嵌—2024/4/22—两数之和 || - 输入有序数组

代码实现: 双指针 /*** Note: The returned array must be malloced, assume caller calls free().*/ int* twoSum(int *numbers, int numbersSize, int target, int *returnSize) {int *res malloc(sizeof(int) * 2);*returnSize 2;int i 0, j numbersSize - 1…

C++学习进阶版(二):与文件相关的函数用法

目录 1、读取文件的指定行 (1)main函数中直接读 (2)封装成函数 ① 无返回值类型 ② 直接返回读取的内容 2、求文件的行数 3、文件内容读取成一个字符串 1、读取文件的指定行 (1)main函数中直接读 …

如何选择全链路监控系统?CAT、SkyWalking、Pinpoint哪个更适合?

如果服务器上没有应用还会造成硬件瓶颈吗?显然是不会的,呈现出来的硬件瓶颈绝大多数是表象问题,我们往往需要在系统应用上寻找问题的根因。而寻找系统问题的根因,对于系统链路监控也是必不可少的, 前面我们也写了几篇…

光伏无人机吊装技术的优势及应用前景

近年来随着政府对光伏业务的不断宣传和推进,不少区域因地制宜引进了光伏发电项目,但是部分区域由于交通不便利,给材料运输工作带来了巨大的考验。目前,无人机吊装技术运输材料解决这一问题。 今天带大家看下光伏无人机吊装技术有…

STM32G030F6P6TR ST意法

STM32G030F6P6TR是ST(意法半导体)一款基于高性能ArmCortex-M032位RISC内核,工作频率高达64MHz的32位MCU微控制器。代理销售ST(意法半导体)全系列IC电子元器件-中芯巨能为您提供STM32G030F6P6TR(ST 32位MCU)引脚图及中文参数介绍等内容。 STM32G030F6P6TR的中文参数 …

Linux进程和任务管理

目录 一.程序和进程的关系 程序 进程 线程 线程与进程的区别 二.查看进程信息ps 方法一 常用选项 方法二 三.TOP动态查看进程信息 进程信息区各列解释 top常用命令 系统查看命令总结 查看进程信息pgrep 查看进程树pstree 四.控制进程 进程的启动方式 进程的前…

Java面试八股之重写一个对象的equals方法,需要考虑哪些问题

重写一个对象的equals方法,需要考虑哪些问题 遵守equals()约定: 重写equals()方法应遵循Object类中定义的equals()方法约定,即实现自反性(x.equals(x)始终为true)、对称性(若x.equals(y)为true&#xff0…

【电控笔记5.5】psms规格参数

规格参数 转矩常数Kt与反电动势常数Ke Kt:没安培电流产生多少转矩量 Ke或Kb:每单位转速产生的反电动势电压 反电动势是梯形波,Kt=Ke;正弦波则不相等 q轴电流与反电动势都领先转子磁通链90

谷粒商城学习笔记

1.系统架构 2.环境准备 21.安装Linux 1.VirtualBox: https://download.virtualbox.org/virtualbox/6.0.10/VirtualBox-6.0.10-132072-Win.exe 2.安装 Vagrant 1).Vagrant 下载地址: https://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.msi https://www…

7.Prism框架之对话框服务

文章目录 一. 目标二. 技能介绍① 什么是Dialog?② Prism中Dialog的实现方式③ Dialog使用案例一 (修改器)④ Dialog使用案例2(异常显示窗口) 一. 目标 1. 什么是Dialog?2. 传统的Dialog如何实现?3. Prism中Dialog实现方式4. 使用Dialog实现一个异常信息弹出框 二. 技能介…

Proxyman Premium for Mac:网络调试利器,开发者首选!

Proxyman Premium for Mac是一款功能强大的网络调试和分析工具,专为开发者和测试人员打造。这款软件以其出色的性能和丰富的功能,帮助用户在网络开发和调试过程中更有效地分析和拦截网络请求,进行必要的修改和重发,从而进行更深度…

【Linux基础】Linux基础概念

目录 前言 浅谈什么是文件? Linux下目录结构的认识及路径 目录结构 路径 家目录 什么是递归式的删除 重定向 输出重定向: 追加重定向: 输入重定向: 命令行管道 shell外壳 为什么需要shell外壳? shell外壳…