Oracle 19c新特性: EXPDP 参数TTS_CLOSURE_CHECK估算Transportable Tablespace时间
TTS(Transportable Tablespace)在大型数据库迁移方案看较常见,原理是导出源库表元数据信息 (EXPDP)→ 传输表空间文件到目标库→导入库表元数据信息,及后来的XTTS(Cross Platform Transportable Tablespaces)跨平台,及利用Full Transportable Export/Import的F[X]TTS, 在生产库保持正常运行的情况下,传送迁移表空间数据文件,通过不断生成增量备份并进行恢复,使迁移时间可控,最大程度减少迁移所需要的停机时间, 复制数据文件实现了在线,但是导出元数据阶段需要把表空间改为只读,写业务要中断,那就存在一个问题,导出metadata元数据需要多少时间?有没有不可预见的问题? 时间长度依赖数据库内的对象个数等了,但是19c 之前测试导出元数据也要read only表空间,19c DATAPUMP引入新特性TTS_CLOSURE_CHECK为此而生,可见Oracle在online运维上一直在升级。
使用19c,DBA可以更轻松地确定导出将花费多长时间,并发现 closure check 未报告的不可预见的问题。DataPump Export 的参数 TTS_CLOSURE_CHECK 可以用来指定 Transportable Tablespaces 的TEST_MODE会在 Transportable Tablespaces/Full Transportable Export/Import时做只导出元数据的测试。它不需要把源库的 tablespace 设置为只读。。产生的 dump 文件会被标记为 “unusable.”。
TTS_CLOSURE_CHECK
目的: 指定 transportable export 的 closure check 的级别
语法以及描述
TTS_CLOSURE_CHECK = [ ON | OFF | FULL | TEST_MODE ]
ON – 开启 closure check 来确保 要导出的tablespace集里没有引用集合之外的对象
OFF – 关闭 closure check。用户自己确保要导出的tablespace集里没有引用集合之外的对象
FULL – 进行全面的多方向的 closure check 确保要导出的tablespace集里没有引用集合之外的对象,并且集合之外的对象也没有引用要导出的对象
TEST_MODE – 测试模式下不需要把 tablespaces 置为只读模式,来评估 transportable tablespace 导出花费的时间。导出的文件不能用于导入。
注意:
1/ ON, OFF, 以及 FULL 的选项是互斥的。 TEST_MODE 仅适用于导出。
2/ 使用 TTS_CLOSURE_CHECK TEST_MODE 不需要把 tablespaces 置为只读模式,并提供导出花费的时间。导出的文件不能用于导入。
3/ DataPump进行 closure check 所需的时间可能很长,有时甚至是不必要的,尤其是在已知要导出的tablespace集里没有引用集合之外的对象的情况下。
4/ 跳过 closure check 将减少 transportable export 完成的时间,从而增加可用性。 在 tablespace 处于 read-write 模式下即可获得导出时间的功能也提高了可用性。
5/ 可以通过procedure DBMS_DATAPUMP.SET_PARAMETER设置 TTS_CLOSURE_CHECK 参数。下面的例子关闭了 closure check 并启用了测试模式:
SYS.DBMS_DATAPUMP.SET_PARAMETER(jobhdl, ‘TTS_CLOSURE_CHECK’, DBMS_DATAPUMP.KU$_TTS_CLOSURE_CHECK_OFF+DBMS_DATAPUMP.KU$_TTS_CLOSURE_CHECK_TEST);
[oracle@oel7db1 ~]$ ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 7 22:57:28 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
USERNAME INST_NAME HOST_NAME I# SID SERIAL# VERSION STARTED SPID OPID CPID SADDR PADDR
-------------------- -------------------- ------------------------- --- ----- -------- ---------- -------- ---------- ----- --------------- ---------- ------ ----------------
SYS PDB1-anbob19c oel7db1 1 390 16816 19.0.0.0.0 20200707 4022 33 4021 0000000073 434028 0000000074923E68
SQL> select STATUS,tablespace_name from dba_tablespaces
STATUS TABLESPACE_NAME
--------- ------------------------------
ONLINE SYSTEM
ONLINE SYSAUX
ONLINE UNDOTBS1
ONLINE TEMP
ONLINE USERS
READ ONLY TBS1
测试导出USERS表空间元数据
[oracle@oel7db1 ~]$ expdp userid=system/xxxxxx directory=datapump dumpfile=user_metadat.dump\ transport_tablespaces=users TTS_CLOSURE_CHECK=test_mode Export: Release 19.0.0.0.0 - Production on Tue Jul 7 23:01:26 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": userid=system/******** directory=datapump dumpfile=user_metadat.dump transport_tablespaces=users TTS_CLOSURE_CHECK=test_mode Processing object type TRANSPORTABLE_EXPORT/INDEX/STATISTICS/INDEX_STATISTICS Processing object type TRANSPORTABLE_EXPORT/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS Processing object type TRANSPORTABLE_EXPORT/STATISTICS/TABLE_STATISTICS Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK Processing object type TRANSPORTABLE_EXPORT/TABLE Processing object type TRANSPORTABLE_EXPORT/INDEX/INDEX Processing object type TRANSPORTABLE_EXPORT/INDEX/FUNCTIONAL_INDEX/INDEX Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is: /home/oracle/user_metadat.dump Dump file set is unusable. TEST_MODE requested. ****************************************************************************** Datafiles required for transportable tablespace USERS: /u01/app/oracle/oradata/ANBOB19C/pdb1/users01.dbf Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at Tue Jul 7 23:03:09 2020 elapsed 0 00:01:36 [oracle@oel7db1 ~]$ impdp userid=system/oracle directory=datapump dumpfile=user_metadat.dump transport_tablespaces=users TTS_CLOSURE_CHECK=test_mode LRM-00121: 'test_mode' is not an allowable value for 'tts_closure_check' [oracle@oel7db1 ~]$ oerr lrm 121 121, 0, "'%.*s' is not an allowable value for '%.*s'" // *Cause: The value is not a legal value for this parameter. // *Action: Refer to the manual for allowable values.
对不起,这篇文章暂时关闭评论。