oracle ADG ora-30927

发布时间:2020-08-10 11:45:30 作者:running_life
来源:ITPUB博客 阅读:151

环境:centos6.8  11.2.0.3.10(64bit)

本来是没有这个问题的,但是由于最近对只读库做了一定的调整,在重启后,发现触发了这个bug。这个bug以前出现过,以前是通过重启只读库,重新同步就解决了,但是这次多次重启发现还是没能规避这个bug,我没有mos账号,无法下载补丁。这里通过多次测试,并对比调整前后的设置,发现只是恢复并行度不同,以前重启是使用了默认的并行度,这次特意关闭了并行恢复,在讲并行度设置为2后暂时规避了改问题,这里记录一下。另外在asktom上有人说加hint(这个 /*+ inline */ )也能暂时解决, 对于改解决方式,他们的回复是,hint不是每次都会生效,所以错误会不可预期的还会出现。

以下为转载的打补丁升级方式解决问题:

http://blog.itpub.net/30820196/viewspace-2132271/

一、环境

数据库环境为DG一主三备(最大可用模式),操作系统均为CentOS release 6.5版本,数据库版本11.2.0.3.15

二、描述

2016年12月26日下午,业务人员突然说系统不能用,一些网页频繁报错,没办法将数据查出来,最后结合开发人将对应的sql提取出来进行分析,发现所有的sql均带有with语法,且都是对standby databae进行的查询。通过metalink查找发现,这与一个bug有关。在ADG环境中使用with语句且系统自动生成临时表时会出现

ORA-30927: Unable to complete execution due to failure in temporary table transformation报错。(在standby database中会出现)

METALINK上的描述是:

On ADG, queries that use a cursor-duration temporary table may fail with ORA-30927 errors.

Such queries use Star with Temp Transformation and subquery factoring (WITH clause).

(Bug 14143632- ora-30927 on active data guard(文档ID 14143632.8))

此时线上的数据库PSU已打到了11.2.0.3.15但是没有包含这个bug的补丁。补丁号(14143632)

例如:执行如下代码,with内的表被使用了两次,oracle会自动生成一个临时表来存放with内的表。

  1. With a  as  (
  2. Select  object _id aa ,object_name na  from dba_objects
  3. )
  4. Select  *  from a  where aa  in  ( select a .aa  from a ) ;

oracle ADG ora-30927

而对于with内的表只使用一次的是不会生成临时表

  1. with a  as  (
  2. select object_id aa ,object_name na  from dba_objects
  3. )
  4. select  *  from a ;

oracle ADG ora-30927

三、解决

在METALINK下载相应的补丁,上传至standby database服务器

通过opatch查看为一个online的补丁。

且需要19769496这个补丁,在查看以前安装过的补丁发现已经有这个补丁。现在就可以直接在线打补丁。

1.    检查可以在线处理

  1. [oracle@oracle-test 14143632]$  opatch query -all online
  2. Oracle 中间补丁程序安装程序版本 11.2.0.3.6
  3. 版权所有 (c) 2013, Oracle Corporation。保留所有权利。
  4. Oracle Home : /home/app/oracle/product/11.2.0/dbhome_1
  5. Central Inventory : /home/app/oraInventory
  6. from : /home/app/oracle/product/11.2.0/dbhome_1/oraInst.loc
  7. OPatch version : 11.2.0.3.6
  8. OUI version : 11.2.0.3.0
  9. Log file location : /home/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch3016-12-27_15-36-57下午_1.log
  10. -------------------------------------------------------------------------------
  11. Patch created on 5 Jun 2015, 23:20:09 hrs PST8PDT
  12. Need to shutdown Oracle instances: false
  13. Patch is roll-backable: true
  14. Patch is a "Patchset Update": false
  15. Patch is a rolling patch: true
  16. Patch has sql related actions: false
  17. Patch is an online patch: true
  18. Patch is a portal patch: false
  19. Patch is an "auto-enabled" patch: false
  20. Patch is translatable: false
  21. List of platforms supported:
  22. 226: Linux x86-64
  23. List of prereq patches:
  24. 19769496
  25. List of overlay patches:
  26. 19769496
  27. List of bugs to be fixed:
  28. 14143632:  QUERIES MAY FAIL WITH ORA-30927 ERRORS ON AN ADG STANDBY DATABASE
  29. This patch is a "singleton" patch.
  30. This patch belongs to the "db" product family
  31. This patch supports the patching model as "one-off"
  32. This patch supports the language "en"
  33. List of executables affected:
  34. ORACLE_HOME/bin/oracle
  35. ORACLE_HOME/bin/renamedg
  36. ORACLE_HOME/lib/libclntsh.so.11.1
  37. List of optional components:
  38. oracle.rdbms: 11.2.0.3.0
  39. List of optional actions:
  40. Patch the Database instances with Online Patch hpatch/bug14143632.pch
  41. Possible XML representation of the patch:
  42. 14143632
  43. -------------------------------------------------------------------------------
  44. OPatch succeeded.

