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 …. 来将其快速加载到目标表中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据技术应用实训室解决方案

一、大数据课程体系 1.1 大数据实验实训课程体系设计依据 大数据实验实训课程体系的设计依据主要围绕培养目标、培养方案和课程体系建设三个方面来展开。 1、培养目标 大数据实验实训课程的设计旨在培养具备大数据理论知识和实践技能的专业人才。具体而言,这些人才…

Midjourney 中文文档

快速使用 学习如何在Discord上使用Midjourney Bot从简单的文本提示中创建自定义图像。 行为准则 不要表现出不良行为。不要使用我们的工具制作可能引起煽动,不安或引起争议的图像。这包括血腥和成人内容。尊重其他人和团队。 1:加入Discord 访问Midj…

【软件测试】关于Web自动化测试

文章目录 🍃前言🌲如何实现Web自动化🚩安装驱动管理🚩Selenium库的安装 🌳自动化常用函数🚩元素的定位🎈cssSelector🎈xpath 🚩操作测试对象🎈点击/提交对象—…

Linux中docker安装

准备工作 系统要求 Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不…

个人电脑信息安全注意事项

个人电脑信息安全注意事项 一、密码安全: 设置复杂且独特的密码,避免使用容易猜测或常见的密码。 定期更换密码,特别是在重要账户或应用上。 不要在多个账户上重复使用相同的密码。 使用密码管理工具来安全地存储和访问密码。 二、软件安…

在传统云安全失败时提供帮助的六种策略

随着基于内存的攻击的激增继续挑战传统的云安全防御,对主动和全面的安全措施的需求变得至关重要。采用结合端点检测和响应、内存完整性保护和定期更新的多层方法可以加强对这些难以捉摸的威胁的防御。 随着云计算技术在各行各业的迅速普及,数据保护和安全…

在Windows 10中禁用Windows错误报告的4种方法,总有一种适合你

序言 在本文中,我们的主题是如何在Windows 10中禁用Windows错误报告。你知道什么是Windows错误报告吗?事实上,Windows错误报告有助于从用户的计算机收集有关硬件和软件问题的信息,并将这些信息报告给Microsoft。 它将检查任何可…

图像哈希:GLCM+DCT

文章信息 作者:Ziqing Huang期刊:IEEE(一区)题目:Perceptual Image Hashing with Texture and Invariant Vector Distance for Copy Detection 目的、实验步骤及结论 目的:使用GLCM进行全局特征的提取&am…

Transformer - 时间特征的处理

Transformer - 时间特征的处理 flyfish ETTm1.csv有如下内容 假如有2016/7/1 0:45:00有这样的时间字符串,如何变成时间特征列表 from typing import Listimport numpy as np import pandas as pd from pandas.tseries import offsets from pandas.tseries.freq…

BFS 专题 ——FloodFill算法:733.图像渲染

文章目录 前言FloodFill算法简介题目描述算法原理代码实现——BFSCJava 前言 大家好啊,今天就正式开始我们的BFS专题了,觉得有用的朋友给个三连呗。 FloodFill算法简介 中文:洪水灌溉 举个例子,正数为凸起的山峰,负…

android学习笔记(五)-MVP模式

1、MVP模式demo的实现,效果下: 2、创建一个Fruit类: package com.example.listview; //Fruit类就是Model,表示应用程序中的数据对象。 public class Fruit {private int imageId;private String name;private String price;publi…

查找算法之插值查找

目录 前言一、查找算法预备知识二、插值查找三、总结3.1 查找性能3.2 适用场景 前言 查找算法是一种用于在数据集合中查找特定元素的算法。在计算机科学中,查找算法通常被用于在数组、链表、树等数据结构中查找目标元素的位置或者判断目标元素是否存在。 查找算法的…

基础SQL DML-插入语句

插入语句前,我们先创建一个表。表的创建在DDL语句里面涉及,可以参考:小赖同学吖-CSDN博客 我们创建一个员工表进行数据的插入操作 插入(添加)语句的语法 给员工表添加一条记录 给员工表添加多条记录 也可以通过下面的方…

Linux文件chattr/lsattr/Linux权限(搭建权限测试环境实战)引申到内部原理及Linux删除系统文件原理-7539字详谈

企业高薪思维: 每一个阶段什么时候是最重要的?(快速定位) 1.学习最重要的事情 (学生阶段,找工作前阶段) 2.家庭,女朋友 (工作阶段/学生阶段,学习不受到影响) …

浅析binance新币OMNI的前世今生

大盘跌跌不休,近期唯一的指望就是binance即将上线的OMNI 。虽然目前查到的空投数量不及预期,但OMNI能首发币安,确实远超预期了。 OMNI代币总量1亿,初始流通仅10,391,492枚,其中币安Lanchpool可挖350万枚 对于OMNI这个…

OneNote插件推荐(OneMore)

使用OneNote编辑笔记时希望有一个插件能够实现markdown的功能,于是发现了OneMark,后面用着用着,OneMark竟然收费了,于是苦苦找寻好用的markdown插件,无果,此时发现我的目标主要是实现对代码的格式化&#x…

洛谷 -P1007 独木桥(模拟,思维)

独木桥 题目背景 战争已经进入到紧要时间。你是运输小队长,正在率领运输部队向前线运送物资。运输任务像做题一样的无聊。你希望找些刺激,于是命令你的士兵们到前方的一座独木桥上欣赏风景,而你留在桥下欣赏士兵们。士兵们十分愤怒&#xf…

VMware 15 虚拟机网络遇到的问题

剧情提要 通过Cent os7 的镜像文件,创建了一个虚拟机A(后面简称A),事后发现,宿主机无法ping通A 在虚拟机中通过IP a 看到的IP信息也没有只管的ip信息如图 然后执行,宿主机才能访问A。 sudo dhclient ens…

前端css中的transform(转换)的使用

前端css中的transform的使用 一、前言二、流程图三、举例(一)、平移1.平移,源码12.源码1运行效果(1).视频效果(2).截图效果 3.平移3d效果,源码24.源码2运行效果(1)、视频效果(2)、截…

如何使用RRT模式进行交易,Anzo Capital一篇文章说清楚

railway tracks烛台模式(或铁路线 - RRT)是一种基于价格行为的简单交易策略,这种策略交易原理相当简单,易于使用。 RRT烛台形态也是图表上经常出现的形态,如果知道如何使用它,Anzo Capital认为它就是具有强烈交易信号的形态。 …