从去年Oracle提出在2019年6月份开始限制dblink使用,至今时间越来越近,部分用户针对于该问题不确定数据库是否需要安装最新补丁。
近期Oracle在support上已发布Orale数据库需要安装的补丁或采取的措施,先总结如下:
首先该问题针对于在使用dblink的情况下有效,未使用dblink可忽略该问题。
dblink所受影响总结如下:
1、如全部未安装这些补丁,或者数据库再11g之前,使用dblink不会对数据库有任何影响。
2、如数据库全部为11g及以后版本使用dblink,不会对数据库有任何影响。
3、跨补丁(即一套安装该补丁,一套未安装该补丁)使用dblink,在6月份以后不会不好使用,会在scn增长到低速scn的最大值后,dblink访问失败。
重要通告: 2019 年 6 月之前-对于 12.1.0.1, 11.2.0.3 以及 11.2.0.3 之前版本的数据库需要应用的补丁和采取的操作 (文档 ID 2519571.1)
通告内容:
对于数据库版本 11.1.0.7, 11.2.0.3 和 12.1.0.1,在2019年6月份之前,强烈推荐应用下面列出的对应的补丁集,从而避免在将来使用DB LINK时的潜在风险。
对于数据库版本 12.2, 12.1.0.2 和 11.2.0.4 不需要任何的操作。
如果数据库版本是 10.2 或者更早的版本,并且与 10.2 之后的版本有 DB LINK,该文档也适用。
对于数据库客户端和数据库服务器之间的通信,不受影响。(基于客户的反馈,我们正在评估是否需要对 10.2.0.5 的数据库版本提供一样的补丁集,该文档将持续更新)
需要的操作:
对于数据库版本 11.1.0.7, 11.2.0.3 和 12.1.0.1, 如果有 DB LINK 存在,确保至少应用如下的补丁集 / PSU / BP。
推荐的 PSU/RU |
|
补丁名称 |
补丁号 |
12.1.0.2.0 PATCH SET FOR ORACLE DATABASE SERVER |
Patch 17694377 |
12.1.0.1.0 PATCH SET FOR ORACLE DATABASE SERVER |
Upgrade to 12.1.0.2 or above Patch 17694377 |
11.2.0.4.0 PATCH SET FOR ORACLE DATABASE SERVER |
Patch 13390677 |
DATABASE PATCH SET UPDATE 11.2.0.3.9 (INCLUDES CPUJAN2014) |
Patch 17540582 |
DATABASE PATCH SET UPDATE 11.1.0.7.20 (INCLUDES CPUJUL2014) |
Patch 18522513 |
ORACLE 11G 11.2.0.3 PATCH 28 BUG FOR WINDOWS **Patch 28 is withdrawn. Apply Patch 29 or above. |
Patch 17906982 (Win x64) | Patch 17906981 (Win 32-Bit) ** Patch 29 Patch 18075406 (Win x64) | Patch 18075405 (Win 32-Bit) |
ORACLE 11G 11.1.0.7 PATCH 57 BUG FOR WINDOWS |
Patch 18944208 (Win x64) | Patch 18944207 (Win 32-Bit) |
QUARTERLY DATABASE PATCH FOR EXADATA (JAN 2014 - 11.2.0.3.22) |
Patch 17747147 |
DATABASE PATCH SET UPDATE 10.2.0.5.171017 and Patch 14121009 |
正在处理 |
总之,对于 11.2.0.4 和 12.1.0.2、12.2.0.1 及以上,已经包含该修改。 对于 11.1.0.7 和 11.2.0.3 有对应的补丁包含该修改。
对于其他的数据库版本,例如:10.2.0.5 和 11.2.0.2,为了避免 DB LINK 引起的潜在问题, 应该考虑升级数据库或者不要与新版本数据库(或者应用了本文提到的补丁集的数据库)进行 DB LINK 的连接。
时间点:
强烈建议该操作在 2019 年 6 月份之前完成。
支持和问题:
如果有任何问题,请访问: https://community.oracle.com/message/14710245#14710245
问题和参考:2019年6月前,数据库 12.1.0.1,11.2.0.3 和更早版本推荐的补丁和行动 (文档 ID 2522600.1) |
对于数据库版本 11.1.0.7,11.2.0.3 和 12.1.0.1,强烈建议在2019年6月前应用下面提到的补丁集,这是为了解决数据库间有 DBLINK 互相访问的时候,产生 SCN 过快增长的问题。 如果数据库版本是12.2,12.1.0.2 或者 11.2.0.4,不受影响。如果使用的 10.2 或者更低的版本,并且从 10G 数据库有 dblink 访问更高版本的数据库,那么这种情况下,这个文档适用。
数据库客户端和数据库服务器间的互访没有这个问题。
(基于客户反馈,我们正在评估在 10.2.0.5 上提供一个补丁的可行性,如果有类似的信息,这个文档后续会更新。)
1. 推荐的 patchset/PSU/BP/RU 级别?
参考 Note 2519571.1(重要通告:2019年6月之前 - 对于 12.1.0.1,11.2.0.3 以及 11.2.0.3 之前版本的数据库需要应用的补丁和采取的操作)
2. 应用上面补丁的截止时间?
所有受影响的数据库推荐在2019年6月份前升级到上面提到的版本或者更高。
3. 上面的补丁修改了哪些内容?
这些补丁增加了数据库当前最大 SCN(system change number)的限制。
在任何时间点上,数据库都会计算一个数据库能够使用的最大 scn 值,这个值是基于从1988年开始到现在经历的时间长度(单位秒)计算得出的,这个被称作数据库当前最大 scn 限制值。做这个限制的目的是让数据库的 scn 随着时间稳定增长,保证任何数据库的 scn 都可以使用500年。
上面推荐的补丁,允许数据库有一个更高的“SCN 速率”,从而数据库会有更高的最大 scn 限制值,这也会让应用了补丁的数据库可以支持更多的事务量,是以前数据库版本的很多倍。
请注意,上面推荐的补丁,只是增加当前 SCN 的最大限制值,当前 SCN 值不受影响。如果您的数据库在事务上没有大的变化,那么当前 SCN 仍然低于最大 SCN 限制值,并且在应用了上面补丁的数据库和没有上面补丁的数据库间使用 DBLINK,也没有问题。应用了上面的补丁,只是保证了万一您的事务有大的变化,也不会影响 DBLINK 使用。
应用了上面的补丁后,从2019年6月23日开始,当前最大 SCN 限制值就会改变。
4. 如果没有应用推荐的补丁会怎样?
如果上面推荐的补丁没有应用,数据库会有更低的“SCN 速率”,当然基于这个速率计算出的当前最大 SCN 的值也更低。
对于应用了补丁的数据库,“SCN 速率”更高,计算出的当前最大 SCN 的值也更高。
因此,会有种情况出现,打了补丁的数据库有更高的 SCN 值(因为更高的 SCN 速率),没有应用补丁的数据库有更低的 SCN 值(因为更低的 SCN 速率)。
当您在这样两个数据库间打开 dblink 的时候,两个数据库间需要同步 SCN,如果在没有应用补丁的数据库上,数据库 SCN 增长后超过了当前最大 SCN 限制值,那么 dblink 连接建立失败。
这种情况,在2019年6月23日后,可能不会马上出现,但是一个潜在的问题。
5. 如果数据库是 10.2 或者更老的版本,会怎样?
您应该认清未来潜在的 dblink 问题,开始考虑升级数据库到相应的版本或者不要在应用了补丁和没有应用补丁的数据库间使用 dblink。如果您继续使用 dblink,那么您可能在打开 dblink 的时候遇到错误,那个时候您需要断开 dblink 连接。
基于客户反馈,我们在 10.2.0.5 数据库上正在开发补丁,10g 需要 10.2.0.5.171017PSU 和补丁14121009。请注意,这些补丁需要 extended support 许可。
6. 如何才能知道 DBLINK 访问数据库的细节?
关于 DBLINK,请参考数据库管理员指导中的“Viewing Information About database Links”部分。
请注意,访问其他库的 dblink,可以通过视图 DBA_DB_LINKS 查询:
select * from dba_db_links;
对于 12.2 及以后的版本,可以使用下面的语句查看进来的 dblink 连接:
select * from dba_db_link_sources;
7. 在没有应用上面补丁的两个数据库间或者与更低版本的数据库之间使用 dblink,会有问题吗?
在这种情况下,不受影响。
8. 如果 dblink,是建立在一个应用补丁的数据和一个没有应用补丁的数据库之间,在2019年6月后会直接报错吗?
在2019年6月后不会直接不好用,但是可能在以后会有潜在的风险,参考问题4。
9. 如果我有一个 dblink,从老版本的数据库访问应用了上面推荐补丁的数据库,在2019年6月后失败了,如何处理?
应用补丁或者升级旧版本的数据库到上面提到的任何版本,保证旧版本数据库有同样的 SCN 速率。
10. 对于 11.2.0.4,12.1.0.2 和 12.2.0.1 数据库,需要做什么?
不需要做任何事情。
11. 我可以使用从低版本数据库到 12C 数据库传送表空间方案吗?会因为此次 SCN 的变化受到影响吗?
从没有打补丁数据库到打了上面补丁的数据库,这个没有影响。
当从应用了补丁的数据库到没有应用补丁的数据库,如果 SCN 比目标数据库能够接受的最大 SCN 值还高的话,系统会有错误提示。这个时候,您可以考虑使用 expdp。
12. 把一个 pdb 从没有应用补丁的数据库插入到应用了补丁的数据库上,会有问题吗?
如果 PDB 被插入到 12.1.0.2 或者包含了上面补丁的数据库版本,不受影响。
如果 PDB 是从应用了上面补丁的版本,插入到没有应用上面补丁的 12c 上,而且 PDB 有更高的 SCN,可能会遇到错误,参考问题11。
13. 支持和答疑
如果您有任何进步的问题,请参考社区:https://community.oracle.com/thread/4208535