Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 тормозит Oracle 8i  [new]
Alex65
Member

Откуда:
Сообщений: 11
внушительные тормоза, особенно с утра и днём
пользователей 30
компьютер: Pentium 4 2.2Ghz 1Gb ОЗУ , винn SATA ,
Windows 2000 Server крутится Apache, php, Oracle
прилагаю статистику Statspack за нескольно дней

К сообщению приложен файл (sp_1_9.LST - 58Kb) cкачать
12 июл 06, 11:29    [2869937]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
givanov
Member

Откуда:
Сообщений: 757
Статспак без временной статистики. Как тормоза искать?
12 июл 06, 11:43    [2870047]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
Alex65
Member

Откуда:
Сообщений: 11
givanov
Статспак без временной статистики. Как тормоза искать?

а как собирается временная статистика и что она из себя рпедставляет?
12 июл 06, 11:53    [2870118]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
FoxTheRed
Member

Откуда:
Сообщений: 88
Alex65
givanov
Статспак без временной статистики. Как тормоза искать?

а как собирается временная статистика и что она из себя рпедставляет?

alter system set timed_statistics=true
12 июл 06, 12:00    [2870192]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
DiStas
Member

Откуда:
Сообщений: 52
выложите инит.ора
12 июл 06, 12:48    [2870534]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
Alex65
Member

Откуда:
Сообщений: 11
DiStas
выложите инит.ора


в общем интересуют как способы оптимизации самой базы так и рекомендации по модернизации сервера для повышения производительности

К сообщению приложен файл (initdbname.ora - 4Kb) cкачать
12 июл 06, 13:40    [2870869]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
FoxTheRed
Member

Откуда:
Сообщений: 88
Alex65
DiStas
выложите инит.ора


в общем интересуют как способы оптимизации самой базы так и рекомендации по модернизации сервера для повышения производительности

Покажи план выполнения запроса
SELECT wl_id
FROM wareslist
WHERE wl_datein >= '06.06.2005'
AND wl_fr_id IS NULL
AND wl_m_id_brand = 8
AND ( (EXISTS (
SELECT *
FROM updatelog, samsungreporting
WHERE ul_wl_id = wl_id
AND ul_wl_id = sr_wl_id
AND ul_lastupdate > sr_cicdate)
)
OR (NOT EXISTS (SELECT *
FROM samsungreporting
WHERE sr_wl_id = wl_id))
)
12 июл 06, 13:53    [2870977]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
Alex65
Member

Откуда:
Сообщений: 11
FoxTheRed
Alex65
givanov
Статспак без временной статистики. Как тормоза искать?

а как собирается временная статистика и что она из себя рпедставляет?

alter system set timed_statistics=true

вот собрал за несколько часов при 100% загрузки процессора
(но вроде самые тормоза происходят с утра, хотя это коненчо связано с тем что практически одновременно базу начинают юзать около20 человек)

К сообщению приложен файл (sp_11_17.LST - 55Kb) cкачать
12 июл 06, 14:05    [2871079]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
FoxTheRed
Member

Откуда:
Сообщений: 88
Как уже писал - нужен план запроса
SELECT wl_id
FROM wareslist
WHERE wl_datein >= '06.06.2005'
AND wl_fr_id IS NULL
AND wl_m_id_brand = 8
AND ( (EXISTS (
SELECT *
FROM updatelog, samsungreporting
WHERE ul_wl_id = wl_id
AND ul_wl_id = sr_wl_id
AND ul_lastupdate > sr_cicdate)
)
OR (NOT EXISTS (SELECT *
FROM samsungreporting
WHERE sr_wl_id = wl_id))
)
Все тормоза - от него. И собери статистику по таблицам SAMSUNGREPORTING,
WARELIST, UPDATELOG
12 июл 06, 14:26    [2871240]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
.........
Guest
SELECT   a.NAME, b.SID, b.VALUE,
         ROUND ((SYSDATE - c.logon_time) * 24) hours_connected
    FROM v$statname a, v$sesstat b, v$session c
   WHERE b.SID = c.SID
     AND a.statistic# = b.statistic#
     AND b.VALUE > 0
     AND a.NAME  in ('physical writes direct', 'physical reads direct')
