Oracle для профессионалов




Как работают внешние процедуры на языке Java - часть 4


ORA-20001: Слишком много вызовов

ORA-06512: at line 1 ORA-06512: at "TKYTE.JAVA_COUNTER", line 0 ORA-06512: at line 1

Как видите, информация о состоянии поддерживается автоматически, о чем свидетельствует увеличение счетчика с 1 до 2 и 3. Об ошибках сообщать тоже достаточно легко, но куда попадают результаты обращения к System.out.println? По умолчанию они попадают в трассировочный файл. При наличии доступа к представлениям V$PROCESS, V$SESSION и V$PARAMETER можно определить имя трассировочного файла в конфигурации выделенного сервера следующим образом (этот пример предназначен для Windows — для ОС UNIX он будет аналогичным, но полученное имя файла будет другим):

tkyte@TKYTE816> select c.value'\ORA'to_char(a.spid,'fm00000')'.trc' 2 from v$process a, v$session b, v$parameter c 3 where a.addr = b.paddr 4 and b.audsid = userenv('sessionid') 5 and c.name = 'user_dump_dest' 6 /

C.VALUE'\ORA'TO_CHAR(A.SPID,'FM00000')'.TRC' ----------------------------------------------------------- C:\oracle\admin\tkyte816\udump\ORA01236.trc

tkyte@TKYTE816> edit C:\oracle\admin\tkyte816\udump\ORA01236.trc

В этом файле можно обнаружить следующее:

Dump file C:\oracle\admin\tkyte816\udump\ORA01236.TRC Tue Mar 27 11:15:48 2001 ORACLE V8.1.6.0.0 - Production vsnsta=0 vsnsql=e vsnxtr=3 Windows 2000 Version 5.0 , CPU type 586 Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production With the Partitioning option JServer Release 8.1.6.0.0 - Production Windows 2000 Version 5.0 , CPU type 586 Instance name: tkyte816 Redo thread mounted by this instance: 1 Oracle process number: 12 Windows thread id: 1236, image: ORACLE.EXE

*** 2001-03-27 11:15:48.820 *** SESSION ID:(8.11) 2001-03-27 11:15:48.810 Входим в функцию IncrementCounter, counter = 0 Выходим из функции IncrementCounter, counter = 1 Входим в функцию IncrementCounter, counter = 1 Выходим из функции IncrementCounter, counter = 2 Входим в функцию IncrementCounter, counter = 2 Ошибка! counter=3 oracle.jdbc.driver.OracleSQLException: ORA-20001: Слишком много вызовов ORA-06512: at line 1 ...




Содержание  Назад  Вперед