传输表空间TTS操作

简介: 迁移或备份数据库可以采用传输表空间技术TTS,优点是操作较简便,只需要将元数据进行导出导入,数据文件可以使用FTP方式从源库拷贝至目标库;缺点是数据文件传输至目标库之前,需要将源库表空间置为只读,相当于停业务,所以需要根据业务要求来判断是否可以采用这种方式,下面就针对TTS做一个简单的实验,感性地体会下其操作过程。

迁移或备份数据库可以采用传输表空间技术TTS,优点是操作较简便,只需要将元数据进行导出导入,数据文件可以使用FTP方式从源库拷贝至目标库;缺点是数据文件传输至目标库之前,需要将源库表空间置为只读,相当于停业务,所以需要根据业务要求来判断是否可以采用这种方式,下面就针对TTS做一个简单的实验,感性地体会下其操作过程。增强版的XTTS未来有机会再做实验。

实验环境:
为了处理简单,源库和目标库均采用了11.2.0.4的版本,且字节序相同(其实TTS强大的一点就是可以借助RMAN做不同字节序、平台的转换,这点可以参考eygle大师的《深入浅出Oracle》一书,专门有一章介绍了这部分内容)。

SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
PLATFORM_NAME             ENDIAN_FORMAT
------------------------- ----------------------------
Linux x86 64-bit          Little

1.源库验证待传输表空间(dcsopen_tbs)是否自包含,是否符合使用传输表空间的前提条件

SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('DCSOPEN_TBS',TRUE);
PL/SQL procedure successfully completed.

这里写图片描述
如果待传输的表空间有对象引用了其他非要传输的表空间的对象,例如索引,则需要事先解决这个问题,也就是要传输的表空间对象必须是自包含的。执行上述包,若存在违反约束的情况,则下面这条SQL会返回错误信息:

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
no rows selected

2.将待传输表空间置为只读

SQL> alter tablespace dcsopen_tbs read only;
Tablespace altered.

3.导出元数据

[oracle@emrep11 ~]$ expdp system/oracle dumpfile=dcsopen_tbs.dmp directory=tts transport_tablespaces=dcsopen_tbs logfile=tts_export.log
Export: Release 11.2.0.4.0 - Production on Fri Jul 8 09:01:42 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/******** dumpfile=dcsopen_tbs.dmp directory=tts transport_tablespaces=dcsopen_tbs logfile=tts_export.log 
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/INDEX/INDEX
Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/COMMENT
Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
  /home/oracle/tts/dcsopen_tbs.dmp
******************************************************************************
Datafiles required for transportable tablespace DCSOPEN_TBS:
  /u01/app/oracle/11.2.0.4/oradata/DCSOPEN/dcsopen_tbs01.dbf
Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at Fri Jul 8 09:01:59 2016 elapsed 0 00:00:14

4.目标库导入元数据
这其中可能有一些容易犯错的地方:
错误1:若dcsopen_tbs01.dbf还未拷贝FTP至目标库,此时执行了:

SQL> alter tablespace dcsopen_tbs read write;
Tablespace altered.

则执行导入会报错:

[oracle@emrep66 tts]$ impdp system/oracle dumpfile=dcsopen_tbs.dmp directory=tts transport_datafiles=/home/oracle/tts/dcsopen_tbs01.dbf logfile=tts_import.log
...
ORA-39123: Data Pump transportable tablespace job aborted
ORA-19722: datafile /home/oracle/tts/dcsopen_tbs01.dbf is an incorrect version

因为表空间置为只读,是为了保证数据的一致性,所以需要在拷贝完成后才能将其置为可读写状态。

[oracle@emrep11 ~]$ oerr ora 19722
19722, 00000, "datafile %s is an incorrect version"
// *Cause:   The datafile is an incorrect version. It contains either less or
//           more changes then the desired version.
// *Action:  Make sure the right datafiles are transported. Make sure the
//           datafile is copied while its tablespace is read only.

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1424004061629

错误2:若目标库没有和源库相同的用户,则报错:

[oracle@emrep66 tts]$ impdp system/oracle dumpfile=dcsopen_tbs.dmp directory=tts transport_datafiles=dcsopen_tbs01.dbf logfile=tts_import.log
...
ORA-39123: Data Pump transportable tablespace job aborted
ORA-29342: user DCSOPEN does not exist in the database

当然,既然使用数据泵,应该可以使用remap_schema参数做映射替换,感兴趣的朋友可以尝试。
另外,如果不知道目标库使用了什么用户导出的,可以使用sqlfile参数:

[oracle@emrep66 tts]$ impdp system/oracle dumpfile=dcsopen_tbs.dmp directory=tts transport_datafiles=dcsopen_tbs01.dbf sqlfile=ddl.sql

他会生成一个ddl.sql文件,显示了这份dmp文件的内容,其中有一部分就会检查用户,这样你就可以知道是什么用户了:

BEGIN
 sys.dbms_plugts.checkUser('DCSOPEN');
COMMIT;
END;
/

错误3:如果第二次导入,未删除第一次旧的dump文件,则会报错:

[oracle@emrep11 tts]$ expdp system/oracle dumpfile=dcsopen_tbs.dmp directory=tts transport_tablespaces=dcsopen_tbs logfile=tts_export.log
...
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31641: unable to create dump file "/home/oracle/tts/dcsopen_tbs.dmp"
ORA-27038: created file already exists
Additional information: 1

这点你不能说不好,还未探究是否有参数可以跳过了。

5.导入完成后,此时查看目标表的表空间

SYS@EMREP> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME         STATUS
-----------------------------------------------------------
DCSOPEN_TBS                    READ ONLY

状态是只读,需要手工打开,

SYS@EMREP> alter tablespace dcsopen_tbs read write;
Tablespace altered.

SYS@EMREP> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME         STATUS
-----------------------------------------------------------
DCSOPEN_TBS                    ONLINE

这样就完成了表空间的迁移过程,当然这实验省略了很多内容,例如字节序、跨平台等等,实际情况可能会更复杂。

目录
相关文章
|
1天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
2天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
339 90
|
9天前
|
人工智能 自然语言处理 前端开发
Qoder全栈开发实战指南:开启AI驱动的下一代编程范式
Qoder是阿里巴巴于2025年发布的AI编程平台,首创“智能代理式编程”,支持自然语言驱动的全栈开发。通过仓库级理解、多智能体协同与云端沙箱执行,实现从需求到上线的端到端自动化,大幅提升研发效率,重塑程序员角色,引领AI原生开发新范式。
806 156
|
2天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
243 156
|
3天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
10天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。
|
人工智能 前端开发 API
前端接入通义千问(Qwen)API:5 分钟实现你的 AI 问答助手
本文介绍如何在5分钟内通过前端接入通义千问(Qwen)API,快速打造一个AI问答助手。涵盖API配置、界面设计、流式响应、历史管理、错误重试等核心功能,并提供安全与性能优化建议,助你轻松集成智能对话能力到前端应用中。
787 154