[20220119]超長sql語句補充3.txt

lfree發表於2022-01-19

[20220119]超長sql語句補充3.txt

--//前幾天做了超長sql語句的探究,主要目的看看如何連線起來sql語句,寫的有點亂,今天做一個例子驗證自己的判斷.

1.環境:
SCOTT@book> @ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.建立指令碼:
$ cat bb.txt
select /* &&1
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
....
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*/
* from dept where deptno=&&1;

$ ls -l  bb.txt
-rw-r--r-- 1 oracle oinstall 34140 2022-01-18 17:04:07 bb.txt

3.測試:

SCOTT@book> @ bb.txt 10
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
--//執行多次.

SCOTT@book> @ hash
HASH_VALUE SQL_ID        CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE SQL_EXEC_START      SQL_EXEC_ID
---------- ------------- ------------ ---------- --------------- ------------------- -----------
4181801068 g1zfa6gwn2f3c            0      79980      2852011669 2022-01-19 08:25:33    16777219
--//4181801068 = 0xf941386c

4.看看sql語句如何串在一起的:

SYS@book> @ sharepool/shp4 g1zfa6gwn2f3c
KGLHDADR              KGLHDPAR         C40                                        KGLHDLMD   KGLHDPMD   KGLHDIVC KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16   N0_6_16        N20   KGLNAHSH KGLOBT03        KGLOBT09
--------------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
child handle address  000000007CCFD5D0 select /* 10 xxxxxxxxxxxxxxxxxxxxxxxxxxx          1          0          0 000000007CB24BB8 000000007CEACD80       4528      12144      37168     53840      53840 4181801068 g1zfa6gwn2f3c          0
parent handle address 000000007CCFD5D0 select /* 10 xxxxxxxxxxxxxxxxxxxxxxxxxxx          1          0          0 000000007C5D1588 00                    38817          0          0     38817      38817 4181801068 g1zfa6gwn2f3c      65535
*/

SELECT * FROM x$ksmsp WHERE TO_NUMBER ('000000007CCFD5D0', 'xxxxxxxxxxxxxxxx') between TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx') and TO_NUMBER(KSMCHPTR, 'xxxxxxxxxxxxxxxx')+KSMCHSIZ-1
ADDR                   INDX    INST_ID   KSMCHIDX   KSMCHDUR KSMCHCOM         KSMCHPTR           KSMCHSIZ KSMCHCLS   KSMCHTYP KSMCHPAR
---------------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ----------------
00007FB49343AA48      14197          1          1          1 KGLHD            000000007CCFD5A0       1120 recr             80 00

SYS@book> @ ttt
tracefile_identifier = /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_55737.trc

SYS@book> oradebug setmypid
Statement processed.

SYS@book> oradebug peek 0x000000007CCFD5D0 1120 1
[07CCFD5D0, 07CCFDA30) = 8044B900 00000000 8044B900 00000000 7CEAC6C0 00000000 7CCFD728 00000000 00010000 10012841 00000001 00000001 00010001 00000002 ...

--//檢視轉儲:
Dump of memory from 0x07CCFD5E4 to 0x07CCFDA30
07CCFD5E0          00000000 7CCFD728 00000000      [....(..|....]
07CCFD5F0 00010000 10012841 00000001 00000001  [....A(..........]
07CCFD600 00010001 00000002 00000000 00000004  [................]
07CCFD610 00010000 00000000 00000000 00000000  [................]
07CCFD620 7CCFD9D0 00000000 00000001 00000000  [...|............]
07CCFD630 7CCFD630 00000000 7CCFD630 00000000  [0..|....0..|....]
07CCFD640 7CCFD640 00000000 7CCFD640 00000000  [@..|....@..|....]
07CCFD650 7D60A9C8 00000000 7D60A9C8 00000000  [..`}......`}....]
07CCFD660 7CCFD660 00000000 7CCFD660 00000000  [`..|....`..|....]
07CCFD670 7CDC26C0 00000000 7CDC26C0 00000000  [.&.|.....&.|....]
07CCFD680 00000000 00000000 00000001 00000000  [................]
07CCFD690 F0FDCA33 00000000 0001386C 00000000  [3.......l8......]
07CCFD6A0 7CCFD710 00000000 7CCFD6A8 00000000  [...|.......|....]
07CCFD6B0 7CCFD6A8 00000000 7CCFD6B8 00000000  [...|.......|....]
07CCFD6C0 7CCFD6B8 00000000 00000000 00000000  [...|............]
07CCFD6D0 80640F68 00000000 00000000 00000000  [h.d.............]
07CCFD6E0 00000000 00000000 00000003 00000001  [................]
07CCFD6F0 00020002 00000000 00000001 00000000  [................]
07CCFD700 00000000 00000000 00000000 00000000  [................]
07CCFD710 00000000 00000000 00000025 00000000  [........%.......]
07CCFD720 F941386C 00000000 BBACAB7F 74523C42  [l8A.........B<Rt]
07CCFD730 F0FDCA33 F941386C 00000000 13017A78  [3...l8A.....xz..]
07CCFD740 001E1A09 00000000 00000000 00000000  [................]
07CCFD750 00000258 00000000 00000000 00000000  [X...............]
07CCFD760 7D0BA540 00000000 7CCFD778 00000000  [@..}....x..|....]
07CCFD770 F941386C 00000053 656C6573 2F207463  [l8A.S...select /]
07CCFD780 3031202A 7878780A 78787878 78787878  [* 10.xxxxxxxxxxx]
07CCFD790 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 4 times
...
07CCFD9D0 00000000 00000000 00000000 00000000  [................]
        Repeat 2 times
07CCFDA00 00000271 80B38F00 7CCFD5A0 00000000  [q..........|....]
07CCFDA10 00000000 00000000 00000000 00000000  [................]
07CCFDA20 00000000 00000000 00000000 00080050  [............P...]

--//注意看sql語句開始前偏移24,16,8位元組內容.
07CCFD760 7D0BA540 00000000 7CCFD778 00000000  [@..}....x..|....]
07CCFD770 F941386C 00000053 656C6573 2F207463  [l8A.S...select /]

--//24位元組偏移 0x7D0BA540 對應下一個chunk的包含sql語句的其它部分.
--//16位元組偏移 0x7CCFD778 對應select的開始位置
--// 8位元組偏移 0xF941386C 對應sql語句的hash_value.

SYS@book> oradebug peek 0x7D0BA540 60
[07D0BA540, 07D0BA57C) = 7D07DA60 00000000 00000201 00000000 78787878 78787878 78787878 7878780A 78787878 78787878 78787878 78787878 78787878 78787878 78787878
--//78的ascii碼就是x.
--//注意看sql語句開始前偏移16,8位元組內容.
--//16位元組偏移 0x7D07DA60 對應下一個chunk的包含sql語句的其它部分.
--// 8位元組偏移 0x00000201 對應該chunk包含sql語句的長度.

SYS@book> oradebug peek 0x7D07DA60 60
[07D07DA60, 07D07DA9C) = 7D0BA9A0 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
--//78的ascii碼就是x.
--//注意看sql語句開始前偏移16,8位元組內容.
--//16位元組偏移 0x7D0BA9A0 對應下一個chunk的包含sql語句的其它部分.
--// 8位元組偏移 0x00000201 對應該chunk包含sql語句的長度.

SYS@book> oradebug peek 0x7D0BA9A0 60
[07D0BA9A0, 07D0BA9DC) = 7D609138 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D609138 60
[07D609138, 07D609174) = 7D31CC58 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D31CC58 60
[07D31CC58, 07D31CC94) = 7D090F38 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D090F38 60
[07D090F38, 07D090F74) = 7D7D3198 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D7D3198 60
[07D7D3198, 07D7D31D4) = 7CB36DC0 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 780A7878 78787878 78787878
SYS@book> oradebug peek 0x7CB36DC0 60
[07CB36DC0, 07CB36DFC) = 7DF66AB8 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78780A78 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7DF66AB8 60
[07DF66AB8, 07DF66AF4) = 7CB00A80 00000000 00000201 00000000 78787878 78787878 7878780A 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7CB00A80 60
[07CB00A80, 07CB00ABC) = 7D8BD520 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D8BD520 60
[07D8BD520, 07D8BD55C) = 7D8B9C60 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D8B9C60 60
[07D8B9C60, 07D8B9C9C) = 7C5FBA08 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C5FBA08 60
[07C5FBA08, 07C5FBA44) = 7C686460 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C686460 60
[07C686460, 07C68649C) = 7EA4D368 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 0A787878
SYS@book> oradebug peek 0x7EA4D368 60
[07EA4D368, 07EA4D3A4) = 7E109858 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 780A7878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7E109858 60
[07E109858, 07E109894) = 7EA1AF18 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78780A78 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7EA1AF18 60
[07EA1AF18, 07EA1AF54) = 7CFE0228 00000000 00000201 00000000 78787878 7878780A 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7CFE0228 60
[07CFE0228, 07CFE0264) = 7CE390A8 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7CE390A8 60
[07CE390A8, 07CE390E4) = 7C23DCD0 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C23DCD0 60
[07C23DCD0, 07C23DD0C) = 7DDD7518 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7DDD7518 60
[07DDD7518, 07DDD7554) = 7D73D4E8 00000000 00000201 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878

SYS@book> oradebug peek 0x7D73D4E8 60
[07D73D4E8, 07D73D524) = 7DC8C388 00000000 00000231 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 0A787878 78787878
SYS@book> oradebug peek 0x7DC8C388 60
[07DC8C388, 07DC8C3C4) = 7E2DBB90 00000000 00000231 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7E2DBB90 60
[07E2DBB90, 07E2DBBCC) = 7DF90218 00000000 00000231 00000000 78787878 78787878 78787878 78787878 78780A78 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7DF90218 60
[07DF90218, 07DF90254) = 7D709C60 00000000 00000231 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D709C60 60
[07D709C60, 07D709C9C) = 7C480F40 00000000 00000231 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C480F40 60
[07C480F40, 07C480F7C) = 7CDB8768 00000000 00000231 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 780A7878 78787878 78787878
SYS@book> oradebug peek 0x7CDB8768 60
[07CDB8768, 07CDB87A4) = 7E2A5038 00000000 00000231 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7E2A5038 60
[07E2A5038, 07E2A5074) = 7C6AA9D8 00000000 00000251 00000000 78787878 78787878 78787878 7878780A 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C6AA9D8 60
[07C6AA9D8, 07C6AAA14) = 7D311FB0 00000000 00000251 00000000 78787878 78787878 78787878 78787878 0A787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D311FB0 60
[07D311FB0, 07D311FEC) = 7CDF2FA8 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 780A7878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7CDF2FA8 60
[07CDF2FA8, 07CDF2FE4) = 7E2EC010 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78780A78 78787878 78787878
SYS@book> oradebug peek 0x7E2EC010 60
[07E2EC010, 07E2EC04C) = 7E3DA448 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 7878780A
SYS@book> oradebug peek 0x7E3DA448 60
[07E3DA448, 07E3DA484) = 7CF7A2B0 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7E3DA448 60
[07CF7A2B0, 07CF7A2EC) = 7C70BF70 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C70BF70 60
[07C70BF70, 07C70BFAC) = 7E2CA980 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7E2CA980 60
[07E2CA980, 07E2CA9BC) = 7D14CA18 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7D14CA18 60
[07D14CA18, 07D14CA54) = 7E1F8C88 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7E1F8C88 60
[07E1F8C88, 07E1F8CC4) = 7C9410C0 00000000 00000251 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C9410C0 60
[07C9410C0, 07C9410FC) = 7C45CE30 00000000 00000431 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C45CE30 60
[07C45CE30, 07C45CE6C) = 7E1E9470 00000000 00000431 00000000 78787878 78787878 78787878 78787878 7878780A 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7E1E9470 60
[07E1E9470, 07E1E94AC) = 7C742850 00000000 00000431 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 0A787878
SYS@book> oradebug peek 0x7C742850 60
[07C742850, 07C74288C) = 7C5250A8 00000000 00000441 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7C5250A8 60
[07C5250A8, 07C5250E4) = 7BF23788 00000000 000011F1 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878
SYS@book> oradebug peek 0x7BF23788 60
[07BF23788, 07BF237C4) = 00000000 00000000 00000D54 00000000 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878 78787878

