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會話
- 開發人員必備的技能——單元測試
- YCSB擴充套件-語句執行頻率,執行指定的測試查詢語句套件
- 查詢Oracle正在執行和執行過的SQL語句OracleSQL
- 軟體測試員必備:面試時常問的15個MySQL資料庫查詢語句面試MySql資料庫
- 查詢Oracle正在執行的SQL語句OracleSQL
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- 測試人高效工作必備:如何提高溝通技能?
- 軟體測試人員需要具備的硬技能
- 查詢SQL Server的歷史執行記錄SQLServer
- 查詢執行慢的SQL語句SQL
- 查詢sql語句執行次數SQL
- 查詢正在執行的SQL語句SQL
- oracle查詢語句執行計劃中的表消除Oracle
- Oracle 查詢某個session正在執行的sql語句OracleSessionSQL
- 現實生活:執行緒&人類歷史執行緒
- 查詢正在執行的sql語句及該語句執行的時間SQL
- 測試開發必備技能:安全測試漏洞靶場實戰
- 一條查詢語句的執行流程
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- SQL查詢語句 (Oracle)SQLOracle
- oracle查詢語句大全Oracle
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- Oracle中SQL語句執行效率的查詢與解決 (3)OracleSQL
- Oracle中SQL語句執行效率的查詢與解決 (2)OracleSQL
- Oracle中SQL語句執行效率的查詢與解決 (1)OracleSQL
- SQL 查詢語句的執行順序解析SQL
- MySQL 查詢語句執行過程淺析MySql
- 查詢orcale執行的SQL語句記錄SQL
- T-sql語句查詢執行順序SQL
- GaussDB SQL查詢語句執行過程解析SQL
- 服務端測試開發必備技能:Mock測試服務端Mock
- 域名查詢:域名管理者的必備技能
- 測試人員必會SQL命令SQL
- 百萬資料查詢測試 只需1秒--Sql語句效率測試SQL
- oracle分頁查詢語句Oracle
- Oracle常用的查詢語句Oracle