Показать сообщение отдельно
Старый 23.10.2008, 22:57   #14  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Ну, на первом этапе проще это воспринимать как набор, внутренних по отношению в Oracle, счетчиков (perfomance counters). Чтобы понять нужная ли это вам тулза - поищите в google скриншоты - думаю станет более - меннее понятно.

Ссылки на официальную документацию вам дал ZVV. Согласен, что читать много, но в общем то, вся документация Oracle страдает некоторой монструозностью. А точнее говоря, не хватает документов в стиле Quick Start.

Ну, если коротко, то так:

1. Устанавливаем параметр STATISTICS_LEVEL в значение TYPICAL. Хотя, кажется он по умоланию такой. Но лучше проверить:

X++:
 select statistics_name, activation_level from v$statistics_level;
2. Собственно результатом работы этой тулзы являются две сущности - AWR Snapshots и In-memory statistics.

3. Snapshots (снимки? не знаю рускоязычного аналога) - это просто набор характеристик вашей системы собранный в определенный момент времени и сохраненный в системных таблицах. Их можно собирать как вручную, так и автоматически.

Автоматически - это как то так:

X++:
SQL> BEGIN
  2  dbms_workload_repository.modify_snapshot_settings (
  3   retention => 21600,
  4   interval => 30);
  5  END;
SQL> /
PL/SQL procedure successfully completed.

SQL> SELECT * from dba_hist_wr_control;
Я не разжовываю параметры - их все в документации найти можно.

Ручками - это так:

X++:
SQL> SELECT sys.dbms_workload_repository.create_snapshot() FROM  dual;

SYS.DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT()
----------------------------------------------
                                           453

SQL> SELECT snap_id id, begin_interval_time,
  2         end_interval_time
  3  FROM   dba_hist_snapshot
  4  WHERE snap_id > 450
SQL> /

 ID BEGIN_INTERVAL_TIME       END_INTERVAL_TIME
--- ------------------------- -------------------------
451 ....
452 ....
453 ....

SQL> EXEC dbms_workload_repository.drop_snapshot_range -
 >    (200,250);

SQL> BEGIN
  2  dbms_workload_repository.create_baseline (
  3   start_snap_id => 426,
  4   end_snap_id => 435,
  5   baseline_name => 'ONLINE PEAK');
  6  END;
  7  /
PL/SQL procedure successfully completed.

SQL> SELECT baseline_name, start_snap_time, end_snap_time FROM dba_hist_baseline;
SQL> EXEC dbms_workload_repository.drop_baseline -
 >        ('ONLINE PEAK');
Собранные данные можно посмотреть во view V$*Metric* и DBA_HIST_* но их там слишком много и я в них не разбирался - смотрю с помощью Enterprise Manager. Кстати, если кто-то посоветует альтернативную тулзу для визуализации собранных данных - буду благодарен.

Еще есть Automatic Database Diagnostic Monitor, как правильно заметил ZVV, который на основе собранных данных пытается давать советы, но с ним я не очень разбирался. Часть советов показались мне банальными и очевидными, а часть спорными и сомнительными

Опять же проще работать через EM; если нет возможности - из консоли через системные вьюхи dba_advisor_*.

Ну и самим "советчиком" можно рулить из консоли:

X++:
SQL> SELECT parameter_name, parameter_value
  2 FROM    dba_advisor_def_parameters
  3 WHERE advisor_name = 'ADDM';

SQL> EXEC dbms_advisor.set_default_task_parameter ( -
'ADDM', 'DBIO_EXPECTED', 16000);
PL/SQL procedure successfully completed.
Еще там можно настроить систему alert-ов, чтобы он сигнализировал (кажется, на email), когда какой-либо параметр превышает установленный порог.
За это сообщение автора поблагодарили: ZVV (1), gl00mie (5).