一次OWB資料庫效能問題處理
專案組抱怨最近資料庫突然慢了很多,生成了最近兩小時的AWR發現有兩個SQL非常慢,拉了最近兩小時的AWR,顯示第2,3條SQL佔用大部分的CPU
Elapsed Time (s) |
Executions |
Elapsed Time per Exec (s) |
%Total |
%CPU |
%IO |
SQL Id |
SQL Module |
SQL Text |
32,960.61 |
3,215 |
10.25 |
66.31 |
62.49 |
4.32 |
OWB_CCS |
BEGIN wb_rt_notification.wait(... |
|
28,300.17 |
9,125 |
3.10 |
56.94 |
60.76 |
2.41 |
JDBC Thin Client |
select /*+ FIRST_ROWS(1) */ ta... |
|
9,252.65 |
3,390 |
2.73 |
18.62 |
68.57 |
11.94 |
JDBC Thin Client |
SELECT MIN(MSGID) FROM WB_RT_N... |
---63surt2yd6qmg完整SQL
select /*+ FIRST_ROWS(1) */ tab.rowid, tab.msgid, tab.corrid, tab.priority, tab.delay, tab.expiration , tab.retry_count, tab.exception_qschema, tab.exception_queue, tab.chain_no, tab.local_order_no, tab.enq_time, tab.time_manager_info, tab.state, tab.enq_tid, tab.step_no, tab.sender_name, tab.sender_address, tab.sender_protocol, tab.dequeue_msgid, tab.user_prop, tab.user_data from "OWBSYS"."WB_RT_NOTIFY_QUEUE_TAB" tab where q_name = :1 and corrid = :2 and (state = :3 ) for update skip locked
---79nv5f9ajsg3u完整SQL
SELECT MIN(MSGID) FROM WB_RT_NOTIFY_QUEUE_TAB N1 WHERE PRIORITY = ( SELECT MIN(N2.MSG_PRIORITY) FROM AQ$WB_RT_NOTIFY_QUEUE_TAB N2 WHERE N2.CORR_ID = :B1 AND MSG_STATE = 'READY') AND N1.CORRID = :B1
兩個SQL都是查詢AQ$WB_RT_NOTIFY_QUEUE_TAB,這個表是用於存放訊息佇列的,查了一下返回423萬條記錄,幾個條件過慮性都不強,我們看一下這些記錄為什麼這麼多
SQL> select count(1) from
2 "OWBSYS"."WB_RT_NOTIFY_QUEUE_TAB" tab
3 ;
COUNT(1)
----------
4234854
通過查詢metalink確認這是一個bug,過期的訊息列隊可以進行清理,下面為操作過程
[oracle4@svr1-219 sql]$ sqlplus owbsys/owbsys
SQL*Plus: Release 11.2.0.2.0 Production on Tue Apr 23 14:19:03 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> @stop_service.sql
Role set.
Available
Client managed service
PL/SQL procedure successfully completed.
SQL>
SQL> set verify off;
SQL> declare
2 l_po_t dbms_aqadm.aq$_purge_options_t;
3 begin
l_po_t.block := TRUE;
4 5 dbms_aqadm.purge_queue_table(
6 queue_table => 'WB_RT_NOTIFY_QUEUE_TAB',
7 purge_condition => 'QTVIEW.MSG_STATE=''EXPIRED''',
8 purge_options => l_po_t);
9 end;
10 /
PL/SQL procedure successfully completed.
SQL> select count(1) from wb_rt_notify_queue_tab;
COUNT(1)
----------
4091184
SQL>
SQL>
SQL> truncate table wb_rt_notify_queue_tab;
truncate table wb_rt_notify_queue_tab
*
ERROR at line 1:
ORA-24005: Inappropriate utilities used to perform. DDL on AQ table
OWBSYS.WB_RT_NOTIFY_QUEUE_TAB
SQL>
SQL> set verify off;
SQL> declare
2 l_po_t dbms_aqadm.aq$_purge_options_t;
3 begin
4 l_po_t.block := TRUE;
5 dbms_aqadm.purge_queue_table(
6 queue_table => 'WB_RT_NOTIFY_QUEUE_TAB',
7 purge_condition => NULL,
8 purge_options => l_po_t);
9 end;
10 /
PL/SQL procedure successfully completed.
SQL> select count(1) from wb_rt_notify_queue_tab;
COUNT(1)
----------
0
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle4@svr1-219 sql]$ sqlplus owbsys/owbsys
SQL*Plus: Release 11.2.0.2.0 Production on Tue Apr 23 14:24:49 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> @start_service.sql
Role set.
Available
Database managed service using 172.17.1.219:1525:g219u4 and home
/opt/software/oracle4/product/11.1.0/db_1
PL/SQL procedure successfully completed.
參考資料:
Truncating The OWB 11.2 Notifications Queue Table Fails With ORA-24005: Inappropriate utilities used to perform. DDL on AQ table [ID 1317254.1]
OWB 10.2 Notification Queue Table WB_RT_NOTIFY_QUEUE_TAB Does Not Dequeue [ID 578399.1]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21605631/viewspace-759715/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料處理--pandas問題
- Oracle資料庫中的逐行處理問題NEOracle資料庫
- openGauss資料庫xlog目錄滿問題處理資料庫
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- 資料庫主機重啟卡住問題處理分享資料庫
- 一次ORACLE資料庫undo壞塊處理Oracle資料庫
- Oracle資料庫處理壞塊問題常用命令Oracle資料庫
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- 使用資料庫處理併發可能導致的問題資料庫
- python中多程式處理資料庫連線的問題Python資料庫
- .net異常處理的效能問題
- X7一體機資料庫遷移問題處理資料庫
- 達夢資料庫日常管理之問題處理筆記1資料庫筆記
- 銀河麒麟系統安裝ORACLE資料庫問題處理Oracle資料庫
- 大資料處理需留意哪些問題大資料
- ES同步Mysql資料庫(包括出現問題怎麼處理哦)MySql資料庫
- 資料庫系列:巨量資料表的分頁效能問題資料庫
- Sql Server資料庫類似正規表示式的字元處理問題SQLServer資料庫字元
- MySql資料庫ibtmp1檔案增長問題處理記錄MySql資料庫
- 記一次 MySQL 資料庫單表恢復事故處理MySql資料庫
- 記一次處理達夢慢SQL問題SQL
- 一次詭異的MySQL問題處理故事MySql
- Oracle 記一次ORA-00001問題處理Oracle
- 記一次報錯 symlink(): Protocol error 問題處理ProtocolError
- 一次線上問題處理過程記錄
- iview Tree資料格式問題,無限遞迴樹處理資料View遞迴
- 乾貨丨RPA工程中的資料處理問題
- 【TRACE】如果通過10046跟蹤資料庫效能問題資料庫
- 記憶體洩漏引起的 資料庫效能問題記憶體資料庫
- K8S環境的Jenkin效能問題處理K8S
- 記一次資料庫查詢超時優化問題資料庫優化
- 爬蟲架構|利用Kafka處理資料推送問題(2)爬蟲架構Kafka
- 海量資料處理問題知識點複習手冊
- 資料庫管理-第118期 記一次開啟附加日誌導致的效能問題(202301129)資料庫
- SQL SERVER資料庫datediff函式引發的效能問題SQLServer資料庫函式
- Django ORM 引發的資料庫 N+1 效能問題DjangoORM資料庫
- pyinstaller打包cx_Oracle庫問題處理記錄Oracle
- Aix 7一次補丁安裝失敗問題處理AI
- 【虹科乾貨】使用記憶體資料庫解決三個資料庫效能問題記憶體資料庫