Oracle查詢表空間使用率很慢
問題描述
執行查詢表空間的語句,需要接近2min的時間才能執行完成。
以前也在其他客戶的生產庫遇到過一樣的情況,當時是由於回收站的內容過多引起的。
不過這次的情況卻不是這樣,因為回收站的內容並不多。
調試分析
老方法,設置statistics_level=all獲取詳細的執行情況,如下:
20:32:05 SYS@anonymous> SELECT a.tablespace_name, 20:32:05 2 ROUND (a.bytes_alloc / 1024 / 1024, 2) megs_alloc, 20:32:05 3 ROUND (NVL (b.bytes_free, 0) / 1024 / 1024, 2) megs_free, 20:32:05 4 ROUND ((a.bytes_alloc - NVL (b.bytes_free, 0)) / 1024 / 1024, 2 ) megs_used, 20:32:05 5 ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_free, 20:32:05 6 100 - ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_used, 20:32:05 7 ROUND (maxbytes / 1048576, 2) MAX 20:32:05 8 FROM 20:32:05 9 (SELECT f.tablespace_name, 20:32:05 10 SUM (f.BYTES) bytes_alloc, 20:32:05 11 SUM (DECODE (f.autoextensible, 'YES', f.maxbytes, 'NO', f.BYTES ) ) maxbytes 20:32:05 12 FROM dba_data_files f 20:32:05 13 GROUP BY tablespace_name 20:32:05 14 ) a, 20:32:05 15 (SELECT f.tablespace_name, 20:32:05 16 SUM (f.BYTES) bytes_free 20:32:05 17 FROM dba_free_space f 20:32:05 18 GROUP BY tablespace_name 20:32:05 19 ) b 20:32:05 20 WHERE a.tablespace_name = b.tablespace_name(+) 20:32:05 21 UNION ALL 20:32:05 22 SELECT h.tablespace_name, 20:32:05 23 ROUND (SUM (h.bytes_free + h.bytes_used) / 1048576, 2) megs_alloc, 20:32:05 24 ROUND ( SUM ((h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0)) / 1048576, 2 ) megs_free, 20:32:05 25 ROUND (SUM (NVL (p.bytes_used, 0)) / 1048576, 2) megs_used, 20:32:05 26 ROUND ( ( SUM ( (h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0) ) / SUM (h.bytes_used + h.bytes_free) ) * 100, 2 ) pct_free, 20:32:05 27 100 - ROUND ( ( SUM ( (h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0) ) / SUM (h.bytes_used + h.bytes_free) ) * 100, 2 ) pct_used, 20:32:05 28 ROUND (SUM (f.maxbytes) / 1048576, 2) MAX 20:32:05 29 FROM SYS.v_$temp_space_header h, 20:32:05 30 SYS.v_$temp_extent_pool p, 20:32:05 31 dba_temp_files f 20:32:05 32 WHERE p.file_id(+) = h.file_id 20:32:06 33 AND p.tablespace_name(+) = h.tablespace_name 20:32:06 34 AND f.file_id = h.file_id 20:32:06 35 AND f.tablespace_name = h.tablespace_name 20:32:06 36 GROUP BY h.tablespace_name 20:32:06 37 ORDER BY 1 ; TABLESPACE_NAME MEGS_ALLOC MEGS_FREE MEGS_USED PCT_FREE PCT_USED MAX ------------------------------ ---------- ---------- ---------- ---------- ---------- ---------- xxxxxxxxxxxxxxxx 4096 4019 77 98.12 1.88 4096 xxxxxxxxxxxxxxxx 8192 2283 5909 27.87 72.13 8192 xxxxxxxxxxxxxxxx 2048 1113 935 54.35 45.65 2048 xxxxxxxxxxxxxxxx 24576 16092 8484 65.48 34.52 24576 xxxxxxxxxxxxxxxx 4096 4095 1 99.98 .02 4096 xxxxxxxxxxxxxxxx 8192 8187 5 99.94 .06 8192 xxxxxxxxxxxxxxxx 4000 3373 627 84.33 15.67 4000 xxxxxxxxxxxxxxxx 546304 346561 199743 63.44 36.56 546304 xxxxxxxxxxxxxxxx 4096 2969 1127 72.49 27.51 4096 xxxxxxxxxxxxxxxx 4096 4086 10 99.76 .24 4096 xxxxxxxxxxxxxxxx 8192 3047 5145 37.19 62.81 8192 xxxxxxxxxxxxxxxx 276608 77078 199530 27.87 72.13 276608 xxxxxxxxxxxxxxxx 16384 8605 7779 52.52 47.48 16384 xxxxxxxxxxxxxxxx 4096 2944 1152 71.88 28.12 4096 xxxxxxxxxxxxxxxx 16384 3575 12809 21.82 78.18 16384 xxxxxxxxxxxxxxxx 4096 1074 3022 26.22 73.78 4096 xxxxxxxxxxxxxxxx 4096 4071 25 99.39 .61 4096 xxxxxxxxxxxxxxxx 4096 3915 181 95.58 4.42 4096 xxxxxxxxxxxxxxxx 16384 15984 400 97.56 2.44 16384 xxxxxxxxxxxxxxxx 32760 8390.88 24369.13 25.61 74.39 32767.98 xxxxxxxxxxxxxxxx 5360 34.13 5325.88 .64 99.36 32767.98 xxxxxxxxxxxxxxxx 4096 2946 1150 71.92 28.08 4096 xxxxxxxxxxxxxxxx 4096 4052 44 98.93 1.07 4096 xxxxxxxxxxxxxxxx 20096 13860 6236 68.97 31.03 20096 xxxxxxxxxxxxxxxx 16384 13068 3316 79.76 20.24 16384 xxxxxxxxxxxxxxxx 208192 40933 167259 19.66 80.34 208192 xxxxxxxxxxxxxxxx 20096 16143 3953 80.33 19.67 20096 xxxxxxxxxxxxxxxx 2048 1898 150 92.68 7.32 2048 xxxxxxxxxxxxxxxx 20096 16138 3958 80.3 19.7 20096 xxxxxxxxxxxxxxxx 68096 13300 54796 19.53 80.47 68096 xxxxxxxxxxxxxxxx 8192 8179 13 99.84 .16 8192 xxxxxxxxxxxxxxxx 32767 31971 796 97.57 2.43 32767.98 xxxxxxxxxxxxxxxx 10240 2371.75 7868.25 23.16 76.84 10240 xxxxxxxxxxxxxxxx 10390 9292.25 1097.75 89.43 10.57 32767.98 xxxxxxxxxxxxxxxx 4356.25 209.38 4146.88 4.81 95.19 32767.98 35 rows selected. Elapsed: 00:01:54.62
20:34:00 SYS@anonymous> select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID 8ks58zbpgra00, child number 1 ------------------------------------- SELECT a.tablespace_name, ROUND (a.bytes_alloc / 1024 / 1024, 2) megs_alloc, ROUND (NVL (b.bytes_free, 0) / 1024 / 1024, 2) megs_free, ROUND ((a.bytes_alloc - NVL (b.bytes_free, 0)) / 1024 / 1024, 2 ) megs_used, ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_free, 100 - ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_used, ROUND (maxbytes / 1048576, 2) MAX FROM (SELECT f.tablespace_name, SUM (f.BYTES) bytes_alloc, SUM (DECODE (f.autoextensible, 'YES', f.maxbytes, 'NO', f.BYTES ) ) maxbytes FROM dba_data_files f GROUP BY tablespace_name ) a, (SELECT f.tablespace_name, SUM (f.BYTES) bytes_free FROM dba_free_space f GROUP BY tablespace_name ) b WHERE a.tablespace_name = b.tablespace_name(+) UNION ALL SELECT h.tablespace_name, ROUND (SUM (h.bytes_free + h.bytes_used) / 1048576, 2) megs_alloc, ROUND ( SUM ((h.bytes_free + h.bytes_used) - NVL (p.b Plan hash value: 2506036241 ------------------------------------------------------------------------------------------------------------------------------------------------------------ | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem | 1Mem | Used-Mem | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | | 35 |00:01:54.53 | 53354 | 4865 | | | | | 1 | SORT ORDER BY | | 1 | 3 | 35 |00:01:54.53 | 53354 | 4865 | 4096 | 4096 | 4096 (0)| | 2 | UNION-ALL | | 1 | | 35 |00:01:54.53 | 53354 | 4865 | | | | |* 3 | HASH JOIN OUTER | | 1 | 2 | 34 |00:01:54.18 | 53310 | 4865 | 1229K| 1229K| 1243K (0)| | 4 | VIEW | | 1 | 2 | 34 |00:00:00.66 | 444 | 0 | | | | | 5 | HASH GROUP BY | | 1 | 2 | 34 |00:00:00.66 | 444 | 0 | 941K| 941K| 1349K (0)| | 6 | VIEW | DBA_DATA_FILES | 1 | 2 | 108 |00:00:00.65 | 444 | 0 | | | | | 7 | UNION-ALL | | 1 | | 108 |00:00:00.65 | 444 | 0 | | | | | 8 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.57 | 112 | 0 | | | | | 9 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.57 | 112 | 0 | | | | | 10 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.57 | 112 | 0 | | | | |* 11 | FIXED TABLE FULL | X$KCCFN | 1 | 1 | 108 |00:00:00.57 | 0 | 0 | | | | |* 12 | TABLE ACCESS BY INDEX ROWID| FILE$ | 108 | 1 | 0 |00:00:00.01 | 112 | 0 | | | | |* 13 | INDEX UNIQUE SCAN | I_FILE1 | 108 | 1 | 108 |00:00:00.01 | 4 | 0 | | | | |* 14 | FIXED TABLE FIXED INDEX | X$KCCFE (ind:1) | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | | 15 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 16 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | | 17 | NESTED LOOPS | | 1 | 1 | 108 |00:00:00.08 | 332 | 0 | | | | | 18 | NESTED LOOPS | | 1 | 1 | 108 |00:00:00.08 | 220 | 0 | | | | | 19 | NESTED LOOPS | | 1 | 1 | 108 |00:00:00.01 | 220 | 0 | | | | | 20 | NESTED LOOPS | | 1 | 1 | 108 |00:00:00.01 | 108 | 0 | | | | |* 21 | FIXED TABLE FULL | X$KCCFN | 1 | 1 | 108 |00:00:00.01 | 0 | 0 | | | | |* 22 | FIXED TABLE FIXED INDEX | X$KTFBHC (ind:1) | 108 | 1 | 108 |00:00:00.01 | 108 | 0 | | | | |* 23 | TABLE ACCESS BY INDEX ROWID| FILE$ | 108 | 1 | 108 |00:00:00.01 | 112 | 0 | | | | |* 24 | INDEX UNIQUE SCAN | I_FILE1 | 108 | 1 | 108 |00:00:00.01 | 4 | 0 | | | | |* 25 | FIXED TABLE FIXED INDEX | X$KCCFE (ind:1) | 108 | 1 | 108 |00:00:00.08 | 0 | 0 | | | | | 26 | TABLE ACCESS CLUSTER | TS$ | 108 | 1 | 108 |00:00:00.01 | 112 | 0 | | | | |* 27 | INDEX UNIQUE SCAN | I_TS# | 108 | 1 | 108 |00:00:00.01 | 4 | 0 | | | | | 28 | VIEW | | 1 | 31 | 34 |00:01:53.52 | 52866 | 4865 | | | | | 29 | HASH GROUP BY | | 1 | 31 | 34 |00:01:53.52 | 52866 | 4865 | 9291K| 2834K| 1346K (0)| | 30 | VIEW | DBA_FREE_SPACE | 1 | 140 | 100K|00:01:53.50 | 52866 | 4865 | | | | | 31 | UNION-ALL | | 1 | | 100K|00:01:53.48 | 52866 | 4865 | | | | | 32 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | | | 33 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | | | 34 | TABLE ACCESS FULL | FET$ | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | | |* 35 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 36 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 37 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | | 38 | NESTED LOOPS | | 1 | 88 | 84440 |00:00:00.15 | 394 | 0 | | | | | 39 | NESTED LOOPS | | 1 | 88 | 84440 |00:00:00.06 | 390 | 0 | | | | |* 40 | TABLE ACCESS FULL | TS$ | 1 | 31 | 34 |00:00:00.01 | 38 | 0 | | | | |* 41 | FIXED TABLE FIXED INDEX | X$KTFBFE (ind:1) | 34 | 3 | 84440 |00:00:00.05 | 352 | 0 | | | | |* 42 | INDEX UNIQUE SCAN | I_FILE2 | 84440 | 1 | 84440 |00:00:00.06 | 4 | 0 | | | | |* 43 | HASH JOIN | | 1 | 50 | 16133 |00:01:53.30 | 52396 | 4865 | 2297K| 2297K| 2426K (0)| | 44 | NESTED LOOPS | | 1 | 50 | 16133 |00:01:53.29 | 52358 | 4865 | | | | |* 45 | HASH JOIN | | 1 | 808 | 16133 |00:01:53.26 | 52354 | 4865 | 1753K| 1753K| 1511K (0)| |* 46 | TABLE ACCESS FULL | RECYCLEBIN$ | 1 | 152 | 191 |00:00:00.01 | 4 | 0 | | | | | 47 | FIXED TABLE FULL | X$KTFBUE | 1 | 100K| 723K|00:01:52.95 | 52350 | 4865 | | | | |* 48 | INDEX UNIQUE SCAN | I_FILE2 | 16133 | 1 | 16133 |00:00:00.01 | 4 | 0 | | | | |* 49 | TABLE ACCESS FULL | TS$ | 1 | 31 | 34 |00:00:00.01 | 38 | 0 | | | | | 50 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | | | 51 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | | | 52 | MERGE JOIN CARTESIAN | | 1 | 425 | 0 |00:00:00.01 | 38 | 0 | | | | |* 53 | TABLE ACCESS FULL | TS$ | 1 | 3 | 0 |00:00:00.01 | 38 | 0 | | | | | 54 | BUFFER SORT | | 0 | 152 | 0 |00:00:00.01 | 0 | 0 | 73728 | 73728 | | |* 55 | TABLE ACCESS FULL | RECYCLEBIN$ | 0 | 152 | 0 |00:00:00.01 | 0 | 0 | | | | | 56 | TABLE ACCESS CLUSTER | UET$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 57 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 58 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | | 59 | HASH GROUP BY | | 1 | 1 | 1 |00:00:00.35 | 44 | 0 | 856K| 856K| 463K (0)| | 60 | NESTED LOOPS OUTER | | 1 | 1 | 1 |00:00:00.35 | 44 | 0 | | | | |* 61 | HASH JOIN | | 1 | 1 | 1 |00:00:00.35 | 42 | 0 | 1281K| 1281K| 402K (0)| | 62 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.35 | 3 | 0 | | | | | 63 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.35 | 1 | 0 | | | | | 64 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.35 | 0 | 0 | | | | |* 65 | FIXED TABLE FULL | X$KCCFN | 1 | 1 | 1 |00:00:00.34 | 0 | 0 | | | | |* 66 | FIXED TABLE FIXED INDEX | X$KCCTF (ind:1) | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | | | | |* 67 | FIXED TABLE FIXED INDEX | X$KTFTHC (ind:1) | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | | 68 | TABLE ACCESS CLUSTER | TS$ | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | | |* 69 | INDEX UNIQUE SCAN | I_TS# | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | | 70 | VIEW | V_$TEMP_SPACE_HEADER | 1 | 1 | 1 |00:00:00.01 | 39 | 0 | | | | | 71 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 39 | 0 | | | | |* 72 | TABLE ACCESS FULL | TS$ | 1 | 1 | 1 |00:00:00.01 | 38 | 0 | | | | |* 73 | FIXED TABLE FIXED INDEX | X$KTFTHC (ind:2) | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | |* 74 | VIEW PUSHED PREDICATE | V_$TEMP_EXTENT_POOL | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | | | 75 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | | |* 76 | TABLE ACCESS BY INDEX ROWID | TS$ | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | | |* 77 | INDEX UNIQUE SCAN | I_TS1 | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | |* 78 | FIXED TABLE FIXED INDEX | X$KTSTFC (ind:1) | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------ Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("A"."TABLESPACE_NAME"="B"."TABLESPACE_NAME") 11 - filter(("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)) 12 - filter("F"."SPARE1" IS NULL) 13 - access("FNFNO"="F"."FILE#") 14 - filter("FE"."FENUM"="F"."FILE#") 16 - access("F"."TS#"="TS"."TS#") 21 - filter(("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)) 22 - filter("FNFNO"="HC"."KTFBHCAFNO") 23 - filter("F"."SPARE1" IS NOT NULL) 24 - access("FNFNO"="F"."FILE#") 25 - filter("FE"."FENUM"="F"."FILE#") 27 - access("HC"."KTFBHCTSN"="TS"."TS#") 35 - filter("TS"."BITMAPPED"=0) 36 - access("TS"."TS#"="F"."TS#") 37 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#") 40 - filter(("TS"."BITMAPPED"<>0 AND "TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$"))) 41 - filter("TS"."TS#"="F"."KTFBFETSN") 42 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#") 43 - access("TS"."TS#"="RB"."TS#") 45 - access("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND "U"."KTFBUESEGBNO"="RB"."BLOCK#") 46 - filter(("RB"."TS#" IS NOT NULL AND "RB"."FILE#" IS NOT NULL AND "RB"."BLOCK#" IS NOT NULL)) 48 - access("RB"."TS#"="FI"."TS#" AND "U"."KTFBUEFNO"="FI"."RELFILE#") 49 - filter(("TS"."BITMAPPED"<>0 AND "TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$"))) 53 - filter("TS"."BITMAPPED"=0) 55 - filter(("RB"."TS#" IS NOT NULL AND "RB"."FILE#" IS NOT NULL AND "RB"."BLOCK#" IS NOT NULL)) 57 - access("U"."TS#"="RB"."TS#" AND "U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#") filter("TS"."TS#"="U"."TS#") 58 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#") 61 - access("HC"."KTFTHCTFNO"="H"."FILE_ID" AND "TS"."NAME"="H"."TABLESPACE_NAME") 65 - filter(("V"."FNNAM" IS NOT NULL AND "V"."FNTYP"=7)) 66 - filter(("TF"."TFDUP"<>0 AND BITAND("TF"."TFSTA",32)<>32 AND "V"."FNFNO"="TF"."TFNUM" AND "TF"."TFFNH"="V"."FNNUM")) 67 - filter("V"."FNFNO"="HC"."KTFTHCTFNO") 69 - access("HC"."KTFTHCTSN"="TS"."TS#") 72 - filter(("TS"."CONTENTS$"=1 AND "TS"."BITMAPPED"<>0 AND "TS"."ONLINE$"=1)) 73 - filter(("HC"."KTFTHCCVAL"=0 AND "HC"."INST_ID"=USERENV('INSTANCE') AND "TS"."TS#"="HC"."KTFTHCTSN")) 74 - filter("P"."FILE_ID"="H"."FILE_ID") 76 - filter(("TS"."CONTENTS$"=1 AND "TS"."BITMAPPED"<>0 AND "TS"."ONLINE$"=1)) 77 - access("TS"."NAME"="H"."TABLESPACE_NAME") 78 - filter(("FC"."INST_ID"=USERENV('INSTANCE') AND "TS"."TS#"="FC"."KTSTFCTSN")) 147 rows selected. Elapsed: 00:00:00.08
可以發現,慢的步驟在於對表X$KTFBUE的全表掃描,這個問題也引起了另外一個問題,可以看我另外一篇博文->Oracle查詢dba_extents視圖很慢。
從執行計划很容易得出由於該表缺乏統計信息或統計信息不准確導致的。
原本嘗試想要用hint強制使用索引的,但是不行,而且這固定表的索引本身就很奇葩。用/*+cardinality(dba_free_space.x$ktfbue 999) */ /*+cardinality(u.x$ktfbue 999) */之類的hint都不行。
mos的一篇關於該問題的文章:Query Against Dictionary Views Extracting Tablespace Information is Slow or Appears to Hang (Doc ID 1292253.1)
直接收集統計信息:
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME =>'SYS',DEGREE => 40,TABNAME => 'X$KTFBUE',ESTIMATE_PERCENT=>100,NO_INVALIDATE => FALSE); Elapsed: 00:10:24.03 20:24:43 sys@anonymous(eportdb01)> select LAST_ANALYZED,NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_ROW_LEN from dba_tab_statistics where owner='SYS' and table_name='X$KTFBUE'; LAST_ANALYZED NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN ------------------- ---------- ---------- ------------ ----------- 2020-05-15 20:24:43 730407 69
再次執行發現對固定表X$KTFBUE已經可以用上索引了,查詢表空間使用率的sql大概3s所有可以執行完。
22:54:11 sys@anonymous(eportdb01)> SELECT a.tablespace_name, 22:54:36 2 ROUND (a.bytes_alloc / 1024 / 1024, 2) megs_alloc, 22:54:36 3 ROUND (NVL (b.bytes_free, 0) / 1024 / 1024, 2) megs_free, 22:54:36 4 ROUND ((a.bytes_alloc - NVL (b.bytes_free, 0)) / 1024 / 1024, 2 ) megs_used, 22:54:36 5 ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_free, 22:54:36 6 100 - ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_used, 22:54:36 7 ROUND (maxbytes / 1048576, 2) MAX 22:54:36 8 FROM 22:54:36 9 (SELECT f.tablespace_name, 22:54:36 10 SUM (f.BYTES) bytes_alloc, 22:54:36 11 SUM (DECODE (f.autoextensible, 'YES', f.maxbytes, 'NO', f.BYTES ) ) maxbytes 22:54:36 12 FROM dba_data_files f 22:54:36 13 GROUP BY tablespace_name 22:54:37 14 ) a, 22:54:37 15 (SELECT f.tablespace_name, 22:54:37 16 SUM (f.BYTES) bytes_free 22:54:37 17 FROM dba_free_space f 22:54:37 18 GROUP BY tablespace_name 22:54:37 19 ) b 22:54:37 20 WHERE a.tablespace_name = b.tablespace_name(+) 22:54:37 21 UNION ALL 22:54:37 22 SELECT h.tablespace_name, 22:54:37 23 ROUND (SUM (h.bytes_free + h.bytes_used) / 1048576, 2) megs_alloc, 22:54:37 24 ROUND ( SUM ((h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0)) / 1048576, 2 ) megs_free, 22:54:37 25 ROUND (SUM (NVL (p.bytes_used, 0)) / 1048576, 2) megs_used, 22:54:37 26 ROUND ( ( SUM ( (h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0) ) / SUM (h.bytes_used + h.bytes_free) ) * 100, 2 ) pct_free, 22:54:37 27 100 - ROUND ( ( SUM ( (h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0) ) / SUM (h.bytes_used + h.bytes_free) ) * 100, 2 ) pct_used, 22:54:37 28 ROUND (SUM (f.maxbytes) / 1048576, 2) MAX 22:54:37 29 FROM SYS.v_$temp_space_header h, 22:54:37 30 SYS.v_$temp_extent_pool p, 22:54:37 31 dba_temp_files f 22:54:37 32 WHERE p.file_id(+) = h.file_id 22:54:37 33 AND p.tablespace_name(+) = h.tablespace_name 22:54:37 34 AND f.file_id = h.file_id 22:54:37 35 AND f.tablespace_name = h.tablespace_name 22:54:37 36 GROUP BY h.tablespace_name 22:54:37 37 ORDER BY 1 ; TABLESPACE_NAME MEGS_ALLOC MEGS_FREE MEGS_USED PCT_FREE PCT_USED MAX ------------------ ---------- ---------- ---------- ---------- ---------- ---------- XXXXXXXXXXXXXXXX 6144 1621 4523 26.38 73.62 6144 XXXXXXXXXXXXXXXX 4096 4019 77 98.12 1.88 4096 XXXXXXXXXXXXXXXX 8192 2283 5909 27.87 72.13 8192 XXXXXXXXXXXXXXXX 2048 1113 935 54.35 45.65 2048 XXXXXXXXXXXXXXXX 24576 16075 8501 65.41 34.59 24576 XXXXXXXXXXXXXXXX 4096 4095 1 99.98 .02 4096 XXXXXXXXXXXXXXXX 8192 8187 5 99.94 .06 8192 XXXXXXXXXXXXXXXX 4000 3373 627 84.33 15.67 4000 XXXXXXXXXXXXXXXX 546304 345709 200595 63.28 36.72 546304 XXXXXXXXXXXXXXXX 4096 2969 1127 72.49 27.51 4096 XXXXXXXXXXXXXXXX 4096 4086 10 99.76 .24 4096 XXXXXXXXXXXXXXXX 8192 3047 5145 37.19 62.81 8192 XXXXXXXXXXXXXXXX 276608 76905 199703 27.8 72.2 276608 XXXXXXXXXXXXXXXX 16384 8599 7785 52.48 47.52 16384 XXXXXXXXXXXXXXXX 4096 2944 1152 71.88 28.12 4096 XXXXXXXXXXXXXXXX 16384 3552 12832 21.68 78.32 16384 XXXXXXXXXXXXXXXX 4096 1074 3022 26.22 73.78 4096 XXXXXXXXXXXXXXXX 4096 4071 25 99.39 .61 4096 XXXXXXXXXXXXXXXX 4096 3915 181 95.58 4.42 4096 XXXXXXXXXXXXXXXX 16384 15979 405 97.53 2.47 16384 XXXXXXXXXXXXXXXX 32760 8045.38 24714.63 24.56 75.44 32767.98 XXXXXXXXXXXXXXXX 5360 4442.44 917.56 82.88 17.12 32767.98 XXXXXXXXXXXXXXXX 4096 2946 1150 71.92 28.08 4096 XXXXXXXXXXXXXXXX 4096 4052 44 98.93 1.07 4096 XXXXXXXXXXXXXXXX 20096 13843 6253 68.88 31.12 20096 XXXXXXXXXXXXXXXX 16384 13068 3316 79.76 20.24 16384 XXXXXXXXXXXXXXXX 208192 40288 167904 19.35 80.65 208192 XXXXXXXXXXXXXXXX 20096 16087 4009 80.05 19.95 20096 XXXXXXXXXXXXXXXX 2048 1874 174 91.5 8.5 2048 XXXXXXXXXXXXXXXX 20096 16111 3985 80.17 19.83 20096 XXXXXXXXXXXXXXXX 68096 12626 55470 18.54 81.46 68096 XXXXXXXXXXXXXXXX 8192 8167 25 99.69 .31 8192 XXXXXXXXXXXXXXXX 32767 31952 815 97.51 2.49 32767.98 XXXXXXXXXXXXXXXX 10240 2491.5 7748.5 24.33 75.67 10240 XXXXXXXXXXXXXXXX 10390 10144.31 245.69 97.64 2.36 32767.98 XXXXXXXXXXXXXXXX 4356.25 209.38 4146.88 4.81 95.19 32767.98 36 rows selected. Elapsed: 00:00:03.13 22:54:40 sys@anonymous(eportdb01)> select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SQL_ID 8ks58zbpgra00, child number 2 ------------------------------------- SELECT a.tablespace_name, ROUND (a.bytes_alloc / 1024 / 1024, 2) megs_alloc, ROUND (NVL (b.bytes_free, 0) / 1024 / 1024, 2) megs_free, ROUND ((a.bytes_alloc - NVL (b.bytes_free, 0)) / 1024 / 1024, 2 ) megs_used, ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_free, 100 - ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_used, ROUND (maxbytes / 1048576, 2) MAX FROM (SELECT f.tablespace_name, SUM (f.BYTES) bytes_alloc, SUM (DECODE (f.autoextensible, 'YES', f.maxbytes, 'NO', f.BYTES ) ) maxbytes FROM dba_data_files f GROUP BY tablespace_name ) a, (SELECT f.tablespace_name, SUM (f.BYTES) bytes_free FROM dba_free_space f GROUP BY tablespace_name ) b WHERE a.tablespace_name = b.tablespace_name(+) UNION ALL SELECT h.tablespace_name, ROUND (SUM (h.bytes_free + h.bytes_used) / 1048576, 2) megs_alloc, ROUND ( SUM ((h.bytes_free + h.bytes_used) - NVL (p.b Plan hash value: 3723612910 ---------------------------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem | 1Mem | Used-Mem | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | 36 |00:00:03.12 | 17525 | 96 | | | | | 1 | SORT ORDER BY | | 1 | 38 | 36 |00:00:03.12 | 17525 | 96 | 4096 | 4096 | 4096 (0)| | 2 | UNION-ALL | | 1 | | 36 |00:00:03.12 | 17525 | 96 | | | | |* 3 | HASH JOIN OUTER | | 1 | 37 | 35 |00:00:03.11 | 17478 | 96 | 1229K| 1229K| 1596K (0)| | 4 | VIEW | | 1 | 37 | 35 |00:00:00.25 | 154 | 0 | | | | | 5 | HASH GROUP BY | | 1 | 37 | 35 |00:00:00.25 | 154 | 0 | 941K| 941K| 1372K (0)| | 6 | VIEW | DBA_DATA_FILES | 1 | 109 | 109 |00:00:00.25 | 154 | 0 | | | | | 7 | UNION-ALL | | 1 | | 109 |00:00:00.25 | 154 | 0 | | | | | 8 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | | | 9 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | | |* 10 | HASH JOIN | | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | 1079K| 1079K| 192K (0)| |* 11 | TABLE ACCESS FULL | FILE$ | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | | |* 12 | FIXED TABLE FULL | X$KCCFN | 0 | 108 | 0 |00:00:00.01 | 0 | 0 | | | | | 13 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 14 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 15 | FIXED TABLE FIXED INDEX | X$KCCFE (ind:1) | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | | 16 | NESTED LOOPS | | 1 | 108 | 109 |00:00:00.25 | 152 | 0 | | | | |* 17 | HASH JOIN | | 1 | 108 | 109 |00:00:00.16 | 152 | 0 | 1393K| 1393K| 1573K (0)| | 18 | TABLE ACCESS FULL | TS$ | 1 | 37 | 37 |00:00:00.01 | 41 | 0 | | | | | 19 | NESTED LOOPS | | 1 | 108 | 109 |00:00:00.16 | 111 | 0 | | | | |* 20 | HASH JOIN | | 1 | 108 | 109 |00:00:00.16 | 2 | 0 | 2440K| 2440K| 1647K (0)| |* 21 | FIXED TABLE FULL | X$KCCFN | 1 | 108 | 109 |00:00:00.15 | 0 | 0 | | | | |* 22 | TABLE ACCESS FULL | FILE$ | 1 | 109 | 109 |00:00:00.01 | 2 | 0 | | | | |* 23 | FIXED TABLE FIXED INDEX | X$KTFBHC (ind:1) | 109 | 1 | 109 |00:00:00.01 | 109 | 0 | | | | |* 24 | FIXED TABLE FIXED INDEX | X$KCCFE (ind:1) | 109 | 1 | 109 |00:00:00.09 | 0 | 0 | | | | | 25 | VIEW | | 1 | 33 | 35 |00:00:02.85 | 17324 | 96 | | | | | 26 | HASH GROUP BY | | 1 | 33 | 35 |00:00:02.85 | 17324 | 96 | 9291K| 2834K| 2511K (0)| | 27 | VIEW | DBA_FREE_SPACE | 1 | 78687 | 100K|00:00:02.82 | 17324 | 96 | | | | | 28 | UNION-ALL | | 1 | | 100K|00:00:02.81 | 17324 | 96 | | | | | 29 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 41 | 0 | | | | | 30 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 41 | 0 | | | | | 31 | TABLE ACCESS FULL | FET$ | 1 | 1 | 0 |00:00:00.01 | 41 | 0 | | | | |* 32 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 33 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 34 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 35 | HASH JOIN | | 1 | 78675 | 83871 |00:00:00.11 | 397 | 0 | 1969K| 1969K| 1573K (0)| | 36 | INDEX FULL SCAN | I_FILE2 | 1 | 109 | 109 |00:00:00.01 | 1 | 0 | | | | | 37 | NESTED LOOPS | | 1 | 78675 | 83871 |00:00:00.06 | 396 | 0 | | | | |* 38 | TABLE ACCESS FULL | TS$ | 1 | 33 | 35 |00:00:00.01 | 41 | 0 | | | | |* 39 | FIXED TABLE FIXED INDEX | X$KTFBFE (ind:1) | 35 | 2397 | 83871 |00:00:00.05 | 355 | 0 | | | | | 40 | NESTED LOOPS | | 1 | 10 | 16133 |00:00:02.65 | 16845 | 96 | | | | | 41 | NESTED LOOPS | | 1 | 10 | 16133 |00:00:02.60 | 708 | 96 | | | | | 42 | NESTED LOOPS | | 1 | 157 | 16133 |00:00:02.57 | 704 | 96 | | | | |* 43 | TABLE ACCESS FULL | RECYCLEBIN$ | 1 | 157 | 191 |00:00:00.01 | 4 | 0 | | | | |* 44 | FIXED TABLE FIXED INDEX | X$KTFBUE (ind:1) | 191 | 1 | 16133 |00:00:02.57 | 700 | 96 | | | | |* 45 | INDEX UNIQUE SCAN | I_FILE2 | 16133 | 1 | 16133 |00:00:00.02 | 4 | 0 | | | | |* 46 | TABLE ACCESS CLUSTER | TS$ | 16133 | 1 | 16133 |00:00:00.05 | 16137 | 0 | | | | |* 47 | INDEX UNIQUE SCAN | I_TS# | 16133 | 1 | 16133 |00:00:00.01 | 4 | 0 | | | | | 48 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 41 | 0 | | | | | 49 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 41 | 0 | | | | | 50 | MERGE JOIN CARTESIAN | | 1 | 438 | 0 |00:00:00.01 | 41 | 0 | | | | |* 51 | TABLE ACCESS FULL | TS$ | 1 | 3 | 0 |00:00:00.01 | 41 | 0 | | | | | 52 | BUFFER SORT | | 0 | 157 | 0 |00:00:00.01 | 0 | 0 | 73728 | 73728 | | |* 53 | TABLE ACCESS FULL | RECYCLEBIN$ | 0 | 157 | 0 |00:00:00.01 | 0 | 0 | | | | | 54 | TABLE ACCESS CLUSTER | UET$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 55 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | |* 56 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | | | 57 | HASH GROUP BY | | 1 | 1 | 1 |00:00:00.02 | 47 | 0 | 856K| 856K| 491K (0)| | 58 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.02 | 47 | 0 | | | | | 59 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.02 | 46 | 0 | | | | | 60 | NESTED LOOPS OUTER | | 1 | 1 | 1 |00:00:00.02 | 45 | 0 | | | | |* 61 | HASH JOIN | | 1 | 1 | 1 |00:00:00.02 | 43 | 0 | 1451K| 1451K| 716K (0)| | 62 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.02 | 1 | 0 | | | | | 63 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.02 | 0 | 0 | | | | |* 64 | FIXED TABLE FULL | X$KCCTF | 1 | 1 | 1 |00:00:00.02 | 0 | 0 | | | | |* 65 | FIXED TABLE FIXED INDEX | X$KCCFN (ind:1) | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | | | | |* 66 | FIXED TABLE FIXED INDEX | X$KTFTHC (ind:1) | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | | 67 | VIEW | V_$TEMP_SPACE_HEADER | 1 | 1 | 1 |00:00:00.01 | 42 | 0 | | | | | 68 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 42 | 0 | | | | |* 69 | TABLE ACCESS FULL | TS$ | 1 | 1 | 1 |00:00:00.01 | 41 | 0 | | | | |* 70 | FIXED TABLE FIXED INDEX | X$KTFTHC (ind:2) | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | |* 71 | VIEW PUSHED PREDICATE | V_$TEMP_EXTENT_POOL | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | | | 72 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | | |* 73 | TABLE ACCESS BY INDEX ROWID| TS$ | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | | |* 74 | INDEX UNIQUE SCAN | I_TS1 | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | |* 75 | FIXED TABLE FIXED INDEX | X$KTSTFC (ind:1) | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | | | | |* 76 | INDEX UNIQUE SCAN | I_TS1 | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | |* 77 | TABLE ACCESS BY INDEX ROWID | TS$ | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | | ---------------------------------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("A"."TABLESPACE_NAME"="B"."TABLESPACE_NAME") 10 - access("FNFNO"="F"."FILE#") 11 - filter("F"."SPARE1" IS NULL) 12 - filter(("FNTYP"=4 AND "FNNAM" IS NOT NULL AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)) 14 - access("F"."TS#"="TS"."TS#") 15 - filter("FE"."FENUM"="F"."FILE#") 17 - access("HC"."KTFBHCTSN"="TS"."TS#") 20 - access("FNFNO"="F"."FILE#") 21 - filter(("FNTYP"=4 AND "FNNAM" IS NOT NULL AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)) 22 - filter("F"."SPARE1" IS NOT NULL) 23 - filter("FNFNO"="HC"."KTFBHCAFNO") 24 - filter("FE"."FENUM"="F"."FILE#") 32 - filter("TS"."BITMAPPED"=0) 33 - access("TS"."TS#"="F"."TS#") 34 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#") 35 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#") 38 - filter(("TS"."BITMAPPED"<>0 AND "TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$"))) 39 - filter("TS"."TS#"="F"."KTFBFETSN") 43 - filter(("RB"."TS#" IS NOT NULL AND "RB"."FILE#" IS NOT NULL AND "RB"."BLOCK#" IS NOT NULL)) 44 - filter(("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND "U"."KTFBUESEGBNO"="RB"."BLOCK#")) 45 - access("RB"."TS#"="FI"."TS#" AND "U"."KTFBUEFNO"="FI"."RELFILE#") 46 - filter(("TS"."BITMAPPED"<>0 AND "TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$"))) 47 - access("TS"."TS#"="RB"."TS#") 51 - filter("TS"."BITMAPPED"=0) 53 - filter(("RB"."TS#" IS NOT NULL AND "RB"."FILE#" IS NOT NULL AND "RB"."BLOCK#" IS NOT NULL)) 55 - access("U"."TS#"="RB"."TS#" AND "U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#") filter("TS"."TS#"="U"."TS#") 56 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#") 61 - access("HC"."KTFTHCTFNO"="H"."FILE_ID") 64 - filter((BITAND("TF"."TFSTA",32)<>32 AND "TF"."TFDUP"<>0)) 65 - filter(("V"."FNTYP"=7 AND "V"."FNNAM" IS NOT NULL AND "V"."FNFNO"="TF"."TFNUM" AND "TF"."TFFNH"="V"."FNNUM")) 66 - filter("V"."FNFNO"="HC"."KTFTHCTFNO") 69 - filter(("TS"."CONTENTS$"=1 AND "TS"."BITMAPPED"<>0 AND "TS"."ONLINE$"=1)) 70 - filter(("HC"."INST_ID"=USERENV('INSTANCE') AND "HC"."KTFTHCCVAL"=0 AND "TS"."TS#"="HC"."KTFTHCTSN")) 71 - filter("P"."FILE_ID"="H"."FILE_ID") 73 - filter(("TS"."CONTENTS$"=1 AND "TS"."BITMAPPED"<>0 AND "TS"."ONLINE$"=1)) 74 - access("TS"."NAME"="H"."TABLESPACE_NAME") 75 - filter(("FC"."INST_ID"=USERENV('INSTANCE') AND "TS"."TS#"="FC"."KTSTFCTSN")) 76 - access("TS"."NAME"="H"."TABLESPACE_NAME") 77 - filter("HC"."KTFTHCTSN"="TS"."TS#") 147 rows selected. Elapsed: 00:00:00.87