oracle внутренних запросов, потребляющих больше ввода-вывода и процессора - PullRequest
0 голосов
/ 06 января 2020

Мы используем Orace 11g. В нашей производственной среде мы сталкиваемся с медлительностью дБ. Когда мы проверяем отчет AWR, мы обнаруживаем, что приведенный ниже запрос потребляет больше времени ввода-вывода и ЦП. Но мы не используем этот запрос в нашем приложении. Ниже этот запрос

SELECT arg.package_name AS procedure_cat, arg.owner AS procedure_schem, arg.object_name AS procedure_name, arg.argument_name AS column_name,
DECODE(arg.position, :"SYS_B_000", :"SYS_B_001", DECODE(arg.in_out, :"SYS_B_002", :"SYS_B_003", :"SYS_B_004", :"SYS_B_005", :"SYS_B_006", :"SYS_B_007", :"SYS_B_008")) AS column_type, 
DECODE( (SELECT a.typecode FROM ALL_TYPES A WHERE a.type_name = arg.data_type), :"SYS_B_009", :"SYS_B_010", :"SYS_B_011", :"SYS_B_012", 
DECODE(substr(arg.data_type, :"SYS_B_013", :"SYS_B_014"), :"SYS_B_015", DECODE(substr(arg.data_type, :"SYS_B_016", :"SYS_B_017"), :"SYS_B_018",
DECODE(substr(arg.data_type, :"SYS_B_019", :"SYS_B_020"), :"SYS_B_021", -:"SYS_B_022", :"SYS_B_023", -:"SYS_B_024", :"SYS_B_025"),
DECODE(substr(arg.data_type, :"SYS_B_026", :"SYS_B_027"), :"SYS_B_028", -:"SYS_B_029", :"SYS_B_030", -:"SYS_B_031", :"SYS_B_032")), :"SYS_B_033", 
DECODE(substr(arg.data_type, :"SYS_B_034", :"SYS_B_035"), :"SYS_B_036", -:"SYS_B_037", :"SYS_B_038", -:"SYS_B_039"),
DECODE(arg.data_type, :"SYS_B_040", :"SYS_B_041", :"SYS_B_042", :"SYS_B_043", :"SYS_B_044", -:"SYS_B_045", :"SYS_B_046", :"SYS_B_047", 
:"SYS _B_048", :"SYS_B_049", :"SYS_B_050", :"SYS_B_051", :"SYS_B_052", :"SYS_B_053", :"SYS_B_054", :"SYS_B_055", :"SYS_B_056", :"SYS_B_057",
:"SYS_B_058", -:"SYS_B_059", :"SYS_B_060", -:"SYS_B_061", :"SYS_B_062", -:"SYS_B_063", :"SYS_B_064", :"SYS_B_065", :"SYS_B_066", :"SYS_B_067", 
:"SYS_B_068", -:"SYS_B_069", :"SYS_B_070", -:"SYS_B_071", :"SYS_B_072", :"SYS_B_073", :"SYS_B_074", :"SYS_B_075", :"SYS_B_076", -:"SYS_B_077",
:"SYS_B_078", :"SYS_B_079", :"SYS_B_080", -:"SYS_B_081", :"SYS_B_082", :"SY S_B_083", :"SYS_B_084", -:"SYS_B_085", :"SYS_B_086", :"SYS_B_087",
:"SYS_B_088", :"SYS_B_089", :"SYS_B_090", :"SYS_B_091", :"SYS_B_092"))) AS data_type,
DECODE(arg.data_type, :"SYS_B_093", arg.type_owner || :"SYS_B_094" || arg.type_name, arg.data_type) AS type_name,
DECODE (arg.data_precision, NULL, arg.data_length, arg.data_precision) AS precision, arg.data_length AS length,
arg.data_scale AS scale, :"SYS_B_095" AS radix, :"SYS_B_096" AS nullable, NULL AS remarks, arg.default_value AS column_def, NULL as sql_data_type, NULL AS sql_datetime_sub, 
DECODE(arg.data_type, :"SYS_B_097", :"SYS_B_098", : "SYS_B_099", :"SYS_B_100", :"SYS_B_101", :"SYS_B_102", :"SYS_B_103", :"SYS_B_104", :"SYS_B_105", :"SYS_B_106", NULL) AS
char_octet_length, (arg.sequence - :"SYS_B_107") AS ordinal_position, :"SYS_B_108" AS is_nullable, NULL AS specific_name, arg.sequence, arg.overload, arg.default_value 
FROM all_arguments arg
     , all_procedures proc 
WHERE arg.owner LIKE :1 ESCAPE :"SYS_B_109" 
AND arg.object_name LIKE :2 ESCAPE :"SYS_B_110" 
AND arg.data_level = :"SYS_B_111" 
AND arg.owner = proc.owner AND arg.object_id = proc.object_id AND arg.subprogram_id = proc.subprogram_id AND arg.package_name IS NULL 
AND (arg.argument_name LIKE :5 ESCAPE :"SYS_B_112" OR (arg.argument_name IS NULL AN D arg.data_type IS NOT NULL)) 
ORDER BY procedure_schem, procedure_name, overload, sequence

Мы используем JDBCTemplate для подключения к базе данных oracle.

Я хочу такие решения, как

  1. Либо мне нужно прекратить выполнение этого запроса.
  2. Мне нужно уменьшить количество операций ввода-вывода и ЦП этого запроса.

Любая помощь будет с благодарностью !!!

...