ORDER BY b.VALUE;
Сессии, которые выполняют physical writes direct и physical reads direct операции.
SELECT   a.event, a.SID, c.sql_hash_value hash_value,
         DECODE (d.ktssosegt,
                 1, 'SORT',
                 2, 'HASH',
                 3, 'DATA',
                 4, 'INDEX',
                 5, 'LOB_DATA',
                 6, 'LOB_INDEX',
                 NULL
                ) AS segment_type,
         b.tablespace_name, b.file_name
    FROM v$session_wait a, dba_data_files b, v$session c, sys.x$ktsso d
   WHERE c.saddr = d.ktssoses(+)
     AND c.serial# = d.ktssosno(+)
     AND d.inst_id(+) = USERENV ('instance')
     AND a.SID = c.SID
     AND a.p1 = b.file_id
     AND a.event in ('direct path read', 'direct path write')
UNION ALL
SELECT   a.event, a.SID, d.sql_hash_value hash_value,
         DECODE (e.ktssosegt,
                 1, 'SORT',
                 2, 'HASH',
                 3, 'DATA',
                 4, 'INDEX',
                 5, 'LOB_DATA',
                 6, 'LOB_INDEX',
                 NULL
                ) AS segment_type,
         b.tablespace_name, b.file_name
    FROM v$session_wait a,
         dba_temp_files b,
         v$parameter c,
         v$session d,
         sys.x$ktsso e
   WHERE d.saddr = e.ktssoses(+)
     AND d.serial# = e.ktssosno(+)
     AND e.inst_id(+) = USERENV ('instance')
     AND a.SID = d.SID
     AND b.file_id = a.p1 - c.VALUE
     AND c.NAME = 'db_files'
     AND a.event in ('direct path read', 'direct path write')
ORDER BY 1, 2;
Так можно узнать, временные файлы или файлы данных используются сессиями.
Дальше нужно смотреть в зависимости от результатов.
12 июл 06, 14:35    [2871306]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
RusVol
Member

Откуда:
Сообщений: 352
А если пропатчить 8.1.7.0.0 до 8.1.7.4.1 , может тогда не будет latch free составлять 72 % ?
А если sort_area_size не 65536, а в 1048576 , может тогда direct path read/write не будет > 20 % ?
А если после патчинга до 8.1.7.4 выставить cursor_sharing в force ,
session_cached_cursors в 20-30 ?
12 июл 06, 14:39    [2871343]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
Alex65
Member

Откуда:
Сообщений: 11
FoxTheRed
Как уже писал - нужен план запроса
SELECT wl_id
FROM wareslist
WHERE wl_datein >= '06.06.2005'
AND wl_fr_id IS NULL
AND wl_m_id_brand = 8
AND ( (EXISTS (
SELECT *
FROM updatelog, samsungreporting
WHERE ul_wl_id = wl_id
AND ul_wl_id = sr_wl_id
AND ul_lastupdate > sr_cicdate)
)
OR (NOT EXISTS (SELECT *
FROM samsungreporting
WHERE sr_wl_id = wl_id))
)
Все тормоза - от него. И собери статистику по таблицам SAMSUNGREPORTING,
WARELIST, UPDATELOG

