oracle ADG ora-30927
環(huán)境:centos6.8 11.2.0.3.10(64bit)
本來是沒有這個問題的,但是由于最近對只讀庫做了一定的調(diào)整,在重啟后,發(fā)現(xiàn)觸發(fā)了這個bug。這個bug以前出現(xiàn)過,以前是通過重啟只讀庫,重新同步就解決了,但是這次多次重啟發(fā)現(xiàn)還是沒能規(guī)避這個bug,我沒有mos賬號,無法下載補丁。這里通過多次測試,并對比調(diào)整前后的設(shè)置,發(fā)現(xiàn)只是恢復(fù)并行度不同,以前重啟是使用了默認的并行度,這次特意關(guān)閉了并行恢復(fù),在講并行度設(shè)置為2后暫時規(guī)避了改問題,這里記錄一下。另外在asktom上有人說加hint(這個 /*+ inline */ )也能暫時解決, 對于改解決方式,他們的回復(fù)是,hint不是每次都會生效,所以錯誤會不可預(yù)期的還會出現(xiàn)。
以下為轉(zhuǎn)載的打補丁升級方式解決問題:
http://blog.itpub.net/30820196/viewspace-2132271/
一、環(huán)境
數(shù)據(jù)庫環(huán)境為DG一主三備(最大可用模式),操作系統(tǒng)均為CentOS release 6.5版本,數(shù)據(jù)庫版本11.2.0.3.15
二、描述
2016年12月26日下午,業(yè)務(wù)人員突然說系統(tǒng)不能用,一些網(wǎng)頁頻繁報錯,沒辦法將數(shù)據(jù)查出來,最后結(jié)合開發(fā)人將對應(yīng)的sql提取出來進行分析,發(fā)現(xiàn)所有的sql均帶有with語法,且都是對standby databae進行的查詢。通過metalink查找發(fā)現(xiàn),這與一個bug有關(guān)。在ADG環(huán)境中使用with語句且系統(tǒng)自動生成臨時表時會出現(xiàn)
ORA-30927: Unable to complete execution due to failure in temporary table transformation報錯。(在standby database中會出現(xiàn))
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))
此時線上的數(shù)據(jù)庫PSU已打到了11.2.0.3.15但是沒有包含這個bug的補丁。補丁號(14143632)
例如:執(zhí)行如下代碼,with內(nèi)的表被使用了兩次,oracle會自動生成一個臨時表來存放with內(nèi)的表。
-
With a
as
(
-
Select
object _id aa
,object_name na
from dba_objects
-
)
-
Select
*
from a
where aa
in
(
select a
.aa
from a
)
;
而對于with內(nèi)的表只使用一次的是不會生成臨時表
-
with a
as
(
-
select object_id aa
,object_name na
from dba_objects
-
)
-
select
*
from a
;
三、解決
在METALINK下載相應(yīng)的補丁,上傳至standby database服務(wù)器
通過opatch查看為一個online的補丁。
且需要19769496這個補丁,在查看以前安裝過的補丁發(fā)現(xiàn)已經(jīng)有這個補丁。現(xiàn)在就可以直接在線打補丁。
1. 檢查可以在線處理
- [oracle@oracle-test 14143632]$
opatch query -all online
- Oracle 中間補丁程序安裝程序版本 11.2.0.3.6
- 版權(quán)所有 (c) 2013, Oracle Corporation。保留所有權(quán)利。
- Oracle Home : /home/app/oracle/product/11.2.0/dbhome_1
- Central Inventory : /home/app/oraInventory
- from : /home/app/oracle/product/11.2.0/dbhome_1/oraInst.loc
- OPatch version : 11.2.0.3.6
- OUI version : 11.2.0.3.0
- Log file location : /home/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch3016-12-27_15-36-57下午_1.log
- -------------------------------------------------------------------------------
- Patch created on 5 Jun 2015, 23:20:09 hrs PST8PDT
-
Need to shutdown Oracle instances: false
- Patch is roll-backable: true
- Patch is a "Patchset Update": false
- Patch is a rolling patch: true
- Patch has sql related actions: false
-
Patch is an online patch: true
- Patch is a portal patch: false
- Patch is an "auto-enabled" patch: false
- Patch is translatable: false
- List of platforms supported:
- 226: Linux x86-64
- List of prereq patches:
- 19769496
- List of overlay patches:
- 19769496
- List of bugs to be fixed:
- 14143632:
QUERIES MAY FAIL WITH ORA-30927 ERRORS ON AN ADG STANDBY DATABASE
- This patch is a "singleton" patch.
- This patch belongs to the "db" product family
- This patch supports the patching model as "one-off"
- This patch supports the language "en"
- List of executables affected:
- ORACLE_HOME/bin/oracle
- ORACLE_HOME/bin/renamedg
- ORACLE_HOME/lib/libclntsh.so.11.1
- List of optional components:
- oracle.rdbms: 11.2.0.3.0
- List of optional actions:
- Patch the Database instances with Online Patch hpatch/bug14143632.pch
- Possible XML representation of the patch:
- 14143632
- -------------------------------------------------------------------------------
- OPatch succeeded.
2. 在線打補丁
檢查現(xiàn)有補丁
- [oracle@newfhldb1 OPatch]$
opatch lsinventory
打
14143632
補丁
- [oracle@newfhldb1 ~]$ cd 14143632/
- [oracle@newfhldb1 14143632]$ ls
- etc files online README.txt
- **此處sid username password 均對應(yīng)當前數(shù)據(jù)庫的sid,username以及password最好使有dba權(quán)限的用戶**
- [oracle@newfhldb1 14143632]$
opatch apply online -connectString :::
- Oracle 中間補丁程序安裝程序版本 11.2.0.3.6
- 版權(quán)所有 (c) 2013, Oracle Corporation。保留所有權(quán)利。
- Oracle Home : /usr/app/oracle/110203/v01
- Central Inventory : /usr/app/oracle/oraInventory
- from : /usr/app/oracle/110203/v01/oraInst.loc
- OPatch version : 11.2.0.3.6
- OUI version : 11.2.0.3.0
- 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
- 補丁程序只應(yīng)在 '-all_nodes' 模式下應(yīng)用/回退。
- 將 RAC 模式轉(zhuǎn)換為 '-all_nodes' 模式。
- Applying interim patch '14143632' to OH '/usr/app/oracle/110203/v01'
- Verifying environment and performing prerequisite checks...
- All checks passed.
- 提供電子郵件地址以用于接收有關(guān)安全問題的通知, 安裝 Oracle Configuration Manager 并啟動它。如果您使用 My Oracle
- Support 電子郵件地址/用戶名, 操作將更簡單。
- 有關(guān)詳細信息, 請訪問 http://www.oracle.com/support/policies.html。
- 電子郵件地址/用戶名:
- 尚未提供電子郵件地址以接收有關(guān)安全問題的通知。
- 是否不希望收到有關(guān)安全問題 (是 [Y], 否 [N]) [N] 的通知: y
- Backing up files...
- 正在為組件 oracle.rdbms, 11.2.0.3.0 打補丁...
- 正在數(shù)據(jù)庫 'fhlsys' 上安裝和啟用聯(lián)機補丁程序 'bug14143632.pch'。
- Verifying the update...
- Patch 14143632 successfully applied
- 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
-
OPatch succeeded.
一共三臺
standby
數(shù)據(jù)庫,依次安裝。
補丁安裝成功,在執(zhí)行相應(yīng)帶有
with
且生成臨時表的
sql
語句,執(zhí)行成功。