Oracle 執行語句歷史查詢—測試和實施人員必備技能
這個專案做下來,我發現現場的測試人員普遍都不會前臺抓SQL(就是指點選一下前臺介面的操作,然後去資料庫追查剛剛這個動作 操作了哪些表)。後來和做測試的幾個其它朋友聊天,也基本不知道這幾個檢視,感覺很詫異,這個應該是每一個測試人員,以及實施人員(沒參與專案資料庫開發,不熟悉每個業務具體操作那些表)常用的技能。因此決定總結下,把這小技巧給大家推薦下。
其實很簡單,就兩個oracle 自帶的檢視:v$sql_bind_capture 和 v$sql.
1、先點選下系統前臺操作,然後去資料庫查詢
select distinct sql_text, sql_id, address from v$sql where module = 'JDBC Thin Client' --資料庫的連結方式 and last_active_time>sysdate-0.0005 --很短的一個時間,不然太多不好區分 and parsing_schema_name like 'INVENTORY%'; --資料庫使用者名稱 |
2、 通個這個查詢我們可以知道,剛剛資料庫進行操作的SQL(如果語句很長就得看SQL_FULLTEXT這個欄位),如果你還想看詳細引數,就得繼續了。
select t.NAME, t.VALUE_STRING, t.* from gv$sql_bind_capture t where t.address = '0700000916BF5110'; |
Value_string就是你傳進去執行的變數值。很不幸的告訴你時間這樣顯示不了,但我們有辦法啊,繼續下面的查詢。
select t.value_string, t.NAME, t.datatype_string, DUMP(t.value_anydata), ANYDATA.accesstimestamp(t.value_anydata) from gv$sql_bind_capture t where address = '000000015E3964A8'; |
具體我就不解釋了。
關於v$sql_bind_capture檢視大家得注意下,由於資料庫引數配置的不同,這個儲存繫結變數的值重新整理時間是不同的,隱含引數 _cursor_bind_capture_interval,這個就是控制繫結變數抓取頻率的引數,預設值是900(15min)。修改引數值很小,可以快速獲取繫結變數的值: alter system set "_cursor_bind_capture_interval"=5 scope=both; 不過這個得根據你資料庫的具體情況來設定了。如果你抓取到的引數老是沒變化,你就要注意下這個抓取重新整理的頻率是多高了。
select * from v$parameter t where t.name like '%bind%';
還有一點也需要注意,如果你的資料庫是RAC多點叢集的話,v$sql_bind_capture這個表的資料並沒有存到共享儲存區,它是在被你連結的單點資料庫上面,所以有時候你可能查不到,這時就得單點登入一個個單點資料庫去試運氣了。
當你剛剛接觸別人的二手程式碼,或作為一個測試人員、實施人員、資料割接人員,不知道每個業務具體操作的是哪些表時,這兩檢視這樣查詢是不是很爽。哈哈
轉自:http://blog.csdn.net/runming918/article/details/7241028
個人學習總結:
在學習v$檢視是突然想去看看oracle資料庫的v$檢視有哪些,透過檢視dba_objects檢視,竟然只有四個,感覺很詫異,想想估計是自己弄錯了吧,oracle會不會就這麼多檢視啊,最後終於在v$fixed_table中找到了,同時經統計V$、GV$、X$三個的數量既然以外的發現了上述兩個寶貝檢視,百度下原來這倆寶貝有如此的妙用,再次稍作記錄供今後參考學習。不過在oracle11g中這倆傢伙似乎換了馬甲成了GO$SQL_BIND_CAPTURE O$SQL_BIND_CAPTURE這種樣子了,呵呵
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28612416/viewspace-763632/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 查詢歷史執行的SQL語句SQLServer
- [oracle] 查詢歷史會話、歷史執行計劃Oracle會話
- 軟體測試員必備:面試時常問的15個MySQL資料庫查詢語句面試MySql資料庫
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- SQL查詢語句 (Oracle)SQLOracle
- 查詢SQL Server的歷史執行記錄SQLServer
- 一條查詢語句的執行流程
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- 測試人高效工作必備:如何提高溝通技能?
- 軟體測試人員需要具備的硬技能
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- ORACLE結構化查詢語句Oracle
- 面試官:MySQL 是如何執行一條查詢語句的?面試MySql
- GaussDB SQL查詢語句執行過程解析SQL
- SQL 查詢語句的執行順序解析SQL
- MySQL 查詢語句執行過程淺析MySql
- 測試開發必備技能:安全測試漏洞靶場實戰
- 域名查詢:域名管理者的必備技能
- oracle查詢語句查詢增加一列內容Oracle
- 一條 SQL 查詢語句是如何執行的?SQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- 服務端測試開發必備技能:Mock測試服務端Mock
- 輸入的查詢 SQL 語句,是如何執行的?SQL
- Oracle常用的系統查詢語句整理Oracle
- 後臺執行SQL語句(oracle)SQLOracle
- es的複雜查詢測試,使用jest的dsl工具寫查詢語句
- 查詢oracle正在執行的SQL和事務OracleSQL
- 軟體測試人員必備的7種思維方式
- 測試人員必會SQL命令SQL
- mysql查詢語句MySql
- java連線oracle執行sql語句JavaOracleSQL
- 優秀的Java開發人員必備的6個技能!Java
- 如何編寫介面測試用例?測試工程師必備技能!工程師
- Flowable查詢歷史任務
- AI領域中的RAG:軟體測試人員的必備指南AI
- MySQL系列之一條SQL查詢語句的執行過程MySql
- 【軟體實施面試】MySQL和Oracle聯合查詢以及聚合函式面試總結面試MySqlOracle函式
- 軟體測試人員必備的60個測試工具清單,果斷收藏了!