注册
(disql)死循环将导致 DBMS_OUTPUT.PUT_LINE 函数耗尽内存直到内存溢出(OOM),实例崩溃,望修复
专栏/技术分享/ 文章详情 /

(disql)死循环将导致 DBMS_OUTPUT.PUT_LINE 函数耗尽内存直到内存溢出(OOM),实例崩溃,望修复

Wisper 2023/08/01 1783 0 2
摘要

达梦,死循环将导致 DBMS_OUTPUT.PUT_LINE 函数耗尽内存直到内存溢出(OOM),实例崩溃,望修复

【在生产上很危险:不稳定、不健壮,一不小心数据库就崩溃】
同样的代码在oracle中表现不同,并不会过多分配内存甚至“直到内存耗尽”;
类似的代码在pg系的数据库中,并不会出现OOM;

影响版本:

select * from v$version(); BANNER --------------------------------- DM Database Server 64 V8 8.1 安全版 DB Version: 0x7000c 05134283938-20221019-172201-20018 BANNER --------------------------------- DM Database Server 64 V8 DB Version: 0x7000c 03134284044-20230417-187846-20040

循环代码

begin while (true) loop dbms_output.put_line('AAAAAAAAAAAAAAAA'); end loop; end; /

执行时资源监控

执行过程中的资源监控

vmstat 2 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 1160768 268352 6493120 0 0 0 190 1657 3168 13 0 86 0 0 1 0 0 1227712 219200 6007552 0 0 0 48 1651 3147 15 1 84 0 0 2 0 0 1005824 197760 5801792 0 0 342 106 1866 3512 14 0 85 1 0 1 0 0 1272704 153984 5123840 0 0 4 102 1770 3336 14 1 85 0 0 1 0 0 1207040 118592 4764416 0 0 0 50 1615 3166 13 0 86 0 0 1 0 0 1073600 94592 4467712 0 0 238 50 1696 3232 13 0 86 0 0 1 0 0 1183040 58304 3935104 0 0 356 90 1663 3147 13 0 86 1 0 1 0 0 1238528 36288 3433024 0 0 1574 208 1727 3249 13 1 86 0 0 1 0 0 1210816 24256 3013248 0 0 10540 22 1813 3298 13 1 83 3 0 1 2 0 1058624 19904 2709696 0 0 20008 112 1918 3463 14 0 84 2 0 1 0 0 1160576 13632 2166848 0 0 6646 230 1877 3442 14 1 83 3 0 2 14 0 1050560 4224 1942720 0 0 565980 54 2993 4400 9 5 60 27 0 0 15 0 976064 4288 1921152 0 0 992830 1698 3834 5510 5 9 38 48 0 1 26 0 866880 3456 1934016 0 0 1774368 130 5165 6783 3 9 15 73 0 3 35 0 814272 3456 1957888 0 0 2092046 20 6095 7932 2 12 3 84 0 0 25 0 852160 2944 1918976 0 0 1830898 142 6185 8128 1 11 1 88 0 1 34 0 816128 2944 1950400 0 0 1583398 24 4727 6420 1 9 2 88 0 0 24 0 819520 3264 1927104 0 0 1647592 68 4850 6184 1 12 1 86 0 0 30 0 813568 3200 1948736 0 0 2583854 52 6327 8187 1 8 1 90 0 0 29 0 813760 3200 1946880 0 0 1848944 170 8499 11215 1 11 0 88 0 9 27 0 804352 2240 1971712 0 0 2089698 110 5607 7511 1 12 0 87 0 2 31 0 817728 2752 1943744 0 0 2003562 104 7706 9863 1 11 5 83 0 6 40 0 812544 2432 1933504 0 0 3063536 10 6714 11927 1 20 2 78 0 1 35 0 809664 2560 1955008 0 0 2072542 76 9865 15012 1 15 0 84 0 5 18 0 813056 4544 1962880 0 0 1270870 20 5281 7981 1 10 1 89 0 3 55 0 830912 2368 1911360 0 0 2058426 162 6455 16279 7 27 3 64 0 2 35 0 8541248 3776 1939968 0 0 1744468 84 8192 20511 3 28 12 57 0 1 0 0 9205888 13504 2107328 0 0 57354 166 2534 4401 2 1 83 15 0 0 0 0 9205312 13504 2109312 0 0 626 46 1485 2909 1 0 99 0 0

执行前内存池信息

-- v$mem_pool NAME POOL_NUM TOTAL_MB USED_MB DATA_MB TARGET_MB used(%) data(%) ---------------------- -------- -------- ------- ------- --------- ------- ------- SHARE POOL 000 1 1268 1252.5 601 15000 98.8 47.4 VIRTUAL MACHINE 8 276.1 260.8 77.5 128 94.5 28.1

即将崩溃前内存池信息

NAME POOL_NUM TOTAL_MB USED_MB DATA_MB TARGET_MB used(%) data(%) ---------------------- -------- -------- ------- ------- --------- ------- ------- SHARE POOL 000 1 8052.9 8052.9 3718.1 15000 100 46.2 VIRTUAL MACHINE 8 2118 2102.7 644.3 128 99.3 30.4
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服