Oracle 21C 新特性:数据泵相关新特性汇总

墨墨导读:本文来自墨天轮用户“JiekeXu”投稿,墨天轮主页:https://www.modb.pro/u/434,本文分享Oracle 21c 新特性:数据泵相关新特性汇总。

Oracle 21C 于 12 月 8 日 发布云上版本,同时提供官方文档以及客户端下载。不过 Oracle Database 21c 不是长期支持版本,而是创新版本,根据 MOS 说明 742060.1(今天 MOS 处于维护中无法登录),它将一直处于“高级支持”状态,直到 2023 年 6 月为止。距离现在只有 2.5 年,没有扩展支持。因此,潜在的 Oracle Database 21c 将成为测试和试用新的令人兴奋的功能,测试应用程序等的版本。但是生产环境现在应该转到 Oracle Database 19c,目前 19C 才是长期支持的稳定版本。

官方文档链接:https://docs.oracle.com/en/database/oracle/oracle-database/21/index.html

由于今年的特殊环境,Oracle Database 20c 仅是预览版。不过据我所知,20c 中看到的功能全部在 21c 中。但是,Oracle 数据库 20c 将不再在云中可用,也已经移除了官方文档链接。

在墨天轮上盖老师总结了 21c 的十大新特性

1. 原生的区块链支持 - Native Blockchain Tables
2. 持久化内存存储支持 - Persistent Memory Store
3. SQL 的宏支持 - SQL Macro
4. 原生的 JSON 数据类型支持
5. SQL 新特性和函数扩展 - Extensions
6. 自动化的 In-Memory 管理 - Self-Managing In-Memory
7. 广泛的机器学习算法和 AutoML支持
8. 多租户细粒度资源模型 - New Resource Modeling Scheme
9. 零影响的计划停机维护 - Zero Downtime for Planned Outages
10.In-Memory 的 Spatial 和 Text 支持

当然,这十大特性看着很不错,可在阿里大佬德哥的文章中却提出不值一提“为什么 Oracle 21c 的新特性不值得一提? 因为它已经老了!”那他老了吗?感兴趣的可自行查看。

相反,参数表达式化、家目录只读、备库的结果集缓存支持、缓存融合、GI SwitchHome 等等才更加实用,在盖老师总结的《Oracle Database 21c 十小新特性一览 - New Features》中也有如下十个特性,可以一起看看:

1. In-Memory 基础级支持
2. Sharding 的增强
3. 原生的 JavaScript 支持
4. 备库的结果集缓存支持
5. 强制只读的 Oracle Home
6. 诊断控制的增强
7. 表达式参数
8. ANSI SQL 表达式的 EXCEPT 支持
9. 关注日志 - Attention Log
10. SQL*Net 诊断增强


Oracle Database 21C 更多新特性可查看官方文档,阅读详细信息:https://docs.oracle.com/en/database/oracle/oracle-database/21/nfcon/index.html

以下是 Database New Features 中关于数据泵相关的新特性,与大家分享学习。

1. 数据泵支持文件校检

Oracle 数据泵导出的 dump 文件,从远端传到目标端时,要检查 Oracle Data Pump 转储文件的有效性,现在可以使用添加到转储文件中的校验和。在 21C 中,现在将一个 CHECKSUM 添加到转储文件中。您可以使用 CHECKSUM 来帮助确认在与对象存储区进行传输之后,以及在本地保存转储文件之后,该文件是有效的,并且它没有发生意外损坏或恶意更改。
以下是段官方文档原文:

Export the table HR.EMPLOYEES and add a checksum to the dump file to be able to confirm that the dump file is still valid after the export and that the data is intact and has not been corrupted. An Oracle Data Pump export writes control information into the header block of a dump file:Oracle Database 21c extends the data integrity checks by adding an additional checksum for all the remaining blocks beyond the header within Oracle Data Pump and external table dump files. Use the CHECKSUM parameter during the export operation.


翻译如下:
导出表 HR.EMPLOYEES,并向转储文件添加一个校验和,以便能够确认转储文件在导出之后仍然有效,并且数据是完整的,没有被破坏。Oracle数据泵导出将控制信息写入转储文件的头块:Oracle Database 21c 扩展了数据完整性检查,为Oracle Data Pump和外部表转储文件头之外的所有剩余块添加了额外的校验和。在导出操作期间使用CHECKSUM参数。

expdp system/oracle21c@PDB21 TABLES=hr.employees DUMPFILE=dp_dir:emp.dmp CHECKSUM=yes REUSE_DUMPFILES=yes

注意:校验和算法默认为 SHA256 256位。
当然你也可以使用其他算法:如果您想使用 SHA384 384 位哈希算法或 SHA512 512 位哈希算法或 CRC32 32 位校验和,请使用 CHECKSUM_ALGORITHM 参数,而不是使用 SHA256 位哈希算法的校验和参数。即取消掉参数 CHECKSUM 即可。

$ expdp system/oracle21c@PDB21 TABLES=hr.employees DUMPFILE=dp_dir:emp384.dmp CHECKSUM_ALGORITHM=SHA384 CHECKSUM=no REUSE_DUMPFILES=yes
Copyright (c) 1982, 2020, Oracle and/or its affiliates.  All rights reserved.
ORA-39002: invalid operationORA-39050: parameter CHECKSUM=NO is incompatible with parameter CHECKSUM_ALGORITHM
$ expdp system/oracle21c@PDB21 TABLES=hr.employees DUMPFILE=dp_dir:emp512.dmp CHECKSUM_ALGORITHM=SHA512 REUSE_DUMPFILES=yes
Copyright (c) 1982, 2020, Oracle and/or its affiliates.  All rights reserved.
Starting "SYSTEM"."SYS_EXPORT_TABLE_01":  system/********@PDB21 TABLES=hr.employees dump


在导入表之前,验证转储文件是否已损坏,并未实际执行导入命令。

使用参数 VERIFY_ONLY=YES 找出两个转储文件中的哪一个损坏了。

$ impdp system@PDB21 FULL=yes DUMPFILE=dp_dir:emp512.dmp VERIFY_ONLY=YES
Copyright (c) 1982, 2020, Oracle and/or its affiliates.  All rights reserved.
Verifying dump file checksumsMaster table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloadeddump file set is completeverified checksum for dump file "/home/oracle/emp512.dmp"dump file set is consistentJob "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at Fri Feb 7 05:42:40 2020 elapsed 0 00:00:01
$ impdp system@PDB21 FULL=yes DUMPFILE=dp_dir:emp.dmp VERIFY_ONLY=YES
Copyright (c) 1982, 2020, Oracle and/or its affiliates.  All rights reserved.Password: password
ORA-39001: invalid argument valueORA-39000: bad dump file specificationORA-39411: header checksum error in dump file "/home/oracle/emp.dmp"
$ oerr ora 3941139411, 00000, "header checksum error in dump file \"%s\""// *Cause:  The header block for the Data Pump dump file contained a//          header checksum that did not match the value calculated from the//          header block as read from disk. This indicates that the header//          was tampered with or otherwise corrupted due to transmission or//          media failure.// *Action: Contact Oracle Support Services.$

导入表
使用损坏的转储文件导入表。如果校验和是在导出转储文件完成时生成的,那么校验和将在导入期间进行验证。

$ impdp system/oracle21c@PDB21 FULL=yes DUMPFILE=dp_dir:emp.dmpCopyright (c) 1982, 2020, Oracle and/or its affiliates.  All rights reserved.ORA-39001: invalid argument valueORA-39000: bad dump file specificationORA-39411: header checksum error in dump file "/home/oracle/emp.dmp"

使用未损坏的转储文件导入表。如果校验和是在导出转储文件完成时生成的,那么如果您提到参数VERIFY_CHECKSUM,则在导入过程中验证校验和。Verifying dump file checksums

$ impdp system/oracle21c@PDB21 FULL=yes DUMPFILE=dp_dir:emp512.dmp VERIFY_CHECKSUM=YES
Copyright (c) 1982, 2020, Oracle and/or its affiliates.  All rights reserved.Verifying dump file checksumsMaster table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloadedStarting "SYSTEM"."SYS_IMPORT_FULL_01":  system/********@PDB21 FULL=yes DUMPFILE=dp_dir:emp512.dmp VERIFY_CHECKSUM=YESProcessing object type TABLE_EXPORT/TABLE/TABLEProcessing object type TABLE_EXPORT/TABLE/TABLE_DATA. . imported "HR"."EMPLOYEES"                            17.08 KB     107 rows…………

VERIFY_CHECKSUM=NO 时会出现警告:转储文件校验和验证被禁用。Warning: dump file checksum verification is disabled.

$ impdp hr/hr@PDB21 FULL=yes DUMPFILE=dp_dir:emp512.dmp VERIFY_CHECKSUM=NO
Copyright (c) 1982, 2020, Oracle and/or its affiliates.  All rights reserved.Master table "HR"."SYS_IMPORT_FULL_01" successfully loaded/unloadedConnected to: Oracle Database 20c Enterprise Edition Release 20.0.0.0.0 - ProductionWarning: dump file checksum verification is disabledMaster table "HR"."SYS_IMPORT_FULL_01" successfully loaded/unloadedStarting "HR"."SYS_IMPORT_FULL_01":  hr/********@PDB21 FULL=yes DUMPFILE=dp_dir:emp512.dmp VERIFY_CHECKSUM=NOProcessing object type TABLE_EXPORT/TABLE/TABLEProcessing object type TABLE_EXPORT/TABLE/TABLE_DATA. . imported "HR"."EMPLOYEES"                          17.08 KB     107 rows…………

2. 数据泵支持同时使用 INCLUDE 和 EXCLUDE


从 Oracle Database 21c 开始,Oracle Data Pump 允许您在同一个命令中设置 INCLUDE 和 EXCLUDE 参数。在命令中包含这两个参数时,Oracle 数据泵首先处理 include 参数,这样O racle 数据泵作业只包含标识为 INCLUDE 的对象。然后,它处理 EXCLUDE 参数,这可以进一步限制作业处理的对象。在该命令运行时,将删除包含对象列表中由 EXCLUDE 参数指定的任何对象。

例如:导出包含表 ‘JOBS’,‘DEPARTMENTS’ 的同时排除统计信息

$ expdp hr/hr@PDB21 DUMPFILE=hr.dmp DIRECTORY=dp_dir INCLUDE=TABLE:“IN (‘JOBS’,‘DEPARTMENTS’)” EXCLUDE=STATISTICS REUSE_DUMPFILES=YES

3. Oracle Data Pump 可以并行可传输的表空间元数据操作

在传输表空间导入导出时可以实现并行传输。

CREATE TABLESPACE users DATAFILE '/u01/app/oracle/oradata/CDB21/users01.dbf' SIZE 100M;ALTER TABLESPACE users READ ONLY;
$ expdp \"sys@PDB21 AS SYSDBA\" dumpfile=PDB21.dmp TRANSPORT_TABLESPACES=users TRANSPORT_FULL_CHECK=YES LOGFILE=tts.log REUSE_DUMPFILES=YES PARALLEL=2
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.Password: oracle21c
Starting "SYS"."SYS_EXPORT_TRANSPORTABLE_02":  "sys/********@PDB21 AS SYSDBA" dumpfile=PDB21.dmp TRANSPORT_TABLESPACES=users TRANSPORT_FULL_CHECK=YES LOGFILE=tts.log REUSE_DUMPFILES=YES PARALLEL=2ORA-39396: Warning: exporting encrypted data using transportable option without password
ORA-39396: Warning: exporting encrypted data using transportable option without password
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLKProcessing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLKMaster table "SYS"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded


ORA-39396 警告可以忽略,然后表空间恢复读写模式。

ALTER TABLESPACE users READ WRITE;

4. Oracle Data Pump 提供可选的索引压缩

如果没有指定,那么索引压缩子句被省略(并且索引被赋予表空间的默认压缩)。但是,如果您使用压缩,那么Oracle 建议您使用 COMPRESS ADVANCED LOW。使用指定的压缩创建索引。

如果索引压缩子句不止一个单词,那么它必须包含在单引号或双引号中。此外,您的操作系统可能要求您将子句括在转义字符中,例如反斜杠字符。例如:

TRANSFORM=INDEX_COMPRESSION_CLAUSE:“COMPRESS ADVANCED LOW”

以下是一个简单案例,可参考:


SQL> SELECT compression, compress_for FROM DBA_TABLES WHERE table_name='EMPLOYEES';COMPRESS COMPRESS_FOR-------- ------------------------------DISABLEDSQL> COL INDEX_NAME FORMAT A30SQL> SELECT index_name, compression FROM dba_indexes WHERE table_name='EMPLOYEES';
INDEX_NAME                     COMPRESSION------------------------------ -------------EMP_NAME_IX                    DISABLEDEMP_EMAIL_UK                   DISABLEDEMP_EMP_ID_PK                  DISABLEDEMP_DEPARTMENT_IX              DISABLEDEMP_JOB_IX                     DISABLEDEMP_MANAGER_IX                 DISABLED
6 rows selected.
--创建导出目录SQL> CREATE OR REPLACE DIRECTORY dp_dir AS '/home/oracle/test';
SQL> GRANT read, write ON DIRECTORY dp_dir TO hr;-- 导出表$ expdp hr@PDB21 DUMPFILE=PDB21.dmp DIRECTORY=dp_dir TABLES=EMPLOYEES REUSE_DUMPFILES=YES--导入表,同环境下测试可先删除然后导入SQL> DROP TABLE hr.employees CASCADE CONSTRAINTS;
$ impdp hr@PDB21 FULL=Y DUMPFILE=PDB21.dmp DIRECTORY=dp_dir TRANSFORM=TABLE_COMPRESSION_CLAUSE:\"COMPRESS BASIC\" TRANSFORM=INDEX_COMPRESSION_CLAUSE:\"COMPRESS ADVANCED LOW\" EXCLUDE=CONSTRAINT
--查看压缩方式
SQL> SELECT compression, compress_for FROM DBA_TABLES WHERE table_name='EMPLOYEES';COMPRESS COMPRESS_FOR-------- ------------------------------ENABLED  BASICSQL> COL INDEX_NAME FORMAT A30SQL> SELECT index_name, compression FROM dba_indexes WHERE table_name='EMPLOYEES';INDEX_NAME                     COMPRESSION------------------------------ -------------EMP_DEPARTMENT_IX              ADVANCED LOWEMP_JOB_IX                     ADVANCED LOWEMP_MANAGER_IX                 ADVANCED LOWEMP_NAME_IX                    ADVANCED LOW

5. 另外,还有 Oracle Data Pump 支持从云对象存储导出和导入、Oracle Data Pump 恢复可传输表空间作业、Oracle Data Pump 支持原生 JSON 数据类型。

Oracle Data Pump 有能力恢复可运输表空间的导出和导入工作。由于错误或其他问题,您会发现可传输表空间导出或导入作业停止。Oracle Data Pump 恢复这些停止的作业的能力有助于节省您的时间,并使系统更加可用。

最后,21C 到底有哪些值得一提的新特性,每个人都看到的不尽相同。不可否认, Oracle 是非常强大的数据库,必须心存敬畏,但是时代在变化,我们要拥抱变化,不断学习,心存感激,心存敬畏。

参考链接:
https://www.modb.pro/db/41888
https://www.modb.pro/db/41902
https://github.com/digoal/blog/blob/master/202012/20201210_02.md
https://docs.oracle.com/en/database/oracle/oracle-database/21/nfcon/index.html

墨天轮原文链接:https://www.modb.pro/db/42031(复制到浏览器中打开或者点击“阅读原文”立即查看)

推荐阅读:144页!分享珍藏已久的数据库技术年刊

推荐下载:2020数据技术嘉年华PPT下载


2020数据技术嘉年华近50个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“DTC2020”获得!

视频号,新的分享时代,关注我们,看看有什么新发现?

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓


云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值