--//注意看sql語句開始前偏移16,8位元組內容.
--//16位元組偏移 0x00000000 表示結束.
--// 8位元組偏移 0x00000D54 對應該chunk包含sql語句的長度.

--//算了一下總共46個chunk.注意8位元組偏移,開始0x00000201->0x00000231->0x00000251->0x00000431->0x00000441->0x000011F1->0x00000D54.
--//從這裡可以超長sql語句對共享池的影響.會使用大量的chunk,特別對於繁忙有沒有繫結變數的OLTP系統.

--//至於chunk大小如何分配,我估計先確定大的chunk,然後在使用小的chunk,剩下放在最後.
--//但是載入sql語句我估計從小開始.

--//算是對前面測試的一個總結吧.

5.補充累加sql長度看看是否能對上.

$ wc bb.txt
  344   350 34140 bb.txt

--//將以上peek的結果儲存為1個檔案bb.txt,不包括第1個chunk.
$ grep "^\[" aa.txt  | awk '{print strtonum("0x"$6)}'| paste -sd+ |bc
33536

--//看看第1個chunk:
*** 2022-01-19 08:28:41.195
Processing Oradebug command 'peek 0x000000007CCFD5D0 1120 1'
[07CCFD5D0, 07CCFDA30) = 8044B900 00000000 8044B900 00000000 7CEAC6C0 ...
Dump of memory from 0x07CCFD5E4 to 0x07CCFDA30
07CCFD5E0          00000000 7CCFD728 00000000      [....(..|....]
07CCFD5F0 00010000 10012841 00000001 00000001  [....A(..........]
07CCFD600 00010001 00000002 00000000 00000004  [................]
07CCFD610 00010000 00000000 00000000 00000000  [................]
07CCFD620 7CCFD9D0 00000000 00000001 00000000  [...|............]
07CCFD630 7CCFD630 00000000 7CCFD630 00000000  [0..|....0..|....]
07CCFD640 7CCFD640 00000000 7CCFD640 00000000  [@..|....@..|....]
07CCFD650 7D60A9C8 00000000 7D60A9C8 00000000  [..`}......`}....]
07CCFD660 7CCFD660 00000000 7CCFD660 00000000  [`..|....`..|....]
07CCFD670 7CDC26C0 00000000 7CDC26C0 00000000  [.&.|.....&.|....]
07CCFD680 00000000 00000000 00000001 00000000  [................]
07CCFD690 F0FDCA33 00000000 0001386C 00000000  [3.......l8......]
07CCFD6A0 7CCFD710 00000000 7CCFD6A8 00000000  [...|.......|....]
07CCFD6B0 7CCFD6A8 00000000 7CCFD6B8 00000000  [...|.......|....]
07CCFD6C0 7CCFD6B8 00000000 00000000 00000000  [...|............]
07CCFD6D0 80640F68 00000000 00000000 00000000  [h.d.............]
07CCFD6E0 00000000 00000000 00000003 00000001  [................]
07CCFD6F0 00020002 00000000 00000001 00000000  [................]
07CCFD700 00000000 00000000 00000000 00000000  [................]
07CCFD710 00000000 00000000 00000025 00000000  [........%.......]
07CCFD720 F941386C 00000000 BBACAB7F 74523C42  [l8A.........B<Rt]
07CCFD730 F0FDCA33 F941386C 00000000 13017A78  [3...l8A.....xz..]
07CCFD740 001E1A09 00000000 00000000 00000000  [................]
07CCFD750 00000258 00000000 00000000 00000000  [X...............]
          ~~~~~~~~
07CCFD760 7D0BA540 00000000 7CCFD778 00000000  [@..}....x..|....]
07CCFD770 F941386C 00000053 656C6573 2F207463  [l8A.S...select /]
07CCFD780 3031202A 7878780A 78787878 78787878  [* 10.xxxxxxxxxxx]
07CCFD790 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 4 times
07CCFD7E0 78787878 78787878 7878780A 78787878  [xxxxxxxx.xxxxxxx]
07CCFD7F0 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 4 times
07CCFD840 78787878 78787878 78787878 7878780A  [xxxxxxxxxxxx.xxx]
07CCFD850 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 5 times
07CCFD8B0 7878780A 78787878 78787878 78787878  [.xxxxxxxxxxxxxxx]
07CCFD8C0 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 4 times
07CCFD910 78787878 7878780A 78787878 78787878  [xxxx.xxxxxxxxxxx]
07CCFD920 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 4 times
07CCFD970 78787878 78787878 7878780A 78787878  [xxxxxxxx.xxxxxxx]
07CCFD980 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 4 times
07CCFD9D0 00000000 00000000 00000000 00000000  [................]
        Repeat 2 times
