[20141013]奇怪的sql語句.txt
[20141013]奇怪的sql語句.txt
--今天看生產系統執行計劃,發現很奇怪.好在以前遇到類似的問題,很快定位,不過還是要求開發修正程式.
--那scott.emp表來說明:
select * from emp where
empno = 7369 and
ename='SMITH';
--注意裡面有^M,表示ascii=0x0d.如果
$ cat a.sql
select * from emp where
ename='SMITH';
SCOTT@testdg> @a
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
SCOTT@testdg> @dpc '' ''
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID 4a7a2a2uanf4v, child number 0
-------------------------------------
ename='SMITH'e empno = 7369 and
Plan hash value: 3649078246
--------------------------------------------------------------------------
| Id | Operation | Name | E-Rows | Cost (%CPU)|
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | 1 (100)|
|* 1 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 1 (0)|
|* 2 | INDEX UNIQUE SCAN | PK_EMP_EMPNO | 1 | 0 (0)|
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("ENAME"='SMITH')
2 - access("EMPNO"=7369)
--看到的sql語句很奇怪.
SCOTT@testdg> select sql_text from v$sql where sql_id='4a7a2a2uanf4v';
SQL_TEXT
------------------------------------------------------------
ename='SMITH'emp where empno = 7369 and
SCOTT@testdg> select sql_fulltext from v$sql where sql_id='4a7a2a2uanf4v';
SQL_FULLTEXT
----------------------------------------------------------------------------------------------------
select * from emp where
ename='SMITH'
--看到的sql程式碼很奇怪.使用dump很容易發現存在問題.看看sql_fulltext的輸出,僅僅看到ename='SMITH'的條件,很容易誤判.
--我看了一些PB的程式碼,發現有些開發~r,沒有~n.導致出現這種情況.
--關鍵是如何找到還有那些.我簡單寫了指令碼如下:
SCOTT@testdg> select sql_id,replace(sql_fulltext,chr(13),'') c60 from v$sqlarea where instr(replace(sql_fulltext,chr(13)||chr(10),''),chr(13))>=1;
SQL_ID C60
------------- ------------------------------------------------------------
4a7a2a2uanf4v select * from emp where
empno = 7369 and ename='SMITH'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1297933/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20181120]奇怪的insert語句.txt
- [20201105]再分析sql語句.txtSQL
- [20220117]超長sql語句.txtSQL
- [20201210]sql語句優化.txtSQL優化
- [20240607]PL/SQL中sql語句的註解.txtSQL
- [20240320]空格與sqlpus的sql語句.txtSQL
- [20200320]SQL語句優化的困惑.txtSQL優化
- [20230905]奇怪的語法.txt
- [20220331]如何調整sql語句.txtSQL
- [20181114]一條sql語句的優化.txtSQL優化
- [20211221]分析sql語句遇到的問題.txtSQL
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- [20200324]SQL語句優化的困惑2.txtSQL優化
- [20210112]ashtop查詢特定表的SQL語句.txtSQL
- [20191101]通過zsh計算sql語句的sql_id.txtSQL
- [20191011]通過bash計算sql語句的sql_id.txtSQL
- [20181119]sql語句執行緩慢分析.txtSQL
- [20220329]是否開發寫錯sql語句.txtSQL
- [20210923]sql語句佔用Sharable Memory分析.txtSQL
- [20201214]查詢隱式轉換的sql語句.txtSQL
- 20201214]查詢隱式轉換的sql語句.txtSQL
- POSTGRESQL SQL 語句案例,一場由LIMIT 1 引發的“奇怪異像”SQLMIT
- [20220111]該語句的sql_id如何計算的.txtSQL
- [20211224]vim外掛格式化sql語句.txtSQL
- [20211231]vim自動格式化sql語句.txtSQL
- [20220119]超長sql語句補充3.txtSQL
- [20220329]19c sql語句打補丁.txtSQL
- [20220120]超長sql語句補充4.txtSQL
- [20211229]toad下優化sql語句注意的問題.txt優化SQL
- [20230329]記錄除錯sql語句遇到的問題.txt除錯SQL
- [20210113]ashtop查詢特定表的SQL語句2.txtSQL
- 兩個看似奇怪的MySQL語句問題MySql
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- SQL語句SQL
- SQL語句IN的用法SQL
- [20190328]簡單探究sql語句相關mutexes.txtSQLMutex
- [20200126]使用DBMS_SHARED_POOL.MARKHOT與sql語句.txtSQL
- [20200326]dbms_monitor跟蹤與SQL語句分析.txtSQL
- [20210407]分析sql語句的共享記憶體段3.txtSQL記憶體