ADG--Ora-30927報錯處理
一、環境
資料庫環境為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內的表。
-
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內的表只使用一次的是不會生成臨時表
-
with a as (
-
select object_id aa,object_name na from dba_objects
-
)
- select * from a;
三、解決
在METALINK下載相應的補丁,上傳至standby database伺服器
通過opatch檢視為一個online的補丁。
且需要19769496這個補丁,在檢視以前安裝過的補丁發現已經有這個補丁。現在就可以直接線上打補丁。
1. 檢查可以線上處理
- [oracle@oracle-test 14143632]$ opatch query -all online
- Oracle 中間補丁程式安裝程式版本 11.2.0.3.6
- 版權所有 (c) 2013, Oracle Corporation。保留所有權利。
- 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/opatch2016-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. 線上打補丁
檢查現有補丁- [oracle@newfhldb1 OPatch]$ opatch lsinventory
- [oracle@newfhldb1 ~]$ cd 14143632/
- [oracle@newfhldb1 14143632]$ ls
- etc files online README.txt
- **此處sid username password 均對應當前資料庫的sid,username以及password最好使有dba許可權的使用者**
- [oracle@newfhldb1 14143632]$ opatch apply online -connectString :::
- Oracle 中間補丁程式安裝程式版本 11.2.0.3.6
- 版權所有 (c) 2013, Oracle Corporation。保留所有權利。
- 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
- 補丁程式只應在 '-all_nodes' 模式下應用/回退。
- 將 RAC 模式轉換為 '-all_nodes' 模式。
- Applying interim patch '14143632' to OH '/usr/app/oracle/110203/v01'
- Verifying environment and performing prerequisite checks...
- All checks passed.
- 提供電子郵件地址以用於接收有關安全問題的通知, 安裝 Oracle Configuration Manager 並啟動它。如果您使用 My Oracle
- Support 電子郵件地址/使用者名稱, 操作將更簡單。
- 有關詳細資訊, 請訪問 http://www.oracle.com/support/policies.html。
- 電子郵件地址/使用者名稱:
- 尚未提供電子郵件地址以接收有關安全問題的通知。
- 是否不希望收到有關安全問題 (是 [Y], 否 [N]) [N] 的通知: y
- Backing up files...
- 正在為元件 oracle.rdbms, 11.2.0.3.0 打補丁...
- 正在資料庫 'fhlsys' 上安裝和啟用聯機補丁程式 '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資料庫,依次安裝。
補丁安裝成功,在執行相應帶有with且生成臨時表的sql語句,執行成功。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30820196/viewspace-2132271/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Extjs報錯處理JS
- DG報錯的處理
- errpt報錯處理
- Gulp壓縮報錯處理
- rails gem報錯的處理AI
- Javascript程式碼報錯處理JavaScript
- 各種報錯處理方法
- Too many open files報錯處理
- Mysql自動處理同步報錯MySql
- yum groupinstall報錯,處理方法
- ORA-02429 報錯處理
- mysql複製報錯案例處理MySql
- Python 入門級報錯處理Python
- 批處理的聊天程式報錯求救!!!!!
- 線上MYSQL同步報錯故障處理總結MySql
- ORA-1654報錯處理一則
- ORA-00979: not a GROUP BY expression報錯處理Express
- 匯入專案@override 報錯處理IDE
- EBS服務啟動報錯基本處理
- pl/sql developer除錯儲存過程報錯處理SQLDeveloper除錯儲存過程
- Oracle 12c ORA-29548 報錯處理Oracle
- 線上MYSQL同步報錯故障處理方法總結MySql
- 【故障處理】 DBCA建庫報錯CRS-2566
- COM+元件啟動報錯問題處理元件
- 錯誤處理
- ora-04045和ora-16000報錯處理
- Fatal NI connect error 12170.報錯處理Error
- CI中RESTURL含有中文怎麼處理(報錯:TheURIyousubmittedhasdisallowedcharacters)RESTMIT
- 一次歸檔報錯的處理和分析
- RAC環境TNS-12541報錯處理
- 處理動態連結庫報錯的問題
- ES報錯Result window is too large問題處理薦
- oracle ORA-01940 報錯的處理方法Oracle
- oracle 9.2.0.7 + hp_unix exp匯出報錯處理Oracle
- PHP錯誤處理和異常處理PHP
- PHP 錯誤處理PHP
- php錯誤處理PHP
- Go 錯誤處理Go