07CCFDA00 00000271 80B38F00 7CCFD5A0 00000000  [q..........|....]
07CCFDA10 00000000 00000000 00000000 00000000  [................]
07CCFDA20 00000000 00000000 00000000 00080050  [............P...]
--//0x7CCFD9D0-0x7CCFD778 = 600 , 600 = 0x258, 不知道是否下劃線內容(0x07CCFD750)對應sql語句長度.
--//600+33536 = 34136,差4個位元組.我前面使用&&1 ,使用10替換(測試時真不該寫入&&1),這樣少2個,加上結尾的分號以及\n不算正好4個.
--//但是結尾還是給加入\0.難道不算嗎?

--//轉儲最後1個chunk看看.
Processing Oradebug command 'peek 0x000000007BF23770 3472 1'
[07BF23770, 07BF24500) = 00000D91 00B38F00 7BF22770 00000000 0A996C98 ...
Dump of memory from 0x07BF23784 to 0x07BF24500
07BF23780          00000000 00000000 00000000      [............]
07BF23790 00000D54 00000000 78787878 78787878  [T.......xxxxxxxx]
07BF237A0 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 4 times
07BF237F0 7878780A 78787878 78787878 78787878  [.xxxxxxxxxxxxxxx]
...


07BF24480 78787878 78787878 78787878 78787878  [xxxxxxxxxxxxxxxx]
        Repeat 3 times
07BF244C0 78787878 78787878 78787878 0A2F2A0A  [xxxxxxxxxxxx.*/.]
07BF244D0 7266202A 64206D6F 20747065 72656877  [* from dept wher]
07BF244E0 65642065 6F6E7470 0030313D 00000000  [e deptno=10.....]
07BF244F0 00000000 00000000 00000000 00000000  [................]

--//0xD54 = 3412
--//0x7BF244EC-0x7BF23798 = 3412
--//包括\0,為什麼呢.

--//問題出在&&1後面有1個空格,生成sql語句時刪除了這個空格.這樣數量就正確了.
$ cat -e bb.txt | head -2
select /* &&1 $
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$

$ cp bb.txt cc.txt
--//適當編輯cc.txt

$ cat -e cc.txt | tee <(head -1) <(tail  -1) | egrep "select|dept"
select /* 10$
* from dept where deptno=10;$

$ cat -e cc.txt | head -1 ; cat -e cc.txt | tail  -1
select /* 10$
* from dept where deptno=10;$

$ cat -e cc.txt | egrep 'select|dept'
select /* 10$
* from dept where deptno=10;$

$ sql_idx.sh cc.txt 1
sql_text = select /* 10
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
...
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*/
* from dept where deptno=10\0
full_hash_value(16) = BBACAB7F74523C42F0FDCA33F941386C
hash_value(10) = 4181801068
sql_id(32) = g1zfa6gwn2f3c
sql_id(32) = g1zfa6gwn2f3c
sql_id(32) = g1zfa6gwn2f3c
--//與前面的sql_id能對上.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2852949/,如需轉載,請註明出處,否則將追究法律責任。

相關文章