неполучается :(
SQL> spool c:\sql_plane.txt
SQL> set autotrace traceonly;
SP2-0613: Unable to verify PLAN_TABLE format or existence
SP2-0611: Error enabling EXPLAIN report
SQL> spool c:\sql_plane.txt;
SQL> set autotrace traceonly
SP2-0613: Unable to verify PLAN_TABLE format or existence
SP2-0611: Error enabling EXPLAIN report
SQL> set autotrace traceonly
SP2-0613: Unable to verify PLAN_TABLE format or existence
SP2-0611: Error enabling EXPLAIN report

хотя вам не вот это надо:
1330 rows selected.

Statistics
--------------------------------------------------------
0 recursive calls
76900 db block gets
980606 consistent gets
0 physical reads
0 redo size
26691 bytes sent via SQL*Net to client
10193 bytes received via SQL*Net from client
90 SQL*Net roundtrips to/from client
6 sorts (memory)
0 sorts (disk)
1330 rows processed
12 июл 06, 14:46    [2871399]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
FoxTheRed
Member

Откуда:
Сообщений: 88
В ORACLE_HOME/rdbms/admin лежит скрипт utlxplan.sql, который создает plan_table.
12 июл 06, 15:08    [2871618]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
Alex65
Member

Откуда:
Сообщений: 11
FoxTheRed
В ORACLE_HOME/rdbms/admin лежит скрипт utlxplan.sql, который создает plan_table.

вота

К сообщению приложен файл (oracle.txt - 1Kb) cкачать
12 июл 06, 15:19    [2871725]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
Alex65
Member

Откуда:
Сообщений: 11
Alex65
FoxTheRed
В ORACLE_HOME/rdbms/admin лежит скрипт utlxplan.sql, который создает plan_table.

вота

вообще база представляет собой апач+ пхп + зенд+ оракл
некоторые рекомендуют разнести апач и оракл на разные компьютеры, увеличит ли это производительность системы?
12 июл 06, 16:04    [2872202]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
SmaLL
Member

Откуда: Voronezh brewery
Сообщений: 701
1е чтобы я сделал - это увеличил бы sort_area_size хотя бы до 1 мб, т.к. зашкаливают ожидания работы с темпом - и на таблеспейс ТЕМП тоже большая нагрузка

PS: В сервак желательно бы ещЁ 1гб добавить
12 июл 06, 16:29    [2872466]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
SmaLL
PS: В сервак желательно бы ещЁ 1гб добавить
Не нужно ничего "добавлять в сервак", пока вы не выясните в чем проблема, чего именно вам не хватает.
12 июл 06, 16:38    [2872547]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
SmaLL
Member

Откуда: Voronezh brewery
Сообщений: 701
про память - это совет на будущее
и память никогда лишней не бывает, тем более если на сервере крутится не один сервис
12 июл 06, 16:46    [2872608]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
DiStas
Member

Откуда:
Сообщений: 52
Если процессор в единственном числе, к тому же не hyper threading, то parallel_max_servers не может быть больше 1. Хотя на улучшение, как и на ухудшение, быстродействия это не сказывается, поскольку если есть несоответствия между PARALLEL_MAX_SERVERS и фактическим кол-вом процессоров, оракл игнорирует параметр и работает "по железу". Но на всякий случай лучше поменять, хотя бы для того, чтобы правильное значение параметра в инит.ора стояло.

Из изменений, которые, возможно помогут: sort_area_size=524288 и сбор статистик – отдельно по таблицам/индексам/парт. таблицам/парт. индексам (если парт. таблицы/индексы имеются) в случае если статистики старые.
Чтобы определить объекты с просроченными статистиками (более месячной давности):
--- для таблиц
select owner, table_name, to_char(last_analyzed, 'dd-mm-yyyy')
from dba_tables
where months_between (sysdate, last_analyzed)>1
and owner=’…’
order by owner, table_name;

---для индексов
select owner, table_name, index_name, to_char(last_analyzed)
from dba_indexes
where owner=’…’
and months_between (sysdate, last_analyzed)>1
order by 1,2,3;

Для сбора статистик лучше использовать BMS_STATS.GATHER_TABLE_STATS, а не analyze, т.к. у аналайза в 8-ке проблема со сбором верных статистик для парт. таилиц и индексов. Ну за компанию и обычные можно отработать так же. Вот примеры моих «старых» 8шных скриптов.

----------------------------  ANALYZE PARTITIONED TABLES
spool с:\tab_stats.sql
select 'exec DBMS_STATS.GATHER_TABLE_STATS ('''||TABLE_OWNER||''','''||TABLE_NAME||''','''||PARTITION_NAME||''', 10)'
from dba_tab_partitions
where table_owner = '…'
order by table_owner, table_name, partition_name;
spool off
@с:\tab_stats.sql
 
----------------------------  ANALYZE REGULAR TABLES 
spool c:\analyze_reg_indexes.sql
select 'exec DBMS_STATS.GATHER_TABLE_STATS('''||OWNER||''', '''||table_name||''', null, 10);'
from dba_tables
where owner = '…'
spool off
@c:\analyze_reg_indexes.sql

----------------------------  ANALYZE INDEXES OF REGULAR TABLES
spool c:\ind_stats.sql
select 'exec DBMS_STATS.GATHER_INDEX_STATS ('''||OWNER||''', '''||INDEX_NAME||''', NULL, 10)'
from dba_indexes 
where owner = '…'
spool off

----------------------------  ANALYZE INDEXES OF PARTITIONED TABLES  DBMS_STATS.GATHER_INDEX_STATS ----------------------------  
spool c:\ind_stats.sql
select 'exec DBMS_STATS.GATHER_INDEX_STATS ('''||INDEX_OWNER||''', '''||p.INDEX_NAME||''', '''||
p.PARTITION_NAME||''', 10)'
from dba_ind_partitions p, dba_indexes i
where i.table_name in (‘…’, ‘…’, и т.д.)
and p.index_name = i.index_name 
spool off

можно ещё хистограм в догонку:
SELECT DISTINCT 'EXEC DBMS_STATS.GATHER_table_STATS (OWNNAME => '''||OWNER||''' , TABNAME => '''||TABLE_NAME||''', METHOD_OPT => ''FOR COLUMNS SIZE 10'');'
from dba_tab_col_statistics
where owner=’…’
and table_name in (‘…’, ‘…’, и т.д.)

ХОТЯ, КАК МНЕ КАЖЕТСЯ, ВСЁ ДЕЛО В ОДНОМ ПРОЦЕ И САТОВСКИХ ДИСКАХ. В этом случае ничего кроме смены железа не поможет. Все остальные меры – так, припарки.

Ну а к общим рекомендациям по улучшению производительности: (ИМХО)
1. Как выше сказал - железо надо менять. Не дело это, когда 30 пользователей одновременно гоняют селекты на обычном компе с не сказёвыми дисками и памятью в 1Г. Тем более под "окнами" и с internet server-ом, пусть даже апач с пхп. На крайний случай в тот же комп скази-контроллер поставить и диски, соответственно, заменить. Память нарастить до 2Г.
2. Оракл апгрейдить до десятки (через 8.1.7.4, напрямую с 8.1.7.0.0. нельзя) - она, хоть и глючит часто, но выполнять тот же код будет в разы быстрее по сравнению с восьмёркой.

Всё-таки, меняйте настольный компьютер на пусть простенький, но сервер. Это само по себе решит и проблему тормозов и много других. А на настольнике оставьте апач с пхп.
12 июл 06, 17:24    [2872942]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
___SQ1___
Guest
1. sort_*_size нужно увеличить, тут все правильно. Куча чтений temp это показывает, об это вам правильно писал г-н SmaLL.
2. Судя по
CPU used by this session
CPU used when call started
ораклу вообще процессора не достается. Тут скорее всего просто нужно апач и пхп с сервера убрать.
3. Пропачить сервер тоже бы не мешало (но не до 10 версии :) ) как некто diStas пишет. На производительность это не повлеяет, но в 8.1.4.0 куча багов связанных со стасистиками (так что не факт, что статпак вам проавильно показал).

PS
Советы - железо ф топку и виноваты сатовстие диски - похожи на полную х*.
12 июл 06, 17:49    [2873107]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
___SQ1___
Guest
Блин, только что прочитал, что DiStas пишет :)
Афтар жжот! Тема сбора стасистики раскыта полностью.
"просроченная статистика" - это очень смешно.
У меня, конечно, знаний не так много как у Стаса, но вроде есть такое правило - если кол-во данных изменилось где-то на 10% тогда нужно стастику собирать, а там хоть месяц, хоть неделя - не важно.
И вроде как бы достаточно, вместо сбора по каждой таблице, по схеме собрать - gather_schema_stats, кажется.

Пойду почитаю журнал "юнный техник" и "юнный натуралист" заодно, может найду ответы про просроченные статистики.
12 июл 06, 18:10    [2873211]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
DiStas
Member

Откуда:
Сообщений: 52
___SQ1___
Блин, только что прочитал, что DiStas пишет :)
Афтар жжот!


Ацким напалмам?? А пачему тагда забыл дабавить: "Аффтар - аццкий сотона" и "Дайте две!". НЕЗАЧОТ ТИБЕ, андерскор_эскюэль_андерскор!

___SQ1___

Тема сбора стасистики раскыта полностью.
"просроченная статистика" - это очень смешно.
У меня, конечно, знаний не так много как у Стаса,


Ну... Это сам ты сказал.

___SQ1___

но вроде есть такое правило - если кол-во данных изменилось где-то на 10% тогда нужно стастику собирать, а там хоть месяц, хоть неделя - не важно.


А ты знаешь, менялись ли там данные или нет? Или ты с десяточной AWR попутал? А какой первый вопрос и первый же совет оракловского супорта при таких проблемах, знаешь? Если нет, пропробуй угадать с 3х раз.

___SQ1___

И вроде как бы достаточно, вместо сбора по каждой таблице, по схеме собрать - gather_schema_stats, кажется.


Ага, точно! Ты прав, андерскорик, на всё 100! Только прав для девятки и десятки, а для восьмёрки, тем более непропаченной, статистики, собранные твоим любимым и, наверно, единственно знакомым способом - нах№" не годятся.

___SQ1___

Пойду почитаю журнал "юнный техник" и "юнный натуралист" заодно, может найду ответы про просроченные статистики.


Пачетай лучши пра калабка или кр. шапачку - больши толка будит.
12 июл 06, 18:30    [2873307]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
StarWoofy
Member

Откуда: Moscow
Сообщений: 1005
___SQ1___
Блин, только что прочитал, что DiStas пишет :)
Афтар жжот! Тема сбора стасистики раскыта полностью.
"просроченная статистика" - это очень смешно.

главное не как сказал а
то что поняли :)

___SQ1___

вроде есть такое правило - если кол-во данных изменилось где-то на 10% тогда нужно стастику собирать

На пром. системах статистика как правило собирается чаще.
Без привязки к %.


___SQ1___

И вроде как бы достаточно, вместо сбора по каждой таблице, по схеме собрать - gather_schema_stats, кажется.

Gather_schema_stats не всегда возможно(нужно), скажем при ежедневном сборе.
(зависит от системы конечно)

___SQ1___

Пойду почитаю журнал "юнный техник" и "юнный натуралист" заодно, может найду ответы про просроченные статистики.

:D
+5
12 июл 06, 19:09    [2873497]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
___SQ1___
Guest
2 StarWoofy
Не поленился полезть в доку (Oracle9i Database Performance Tuning Guide and Reference, глава Generating Statistics)
и вот что нарыл:

If a monitored table has been modified more
than 10%, then statistics are gathered again. The information about changes of
tables, as shown in the USER_TAB_MODIFICATIONS view, can be flushed from the
SGA into the data dictionary with the DBMS_STATS.FLUSH_DATABASE_
MONITORING_INFO procedure ...

Речь конечно идет об автоматическом сборе статистики, но все таки Oracle считает, что нужно сорбирать когда 10% данных изменилось.
Так, что к проценты я не из головы выдумал :)

Понятно, что можно и реже и чаше статистику собирать, это дело сугубо индивидуальное. Я просто ДиСтасу хотел показать, что необходимость сбора статистики не зависит он времени когда она собиралась, а от изменения данных.

Что касается Gather_schema_stats, его я привел как альтернативу скрипта,
select .....
from dba_tables
where owner=... .

2 DiStas
Я не очень понял причем AWR, хотел уже было выяснить, но прочитав другие твои посты в этом форме, продолжать с тобой дисскусию не хочу.
12 июл 06, 20:25    [2873671]     Ответить | Цитировать Сообщить модератору
 Re: тормозит Oracle 8i  [new]
FoxTheRed
Member

Откуда:
Сообщений: 88
Покажи результаты запросов
SELECT table_name,num_rows,blocks,avg_row_len,last_analyzed FROM user_tables WHERE table_name IN ('SAMSUNGREPORTING','UPDATELOG','WARESLIST')

SELECT COUNT(*) FROM SAMSUNGREPORTING

SELECT COUNT(*) FROM WARESLIST

SELECT COUNT(*) FROM UPDATELOG

SELECT TABLE_NAME,INDEX_NAME,CLUSTERING_FACTOR,LEAF_BLOCKS,DISTINCT_KEYS FROM USER_INDEXES WHERE TABLE_NAME='SAMSUNGREPORTING'

SELECT * FROM USER_IND_COLUMNS WHERE TABLE_NAME='SAMSUNGREPORTING'
13 июл 06, 06:39    [2874138]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить