14 нояб. 2012 г.

Текст запроса в oracle 9i

Задачка - зная hash_value либо address вытащить полный текст запроса.
Дело в том что в oracle 9 еще нет поля sql_fulltext в v$sqlarea, иначе и проблемы собственно не было бы.
Поэтому будем использовать вьюху v$sqltext_with_newlines:

SELECT
  v.hash_value, v.address
  , dbms_xmlgen.convert(
                    XMLAGG(
                           XMLELEMENT("node",replace(v.sql_text,chr(0))) order by piece
                          ).extract('//text()').getCLOBVal()
                     ,1) sql_fulltext
 FROM v$sqltext_with_newlines v, v$sql s
WHERE 1=1
  AND v.hash_value = '1700192551'
  --AND v.address = '07000000152A3968'
  AND v.hash_value = s.hash_value
GROUP BY v.hash_value, v.address, s.sql_text

Осталось отформатить текст тем же PL/SQL Formatter.
Селект написан на коленке, если кто-то сможет прикрутить туда на ходу replace биндов - велкам.

via, viavia

Комментариев нет: