03июл
Как можно получить информацию по оперативным журналам и как ее может использовать администратор? V$LOG, V$LOGFILE, V$LOG_HISTORY
Администратор в повседневной работе достаточно часто использует следующие представления:
V$LOG – информация об оперативном журнале, полученную из управляющего файла
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
-------------------------------------- -------------------------------------- -------------------------------------- -------------------------------------- -------------------------------------- ---------- ---------------- -------------------------------------- -------------------
1 1 14772 3096576 3 YES INACTIVE 56131894 01.07.2008 15:36:27
2 1 14774 3096576 3 NO CURRENT 56133611 01.07.2008 16:07:53
3 1 14770 3096576 3 YES INACTIVE 56129578 01.07.2008 15:01:51
4 1 14773 3096576 3 YES INACTIVE 56132914 01.07.2008 15:56:02
5 1 14771 3096576 3 YES INACTIVE 56130959 01.07.2008 15:28:48
6 1 14769 3096576 3 YES INACTIVE 56128880 01.07.2008 14:48:14
V$LOGFILE – информация о журнальных группах, входящих в них элементах и их статусах. Если поле status является пустым – файл используется.
GROUP# STATUS TYPE MEMBER
-------------------------------------- ---------- ---------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG6.ORA
6 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG6_1.ORA
6 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG6_2.ORA
1 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG1.ORA
1 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG1_1.ORA
1 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG1_2.ORA
2 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG2.ORA
2 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG2_1.ORA
2 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG2_2.ORA
3 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG3.ORA
3 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG3_1.ORA
3 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG3_2.ORA
4 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG4.ORA
4 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG4_1.ORA
4 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG4_2.ORA
5 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG5.ORA
5 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG5_1.ORA
5 ONLINE K:\ORACLE\ORADATA\STA2201F\LOG5_2.ORA
А вот представление V$LOG_HISTORY, которое содержит историю журнала, можно использовать для диагностики нагрузки на Ваш сервер. Обычно в этом представлении не очень много записей, так как админы обычно регулярно «чистят» эту информацию RMANом, например, таким образом:
Connect target
Crosscheck archivelog all;
Delete expired archivelog all ;
Но получается, что может и не стоит этого делать. Из этого представления можно почерпнуть много полезного. Судить Вам.
Посмотрите на следующие запросы:
Количество изменений по месяцам:
SELECT TO_CHAR(FIRST_TIME,'YYYY-MM') "месяц",
SUM(NEXT_CHANGE#-FIRST_CHANGE#) "количество изменений за месяц"
FROM V$LOG_HISTORY
GROUP BY TO_CHAR(FIRST_TIME,'YYYY-MM')
месяц количество изменений за месяц
---------- --------------------------------------
2007-10 368219
2007-11 1635342
2007-12 1609923
2008-01 1667300
2008-02 1533117
2008-03 1713041
2008-04 1611976
2008-05 1641680
2008-06 1537024
2008-07 123685
Нагрузка по дням за указанный месяц
SELECT TO_CHAR(FIRST_TIME,'DD') "день указанного месяца",
SUM(NEXT_CHANGE#-FIRST_CHANGE#) "количество изменений за день"
FROM V$LOG_HISTORY
WHERE TO_CHAR(FIRST_TIME,'MMYYYY')='052008' -- укажите месяц
GROUP BY TO_CHAR(FIRST_TIME,'DD');
день указанного месяца количество изменений за день
---------------------- --------------------------------------
01 28502
02 44647
03 37395
04 29917
05 65568
06 74660
07 52766
08 79408
09 45990
10 33719
11 24692
12 67903
13 74617
14 55294
15 53430
16 62520
17 50550
18 30749
19 76847
20 62504
21 52181
22 56810
23 55976
24 39486
25 30217
26 63790
27 65076
28 50656
29 60953
30 76582
31 38275
Суммарная нагрузка по времени суток:
SELECT TO_CHAR(FIRST_TIME,'HH24') "час",
SUM(NEXT_CHANGE#-FIRST_CHANGE#) "количество изменений за час"
FROM V$LOG_HISTORY
WHERE TO_CHAR(FIRST_TIME,'DDMMYYYY')='20052008' -- укажите день
GROUP BY TO_CHAR(FIRST_TIME,'HH24')
час количество изменений за час
---------- --------------------------------------
04 25897
08 128593
09 455519
00 204822
13 33708
17 89677
01 1242089
11 15269
12 118226
16 34255
20 20714
22 214689
02 14166
03 130424
10 69888
14 13450
15 33851
23 317569
Суммарная нагрузка по дням недели:
SELECT TO_CHAR(FIRST_TIME,'D') "день недели",
SUM(NEXT_CHANGE#-FIRST_CHANGE#+1) "количество изменеий за день"
FROM V$LOG_HISTORY
WHERE TO_CHAR(FIRST_TIME,'MMYYYY')='052008' -- укажите месяц
GROUP BY TO_CHAR(FIRST_TIME,'D')
день недели количество изменеий за день
----------- --------------------------------------
1 274211
2 276947
3 210979
4 279193
5 285785
6 199461
7 115583
Литература
http://www.opennet.ru/base/dev/oraloghist.txt.html