使用DBMS_APPLICATION_INFO.SET_CLIENT_INFO來定位當前session所在的程式模組
在B/S系統中,頁面紛繁複雜,而且經過系統長時間執行,如果發現某個session的wait比較嚴重,進行sql最佳化時,很難知道這個sql是用在程式的哪個模組,很多時候只能根據開發人員的經驗來定位這個sql,或者開啟程式程式碼,搜尋。這樣的效率很低,這裡介紹一個方法來快速定位發生問題的sql的位置。[@more@]
ORACLE提供了DBMS_APPLICATION_INFO包,其中提供了set_client_info、set_module、set_action、read_module、read_client_info、set_session_longops幾個過程,其中分別用於設定客戶端資訊、設定module資訊(這裡同時必須設定一個action資訊)、設定action資訊、讀取module資訊(同時也會得到action資訊)、讀取client_info資訊和手動設定一個會話為longops。
下面來看一個示例:
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
Connected as SYS
SQL> select distinct sid from v$mystat;
SID
----------
1036
SQL> select module,action,client_info from v$session where sid=1036;
MODULE ACTION CLIENT_INFO
------------------------------------------------ -------------------------------- ----------------------------------------------------------------
PL/SQL Developer Command Window - New
可以看到CLIENT_INFO為空。
SQL> exec dbms_application_info.set_client_info('test client info');
PL/SQL procedure successfully completed
SQL> select module,action,client_info from v$session where sid=1036;
MODULE ACTION CLIENT_INFO
------------------------------------------------ -------------------------------- ----------------------------------------------------------------
PL/SQL Developer Command Window - New test client info
設定後的CLIENT_INFO
SQL> exec dbms_application_info.set_module(module_name => 'test module',action_name => 'test action');
PL/SQL procedure successfully completed
SQL> select module,action,client_info from v$session where sid=1036;
MODULE ACTION CLIENT_INFO
------------------------------------------------ -------------------------------- ----------------------------------------------------------------
test module test action test client info
設定後的MODULE和ACTION
詳細的解釋請參考oracle的說明,在oracle的package的說明中就有詳細的解釋。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29674916/viewspace-2126986/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- IDEA如何快速定位到當前開啟檔案所在的目錄Idea
- UE4 在當前遊戲模組新增一個新的模組遊戲
- v$session - 你看到的event真的是session當前的等待事件麼?Session事件
- C#.net 獲取當前應用程式所在路徑及環境變數C#變數
- 高精定位模組(LMU)
- Linux當前當前程式Linux
- 使用sestatus命令來檢視SELinux的當前狀態Linux
- Flask Session 登入認證模組FlaskSession
- 各種語言裡獲取當前模組的方法:ABAP,ABSL,C,nodejsNodeJS
- DDD當前工程方法組合 - Kamil
- 記介面當中使用 session 是如何被排斥的Session
- Vue程式碼模組定位外掛vue-component-finder介紹Vue
- git獲取當前所在的目錄Git
- js獲取使用者當前所在城市(ip)JS
- 如何快速定位當前資料庫消耗 CPU 最高的 sql 語句?資料庫SQL
- python requests模組session的使用建議及整個會話中的所有cookie的方法PythonSession會話Cookie
- wtforms模組的使用ORM
- pymysql模組的使用MySql
- PostgreSQL 查詢當前執行中sql的執行計劃——pg_show_plans模組SQL
- 快速量產低功耗 4G 定位方案?Air201 模組來搞定!AI
- 如何查詢當前SAP使用者所屬的組織單元(organization unit)
- Git如何確定當前所在分支Git
- 使用面向 Aspect 的程式設計改進模組性程式設計
- openpyxl模組的日常使用
- Flask:sqlalchemy模組的使用FlaskSQL
- Python logging模組的使用Python
- glom模組的使用(一)
- glom模組的使用(二)
- Python中模組的使用Python
- js依據ip獲取使用者當前所在城市JS
- 早安打工人! 來把你的.NET程式模組化吧
- 從定位資料塊所在ASM磁碟到ASM strippingASM
- mumu模擬器 指定應用當前執行的 ABI 版本
- Flutter 小知識,Key的使用(獲取當前點選Widget位置/獲取當前Widget大小)Flutter
- C語言基礎 告知當前機器的位元組序C語言
- Python模組 adorner 的使用示例Python
- BeautifulSoup模組的使用方法
- 爬蟲-urllib模組的使用爬蟲
- Python 中argparse模組的使用Python