2.    在线打补丁

检查现有补丁

  1. [oracle@newfhldb1 OPatch]$  opatch lsinventory

14143632 补丁

  1. [oracle@newfhldb1 ~]$ cd 14143632/
  2. [oracle@newfhldb1 14143632]$ ls
  3. etc files online README.txt
  4. **此处sid username password 均对应当前数据库的sid,username以及password最好使有dba权限的用户**
  5. [oracle@newfhldb1 14143632]$  opatch apply online -connectString :::
  6. Oracle 中间补丁程序安装程序版本 11.2.0.3.6
  7. 版权所有 (c) 2013, Oracle Corporation。保留所有权利。
  8. Oracle Home : /usr/app/oracle/110203/v01
  9. Central Inventory : /usr/app/oracle/oraInventory
  10. from : /usr/app/oracle/110203/v01/oraInst.loc
  11. OPatch version : 11.2.0.3.6
  12. OUI version : 11.2.0.3.0
  13. Log file location : /usr/app/oracle/110203/v01/cfgtoollogs/opatch/14143632_Dec_27_2016_12_57_10/apply2016-12-27_12-57-10下午_1.log
  14. 补丁程序只应在 '-all_nodes' 模式下应用/回退。
  15. 将 RAC 模式转换为 '-all_nodes' 模式。
  16. Applying interim patch '14143632' to OH '/usr/app/oracle/110203/v01'
  17. Verifying environment and performing prerequisite checks...
  18. All checks passed.
  19. 提供电子邮件地址以用于接收有关安全问题的通知, 安装 Oracle Configuration Manager 并启动它。如果您使用 My Oracle
  20. Support 电子邮件地址/用户名, 操作将更简单。
  21. 有关详细信息, 请访问 http://www.oracle.com/support/policies.html。
  22. 电子邮件地址/用户名:
  23. 尚未提供电子邮件地址以接收有关安全问题的通知。
  24. 是否不希望收到有关安全问题 (是 [Y], 否 [N]) [N] 的通知: y
  25. Backing up files...
  26. 正在为组件 oracle.rdbms, 11.2.0.3.0 打补丁...
  27. 正在数据库 'fhlsys' 上安装和启用联机补丁程序 'bug14143632.pch'。
  28. Verifying the update...
  29. Patch 14143632 successfully applied
  30. Log file location: /usr/app/oracle/110203/v01/cfgtoollogs/opatch/14143632_Dec_27_2016_12_57_10/apply2016-12-27_12-57-10下午_1.log
  31. OPatch succeeded.

一共三台 standby 数据库,依次安装。

补丁安装成功,在执行相应带有 with 且生成临时表的 sql 语句,执行成功。

推荐阅读:
  1. 备库DUPLICATE后启用同步,开启ADG打开数据库时报错:ORA-10458
  2. ADG备库v$archived_log 视图更新

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

adg ora-30927 oracle

上一篇:PS入门基础教程学习有哪些内容

下一篇:django实现跨域请求的方法有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》