16 января 2012 г.

oracle: мониторинг объектов схемы

1. Посмотреть кто к каким объектам схемы обращается.


-- кто к каким объектам схемы обращается
SELECT a.object,
       a.type,
       a.sid,
       b.username,
       b.osuser,
       b.program
FROM   v$access a,
       v$session b
WHERE  a.sid   = b.sid
AND    a.owner = UPPER('arbor')
ORDER BY a.object;


Используем представление V$ACCESS.
V$ACCESS содержит информацию о блокировках, которые в данный момент наложены на объекты library cache. Это делается для того чтобы они не ушли из library cache пока они требуются для выполнения sql запроса.

2. Есть программа, нужно узнать к каким объектам она обращается.

-- основываясь на п.1, можно посмотреть информацию о том: какая конкретная программа
-- какие объекты использует
SELECT a.object,
       a.TYPE,
       a.sid,
       b.username,
       b.osuser,
       b.program
  FROM v$access a, v$session b
 WHERE     a.sid = b.sid
       AND a.owner = UPPER ('arbor')
       AND b.program LIKE 'ck_KenanPaymentCreate%'
ORDER BY a.object;

oracle: мониторинг блокировок

oracle: блокировки (locks), защёлки (latches), enqueues
Мониторинг блокировок (http://my-oracle.it-blogs.com.ua/)

Запросы для мониторинга блокировок в базе.

-- смотрим блокировки, установленные текущими транзакциями в базе,
-- которые блокируют запросы на блокировку от других сессий (where block=1)
SELECT l.SID,s.username,s.program,l.TYPE,l.LMODE,ROUND(CTIME/60) "Time(Min)",
(SELECT object_name FROM dba_objects WHERE object_id=lo.object_id) obj,
DECODE(lo.locked_mode,
   0, 'None',           /* Mon Lock equivalent */
   1, 'Null',           /* N */
   2, 'Row-S (SS)',     /* L */
   3, 'Row-X (SX)',     /* R */
   4, 'Share',          /* S */
   5, 'S/Row-X (SSX)',  /* C */
   6, 'Exclusive',      /* X */
   TO_CHAR(lo.locked_mode)) mode_held
FROM V$LOCK l, v$locked_object lo, v$session s
WHERE block=1
AND l.sid=lo.session_id AND l.sid=s.sid;

-- смотрим активные сессии, которые чего то ждут, и чего они собственно ждут
SELECT s.program,s.username,s.osuser,s.machine,sw.* FROM v$session_wait sw,v$session s
WHERE sw.sid=s.sid
AND sw.event<>'rdbms ipc message' AND sw.event NOT LIKE 'SQL*Net%'
ORDER BY sw.event ASC;

-- смотрим блокировки, установленные текущими транзакциями в базе,
-- кто и на что и какой тип блокировки установил
SELECT  oracle_username, session_id,s.program,object_name,DECODE(a.locked_mode,
   0, 'None',           /* Mon Lock equivalent */
   1, 'Null',           /* N */
   2, 'Row-S (SS)',     /* L */
   3, 'Row-X (SX)',     /* R */
   4, 'Share',          /* S */
   5, 'S/Row-X (SSX)',  /* C */
   6, 'Exclusive',      /* X */
   TO_CHAR(a.locked_mode)) mode_held
FROM V$LOCKED_OBJECT a,DBA_OBJECTS b,v$session s WHERE a.object_id = b.object_id
AND a.session_id=s.sid;



11 января 2012 г.

21 декабря 2011 г.

oracle: Выполнить запрос в pl/sql коде

Выполнить запрос в pl/sql коде:

DECLARE
     pc_id           number := 1;
BEGIN
          DBMS_OUTPUT.PUT_LINE('pc_id: '||pc_id);
          insert into GUPPI.DEPT(DEPTNO,DNAME,LOC) values (pc_id, 'TEST', 'TEST_LOC');
          commit;

              EXCEPTION
              WHEN OTHERS THEN
              pc_id:= 0;
              DBMS_OUTPUT.PUT_LINE('Error pc_id: '||pc_id);
           
END;
/

20 декабря 2011 г.

oracle: Мониторинг отката транзакции

Если по какой то причине сделали rollback транзакции, то интересно как долго он будет выполнятся. Оценить это можно сделав запросы к v$transaction.

В этом представлении есть два поля USED_UREC и USED_UBLK.
USED_UREC - Number of undo records used
USED_UBLK - Number of undo blocks used

Во время rollback значения этих полей уменьшается и стремится к нулю, т.е. rollback закончится, когда значения этих полей станут равны нулю.

Запросы для мониторинга:

select * from v$transaction;

-- конкрето поля USED_UREC и USED_UBLK
SELECT a.sid, a.username, b.xidusn, b.used_urec, b.used_ublk
  FROM v$session a, v$transaction b
  WHERE a.saddr = b.ses_addr;

16 ноября 2011 г.

CPU Info

Platform Command(s)
AIX lparstat -i
FreeBSD sysctl hw.model
HP/UX ioscan -fnC processor
Linux cat /proc/cpuinfo
Mac OS X system_profiler SPHardwareDataType
SCO OpenServer 5 hw
uname -X
SCO Unixware 7 psrinfo -v
Solaris SPARC kstat > /tmp/kstat.output
Solaris x86 uname -X
Tru64 psrinfo -v

31 октября 2011 г.

blogger: гаджет "Поиск" аналогичный поиску в навигационной панели

Поиск по блогу организуется путем добавления гаджета HTML/JavaScript. На странице настроек гаджета название меняем, например, на «Поиск в блоге», а в поле «Содержание» пишем:


<nobr><form id="searchthis" method="get" action="/search" style="display:inline;"><input id="search-box" name="q" type="text" size="20"/> <input id="search-btn" type="submit" value="Поиск"/></form></nobr> 
 

Получается функция поиска, полностью аналогичная той, что была в навигационной панели.

18 октября 2011 г.

vmstat

1. vmstat в реальном времени

(число идущее после vmstat означает сколько раз вывести информацию)
# vmstat 1

System configuration: lcpu=2 mem=3920MB

kthr    memory                page              faults          cpu
-----  -----------    ------------------------ ------------  -----------
r  b    avm   fre    re  pi  po  fr   sr  cy  in   sy  cs   us sy id wa
0  0  229367 332745   0   0   0   0    0   0   3  198  69    0  0 99  0
0  0  229367 332745   0   0   0   0    0   0   3   33  66    0  0 99  0
0  0  229367 332745   0   0   0   0    0   0   2   33  68    0  0 99  0
0  0  229367 332745   0   0   0   0    0   0  80  306 100    0  1 97  1
0  0  229367 332745   0   0   0   0    0   0   1   20  68    0  0 99  0
0  0  229367 332745   0   0   0   0    0   0   2   36  64    0  0 99  0

*  r -- Среднее число выполняемых ядром потоков за временной интервал, который Вы выбрали.
*  b -- Среднее число потоков, которые ждут своей очереди на выполнение в виртуальной памяти в течение заданного Вами промежутка времени. r всегда должен быть выше чем b; если нет, то в обычном случае это означает то, что слабым местом, давшим сбой, является центральный процессор.
* fre -- размер свободной памяти. Не волнуйтесь, если он окажется маленьким короткий. Главное - определить, происходит ли разбиение этой небольшой свободной памяти на страницы.
* pi -- Страницы, подкачанные в физическую память из виртуальной.
* po -- Страницы, откачанные из физической памяти в виртуальную.
* CPU сегменты:
    *   us -- время пользователя
    * sy -- системное время
    * id -- время простоя
    * wa --ожидание ввода/вывода

2. Различная статистика
$ vmstat -v
              2031616 memory pages
              1974804 lruable pages
               549549 free pages
                    1 memory pools
               141346 pinned pages
                 80.1 maxpin percentage
                 20.0 minperm percentage
                 80.0 maxperm percentage
                 30.7 numperm percentage
               608228 file pages
                  0.0 compressed percentage
                    0 compressed pages
                 26.9 numclient percentage
                 80.0 maxclient percentage
               531937 client pages
                    0 remote pageouts scheduled
                17011 pending disk I/Os blocked with no pbuf
                    0 paging space I/Os blocked with no psbuf
                 4849 filesystem I/Os blocked with no fsbuf
                    0 client filesystem I/Os blocked with no fsbuf
                    3 external pager filesystem I/Os blocked with no fsbuf