Программирование >>  Oracle 

1 ... 383 384 385 [ 386 ] 387 388 389 ... 469


Пакет DBMS APPLICATION INFO

1581

10 11 12 13

15 16 17 18

(rindex => l rindex, slno => l slno, op name => my long running operation, target => 123 4,

target desc => 1234 is my target, => 0,

context sofar => totalwork units );

end loop;

=> 25,

=> loops

end;

Этот блок кода представляет собой продолжительное действие, выполняющееся в течение 50 секунд (вызов DBMS LOCK.SLEEP просто приостанавливает выполнение на две секунды). В другом сеансе можно следить за ходом данного сеанса с помощью представленного ниже запроса (описание использованной в нем утилиты PRINT TABLE см. в главе 23):

tkyte@TK:E816> begin

2 print table(select b.*

3 from v$session

a, v$session longops b

where a.sid = b.sid

and a.serial# = b.serial#);

6 end;

7 /

: 11

SERIAL

: 635

OPNAME

: my long running operat

TARGET

: 1234

TARGET DESG

: 1234 is my target

SOFAR

: 2

TOTALWORK

: 25

UNITS

: loops

START TIME

: 28-apr-2001 16:02:46

LAST UPDATE TIME

: 28-apr-2001 16:02:46

TIME REMAINING

: 0

ELAPSED SEGONDS

: 0

GONTEXT

: 0

MESSAGE

: my long running operat

target 1234: 2 out of

USERNAME

: TKYTE

SQL ADDRESS

: 036G3758

SQL HASH VALUE

: 1723303299

QGSID

: 0

PL/SQL procedure successfully completed.

ops$tkyteeORA8I.WORLD>

: 11

SERLAL#

: 635

: 1234 is my loops done



1582

Приложение А

OPNAME

TARGET

TARGET DESC

SOFAR

TOTALWORK

UNITS

START TIME

LAST UPDATE TIME

TIME REMAINING

ELAPSED SECONDS

CONTEXT

MESSAGE

USERNAME SQL ADDRESS

SQL HASH VALUE QCSID

: my long running operation

: 1234

: 1234 is my target

: 25

: loops

: 28-apr-2001 16:02:46

: 28-apr-2001 16:02:55

: 29

: my long running operation: 1234 is my target 1234: 6 out of 25 loops done

: TKYTE

: 036C3758

: 1723303299

PL/SQL procedure successfully completed. ops$tkyte@ORA8I.WORLD> /

SID :

SERIAL# :

OPNAME :

TARGET :

TARGET DESC :

SOFAR :

TOTALWORK :

UNITS :

START TIME :

LAST UPDATE TIME :

TIME REMAINING :

ELAPSED SECONDS :

CONTEXT :

MESSAGE :

USERNAME SQL ADDRESS SQL HASH VALUE QCSID

my long running operation

1234

1234 is my target

loops

28-apr-2001 16:02:46 28-apr-2001 16:03:04

27 18

my long running operation: 1234 is my target 1234: 10 out of 25 loops done TKYTE 036C3758 1723303299 0

PL/SQL procedure successfully completed.

Может возникнуть вопрос: зачем представление V$SESSION LONGOPS соединяется с представлением V$SESSION, если из V$SESSION не выбирается информация? Дело в том, что представление V$SESSION LONGOPS содержит строки как для текущего, так и для прежних сеансов. По завершении сеанса это представление не очищается. Данные остаются, пока какой-нибудь другой сеанс не использует повторно соответствующий слот. Поэтому, чтобы получить информацию только текущих сеансов, необходимо использовать соединение или подзапрос.



Пакет DBMS APPLICATION INFO 1583

Этот достаточно простой пример демонстрирует, что из представления V$SESSION LONGOPS можно получить информацию, весьма ценную для пользователей и администраторов базы данных, которым необходимо контролировать ход выполнения продолжительных хранимых процедур, пакетных заданий, отчетов и т.п. Добавив лишь несколько вызовов, можно получить точную информацию в производственной среде. Вместо того чтобы гадать, что именно происходит в задании и сколько оно будет выполняться, можно получить точную информацию о том, что сделано, и обоснованную оценку времени, необходимого для завершения работы.

Резюме

В этом разделе мы рассмотрели пакет DBMS APPLICATION INFO, о котором мало кто знает и использует его. Пакет можно и нужно использовать в любом приложении для регистрации в базе данных, что позволит администратору базы данных или пользователю, отвечающему за сервер, определить, какие приложения с ним работают. Очень важно использовать представление V$SESSION LONGOPS в приложениях, выполняющихся дольше нескольких секунд. Только это позволит показать, что процесс не висит , а выполняет необходимые действия. Oracle Enterprise Manager (OEM) и многие инструментальные средства независимых производителей обращаются к этому представлению и автоматически отображают информацию, которую приложения в нем устанавливают.



1 ... 383 384 385 [ 386 ] 387 388 389 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика