德哥 oracle兼容,Oracle 21C 新特性:数据泵相关新特性汇总

原标题: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 才是长期支持的稳定版本。

92548e2c2d4a4d7ed81b8a7db58dc95e.png

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

40a52cbaed417e4ca2f995fd32692374.png

由于今年的特殊环境,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. 原生的 Java 支持

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 checksumtothe dump filetobe able toconfirmthat the dump fileisstill valid afterthe export

andthat the dataisintact andhas notbeen corrupted. An OracleDataPump exportwrites control information intothe header blockofa dump file:

OracleDatabase21c extends the dataintegrity checks byadding an additional checksumforallthe remaining blocks beyond the header withinOracleDataPump

andexternaltabledump files. Usethe CHECKSUMparameter during the exportoperation.

翻译如下:

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

expdpsystem/oracle21c @PDB21TABLES=hr.employees DUMPFILE=dp_dir:emp.dmp CHECKSUM= yesREUSE_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= noREUSE_DUMPFILES=yes

Copyright (c) 1982, 2020, Oracleand/ orits affiliates. Allrights reserved.

ORA -39002: invalid operationORA -39050: parameter CHECKSUM= NOisincompatible withparameter CHECKSUM_ALGORITHM

$ expdp system/oracle21c@PDB21 TABLES=hr.employees DUMPFILE=dp_dir:emp512.dmp CHECKSUM_ALGORITHM=SHA512 REUSE_DUMPFILES=yes

Copyright (c) 1982, 2020, Oracleand/ orits affiliates. Allrights 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=YESCopyright (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 setiscompleteverified checksumfordump file"/home/oracle/emp512.dmp"dump filesetisconsistentJob "SYSTEM". "SYS_IMPORT_FULL_01"successfully completed atFri Feb 705: 42: 402020elapsed 000: 00: 01

$ impdp system@PDB21 FULL=yes DUMPFILE=dp_dir:emp.dmp VERIFY_ONLY=YES

Copyright (c) 1982, 2020, Oracleand/ orits affiliates. Allrights reserved.Password: password

ORA -39001: invalid argument valueORA -39000: bad dump filespecificationORA -39411: header checksumerrorindump file"/home/oracle/emp.dmp"

$ oerr ora 3941139411, 00000, "header checksum error in dump file "%s""// *Cause: The header blockforthe DataPump dump filecontained a// header checksumthat did notmatchthe valuecalculated fromthe// header blockasreadfromdisk. This indicates that the header// was tampered withorotherwise corrupted due totransmission or// media failure.// * Action: Contact OracleSupport Services.$

导入表

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

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

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

$ impdp system/oracle21c@PDB21 FULL=yes DUMPFILE=dp_dir:emp512.dmp VERIFY_CHECKSUM=YESCopyright (c) 1982, 2020, Oracle and/ orits affiliates. All rights reserved.Verifying dumpfile 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.08KB 107rows…………

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

$ impdp hr/hr@PDB21 FULL=yes DUMPFILE=dp_dir:emp512.dmp VERIFY_CHECKSUM=NOCopyright (c) 1982, 2020, Oracle and/ orits 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: dumpfile 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.08KB 107rows…………

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

e600f6bc0d1bb79aef21480082955dd9.png

从 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 可以并行可传输的表空间元数据操作

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

227da20052e9a34c4dda21611ff87d8a.png

CREATETABLESPACEusersDATAFILE'/u01/app/oracle/oradata/CDB21/users01.dbf'SIZE100M;ALTERTABLESPACEusersREADONLY;$ 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 警告可以忽略,然后表空间恢复读写模式。

ALTERTABLESPACEusersREADWRITE;

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(复制到浏览器中打开或者点击“阅读原文”立即查看)返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值