首页 > 数据库 > Oracle > [20220119]超长sql语句补充3.txt
[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博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2852949/ ,如需转载,请注明出处,否则将追究法律责任。