0
ERR_NO_ERROR
Нет ошибки
1
ERR_NO_RESULT
Нет ошибки, но результат неизвестен
2
ERR_COMMON_ERROR
Общая ошибка
3
ERR_INVALID_TRADE_PARAMETERS
Неправильные параметры
4
ERR_SERVER_BUSY
Торговый сервер занят
5
ERR_OLD_VERSION
Старая версия клиентского терминала
6
ERR_NO_CONNECTION
Нет связи с торговым сервером
7
ERR_NOT_ENOUGH_RIGHTS
Недостаточно прав
8
ERR_TOO_FREQUENT_REQUESTS
Слишком частые запросы
9
ERR_MALFUNCTIONAL_TRADE
Недопустимая операция, нарушающая функционирование сервера
64
ERR_ACCOUNT_DISABLED
Счет заблокирован
65
ERR_INVALID_ACCOUNT
Неправильный номер счета
128
ERR_TRADE_TIMEOUT
Истек срок ожидания совершения сделки
129
ERR_INVALID_PRICE
Неправильная цена
130
ERR_INVALID_STOPS
Неправильные стопы
131
ERR_INVALID_TRADE_VOLUME
Неправильный объем
132
ERR_MARKET_CLOSED
Рынок закрыт
133
ERR_TRADE_DISABLED
Торговля запрещена
134
ERR_NOT_ENOUGH_MONEY
Недостаточно денег для совершения операции
135
ERR_PRICE_CHANGED
Цена изменилась
136
ERR_OFF_QUOTES
Нет цен
137
ERR_BROKER_BUSY
Брокер занят
138
ERR_REQUOTE
Новые цены
139
ERR_ORDER_LOCKED
Ордер заблокирован и уже обрабатывается
140
ERR_LONG_POSITIONS_ONLY_ALLOWED
Разрешена только покупка
141
ERR_TOO_MANY_REQUESTS
Слишком много запросов
145
ERR_TRADE_MODIFY_DENIED
Модификация запрещена, так как ордер слишком близок к рынку
146
ERR_TRADE_CONTEXT_BUSY
Подсистема торговли занята
147
ERR_TRADE_EXPIRATION_DENIED
Использование даты истечения ордера запрещено брокером
148
ERR_TRADE_TOO_MANY_ORDERS
Количество открытых и отложенных ордеров достигло предела, установленного брокером
149
ERR_TRADE_HEDGE_PROHIBITED
Попытка открыть противоположный ордер в случае, если хеджирование запрещено
150
ERR_TRADE_PROHIBITED_BY_FIFO
Попытка закрыть позицию по инструменту в противоречии с правилом FIFO
4000
ERR_NO_MQLERROR
Нет ошибки
4001
ERR_WRONG_FUNCTION_POINTER
Неправильный указатель функции
4002
ERR_ARRAY_INDEX_OUT_OF_RANGE
Индекс массива — вне диапазона
4003
ERR_NO_MEMORY_FOR_CALL_STACK
Нет памяти для стека функций
4004
ERR_RECURSIVE_STACK_OVERFLOW
Переполнение стека после рекурсивного вызова
4005
ERR_NOT_ENOUGH_STACK_FOR_PARAM
На стеке нет памяти для передачи параметров
4006
ERR_NO_MEMORY_FOR_PARAM_STRING
Нет памяти для строкового параметра
4007
ERR_NO_MEMORY_FOR_TEMP_STRING
Нет памяти для временной строки
4008
ERR_NOT_INITIALIZED_STRING
Неинициализированная строка
4009
ERR_NOT_INITIALIZED_ARRAYSTRING
Неинициализированная строка в массиве
4010
ERR_NO_MEMORY_FOR_ARRAYSTRING
Нет памяти для строкового массива
4011
ERR_TOO_LONG_STRING
Слишком длинная строка
4012
ERR_REMAINDER_FROM_ZERO_DIVIDE
Остаток от деления на ноль
4013
ERR_ZERO_DIVIDE
Деление на ноль
4014
ERR_UNKNOWN_COMMAND
Неизвестная команда
4015
ERR_WRONG_JUMP
Неправильный переход
4016
ERR_NOT_INITIALIZED_ARRAY
Неинициализированный массив
4017
ERR_DLL_CALLS_NOT_ALLOWED
Вызовы DLL не разрешены
4018
ERR_CANNOT_LOAD_LIBRARY
Невозможно загрузить библиотеку
4019
ERR_CANNOT_CALL_FUNCTION
Невозможно вызвать функцию
4020
ERR_EXTERNAL_CALLS_NOT_ALLOWED
Вызовы внешних библиотечных функций не разрешены
4021
ERR_NO_MEMORY_FOR_RETURNED_STR
Недостаточно памяти для строки, возвращаемой из функции
4022
ERR_SYSTEM_BUSY
Система занята
4023
ERR_DLLFUNC_CRITICALERROR
Критическая ошибка вызова DLL-функции
4024
ERR_INTERNAL_ERROR
Внутренняя ошибка
4025
ERR_OUT_OF_MEMORY
Нет памяти
4026
ERR_INVALID_POINTER
Неверный указатель
4027
ERR_FORMAT_TOO_MANY_FORMATTERS
Слишком много параметров форматирования строки
4028
ERR_FORMAT_TOO_MANY_PARAMETERS
Число параметров превышает число параметров форматирования строки
4029
ERR_ARRAY_INVALID
Неверный массив
4030
ERR_CHART_NOREPLY
График не отвечает
4050
ERR_INVALID_FUNCTION_PARAMSCNT
Неправильное количество параметров функции
4051
ERR_INVALID_FUNCTION_PARAMVALUE
Недопустимое значение параметра функции
4052
ERR_STRING_FUNCTION_INTERNAL
Внутренняя ошибка строковой функции
4053
ERR_SOME_ARRAY_ERROR
Ошибка массива
4054
ERR_INCORRECT_SERIESARRAY_USING
Неправильное использование массива-таймсерии
4055
ERR_CUSTOM_INDICATOR_ERROR
Ошибка пользовательского индикатора
4056
ERR_INCOMPATIBLE_ARRAYS
Массивы несовместимы
4057
ERR_GLOBAL_VARIABLES_PROCESSING
Ошибка обработки глобальных переменных
4058
ERR_GLOBAL_VARIABLE_NOT_FOUND
Глобальная переменная не обнаружена
4059
ERR_FUNC_NOT_ALLOWED_IN_TESTING
Функция не разрешена в тестовом режиме
4060
ERR_FUNCTION_NOT_CONFIRMED
Функция не разрешена
4061
ERR_SEND_MAIL_ERROR
Ошибка отправки почты
4062
ERR_STRING_PARAMETER_EXPECTED
Ожидается параметр типа string
4063
ERR_INTEGER_PARAMETER_EXPECTED
Ожидается параметр типа integer
4064
ERR_DOUBLE_PARAMETER_EXPECTED
Ожидается параметр типа double
4065
ERR_ARRAY_AS_PARAMETER_EXPECTED
В качестве параметра ожидается массив
4066
ERR_HISTORY_WILL_UPDATED
Запрошенные исторические данные в состоянии обновления
4067
ERR_TRADE_ERROR
Ошибка при выполнении торговой операции
4068
ERR_RESOURCE_NOT_FOUND
Ресурс не найден
4069
ERR_RESOURCE_NOT_SUPPORTED
Ресурс не поддерживается
4070
ERR_RESOURCE_DUPLICATED
Дубликат ресурса
4071
ERR_INDICATOR_CANNOT_INIT
Ошибка инициализации пользовательского индикатора
4072
ERR_INDICATOR_CANNOT_LOAD
Ошибка загрузки пользовательского индикатора
4073
ERR_NO_HISTORY_DATA
Нет исторических данных
4074
ERR_NO_MEMORY_FOR_HISTORY
Не хватает памяти для исторических данных
4075
ERR_NO_MEMORY_FOR_INDICATOR
Не хватает памяти для расчёта индикатора
4099
ERR_END_OF_FILE
Конец файла
4100
ERR_SOME_FILE_ERROR
Ошибка при работе с файлом
4101
ERR_WRONG_FILE_NAME
Неправильное имя файла
4102
ERR_TOO_MANY_OPENED_FILES
Слишком много открытых файлов
4103
ERR_CANNOT_OPEN_FILE
Невозможно открыть файл
4104
ERR_INCOMPATIBLE_FILEACCESS
Несовместимый режим доступа к файлу
4105
ERR_NO_ORDER_SELECTED
Ни один ордер не выбран
4106
ERR_UNKNOWN_SYMBOL
Неизвестный символ
4107
ERR_INVALID_PRICE_PARAM
Неправильный параметр цены для торговой функции
4108
ERR_INVALID_TICKET
Неверный номер тикета
4109
ERR_TRADE_NOT_ALLOWED
Торговля не разрешена. Необходимо включить опцию «Разрешить советнику торговать» в свойствах эксперта
4110
ERR_LONGS_NOT_ALLOWED
Ордера на покупку не разрешены. Необходимо проверить свойства эксперта
4111
ERR_SHORTS_NOT_ALLOWED
Ордера на продажу не разрешены. Необходимо проверить свойства эксперта
4112
ERR_TRADE_EXPERT_DISABLED_BY_SERVER
Автоматическая торговля с помощью экспертов/скриптов запрещена на стороне сервера
4200
ERR_OBJECT_ALREADY_EXISTS
Объект уже существует
4201
ERR_UNKNOWN_OBJECT_PROPERTY
Запрошено неизвестное свойство объекта
4202
ERR_OBJECT_DOES_NOT_EXIST
Объект не существует
4203
ERR_UNKNOWN_OBJECT_TYPE
Неизвестный тип объекта
4204
ERR_NO_OBJECT_NAME
Нет имени объекта
4205
ERR_OBJECT_COORDINATES_ERROR
Ошибка координат объекта
4206
ERR_NO_SPECIFIED_SUBWINDOW
Не найдено указанное подокно
4207
ERR_SOME_OBJECT_ERROR
Ошибка при работе с объектом
4210
ERR_CHART_PROP_INVALID
Неизвестное свойство графика
4211
ERR_CHART_NOT_FOUND
График не найден
4212
ERR_CHARTWINDOW_NOT_FOUND
Не найдено подокно графика
4213
ERR_CHARTINDICATOR_NOT_FOUND
Индикатор не найден
4220
ERR_SYMBOL_SELECT
Ошибка выбора инструмента
4250
ERR_NOTIFICATION_ERROR
Ошибка отправки push-уведомления
4251
ERR_NOTIFICATION_PARAMETER
Ошибка параметров push-уведомления
4252
ERR_NOTIFICATION_SETTINGS
Уведомления запрещены
4253
ERR_NOTIFICATION_TOO_FREQUENT
Слишком частые запросы отсылки push-уведомлений
4260
ERR_FTP_NOSERVER
Не указан FTP сервер
4261
ERR_FTP_NOLOGIN
Не указан FTP логин
4262
ERR_FTP_CONNECT_FAILED
Ошибка при подключении к FTP серверу
4263
ERR_FTP_CLOSED
Подключение к FTP серверу закрыто
4264
ERR_FTP_CHANGEDIR
На FTP сервере не найдена директория для выгрузки файла
4265
ERR_FTP_FILE_ERROR
Не найден файл в директории MQL4\Files для отправки на FTP сервер
4266
ERR_FTP_ERROR
Ошибка при передаче файла на FTP сервер
5001
ERR_FILE_TOO_MANY_OPENED
Слишком много открытых файлов
5002
ERR_FILE_WRONG_FILENAME
Неверное имя файла
5003
ERR_FILE_TOO_LONG_FILENAME
Слишком длинное имя файла
5004
ERR_FILE_CANNOT_OPEN
Ошибка открытия файла
5005
ERR_FILE_BUFFER_ALLOCATION_ERROR
Ошибка размещения буфера текстового файла
5006
ERR_FILE_CANNOT_DELETE
Ошибка удаления файла
5007
ERR_FILE_INVALID_HANDLE
Неверный хендл файла (файл закрыт или не был открыт)
5008
ERR_FILE_WRONG_HANDLE
Неверный хендл файла (индекс хендла отсутствует в таблице)
5009
ERR_FILE_NOT_TOWRITE
Файл должен быть открыт с флагом FILE_WRITE
5010
ERR_FILE_NOT_TOREAD
Файл должен быть открыт с флагом FILE_READ
5011
ERR_FILE_NOT_BIN
Файл должен быть открыт с флагом FILE_BIN
5012
ERR_FILE_NOT_TXT
Файл должен быть открыт с флагом FILE_TXT
5013
ERR_FILE_NOT_TXTORCSV
Файл должен быть открыт с флагом FILE_TXT или FILE_CSV
5014
ERR_FILE_NOT_CSV
Файл должен быть открыт с флагом FILE_CSV
5015
ERR_FILE_READ_ERROR
Ошибка чтения файла
5016
ERR_FILE_WRITE_ERROR
Ошибка записи файла
5017
ERR_FILE_BIN_STRINGSIZE
Размер строки должен быть указан для двоичных файлов
5018
ERR_FILE_INCOMPATIBLE
Неверный тип файла (для строковых массивов-TXT, для всех других-BIN)
5019
ERR_FILE_IS_DIRECTORY
Файл является директорией
5020
ERR_FILE_NOT_EXIST
Файл не существует
5021
ERR_FILE_CANNOT_REWRITE
Файл не может быть перезаписан
5022
ERR_FILE_WRONG_DIRECTORYNAME
Неверное имя директории
5023
ERR_FILE_DIRECTORY_NOT_EXIST
Директория не существует
5024
ERR_FILE_NOT_DIRECTORY
Указанный файл не является директорией
5025
ERR_FILE_CANNOT_DELETE_DIRECTORY
Ошибка удаления директории
5026
ERR_FILE_CANNOT_CLEAN_DIRECTORY
Ошибка очистки директории
5027
ERR_FILE_ARRAYRESIZE_ERROR
Ошибка изменения размера массива
5028
ERR_FILE_STRINGRESIZE_ERROR
Ошибка изменения размера строки
5029
ERR_FILE_STRUCT_WITH_OBJECTS
Структура содержит строки или динамические массивы
5200
ERR_WEBREQUEST_INVALID_ADDRESS
URL не прошел проверку
5201
ERR_WEBREQUEST_CONNECT_FAILED
Не удалось подключиться к указанному URL
5202
ERR_WEBREQUEST_TIMEOUT
Превышен таймаут получения данных
5203
ERR_WEBREQUEST_REQUEST_FAILED
Ошибка в результате выполнения HTTP запроса
Пользовательские ошибки
65536
ERR_USER_ERROR_FIRST
С этого кода начинаются ошибки, задаваемые пользователем
Problem Description
——————-
You receive the following
error from user-written and Oracle packages:
ORA-04068 existing
state of packages%s%s%s has been discarded
Causes of ORA-4068
Errors
————————-
1) A dependent object was altered
through a DDL statement.
When a package is compiled, all copies in
the shared pool are
flagged as invalid. The next invocation of the
package sees
this flag set, and goes to get a new copy.
If
the package is now invalid, cannot compile, or relied on
a package state
(i.e., package level variables), then this error
occurs because the
current copy of the package is no longer valid
and must be thrown
out.
2) The package was changed or recompiled (both DDL) and the
package
being used contains package level variables.
Same as
above. When a package dependency is altered through
DDL statements
(DROP, CREATE, ALTER, …), this package is
flagged as invalid through
cascade invalidation.
3) A package relied on another package that had no
body, and during
execution, the call failed.
When a package is
compiled, it only looks for the specification.
During execution, it
calls a non-existent routine and throws an
error. This error then
invalidates the package.
Another variation is if the procedure being
called is not defined
in the package body and possibly as a standalone
routine.
4) A remote dependent object has been altered through a DDL
statement.
This can occur between database instances or from Forms or
Reports
to a database instance.
The default remote dependency
model uses the Timestamp model, and when
an execution of a procedure
takes place, the remote object’s timestamp
is validated, thus forcing
invalidation on the local package.
To check for these situations,
several SQL statements can be run:
a. To check the package’s last
compile:
SELECT object_name, object_type, owner, status,
last_ddl_time FROM
dba_objects WHERE object_name = ‘<PACKAGE
NAME>’;
For example:
SQL> SELECT object_name,
object_type, owner, status, last_ddl_time FROM
2 dba_objects WHERE
object_name = ‘DBMS_SQL’;
OBJECT_NAME
————————————————————————
OBJECT_TYPE OWNER STATUS LAST_DDL_
————- —————————— ——- ———
DBMS_SQL
PACKAGE SYS VALID
13-JUL-99
DBMS_SQL
PACKAGE BODY SYS
VALID 13-JUL-99
DBMS_SQL
SYNONYM
PUBLIC VALID 13-JUL-99
SQL>
b.
To check the dependent objects last alteration:
SELECT object_name,
object_type, owner, status, last_ddl_time FROM
dba_objects WHERE (
object_name, object_type ) IN ( SELECT
referenced_name,
referenced_type FROM dba_dependencies WHERE name =
‘<PACKAGE NAME>’
);
For example:
SQL> SELECT object_name, object_type,
owner, status, last_ddl_time FROM
2 dba_objects WHERE (
object_name, object_type ) IN ( SELECT
3 referenced_name,
referenced_type FROM dba_dependencies WHERE name =
4 ‘DBMS_SQL’
);
OBJECT_NAME
——————————————————————————<br
> OBJECT_TYPE OWNER STATUS LAST_DDL_
————- —————————— ——- ———
DBMS_SQL
PACKAGE SYS VALID
13-JUL-99
DBMS_SYS_SQL
PACKAGE
SYS VALID 13-JUL-99
STANDARD
PACKAGE SYS VALID 13-JUL-99
SQL>
c. To check for existing errors on package:
SELECT
name, type, text FROM dba_errors WHERE name = ‘<PACKAGE NAME>’;
For
example:
SQL> SELECT name, type, text FROM dba_errors WHERE name =
‘DBMS_SQL’;
no rows selected
SQL>
Solutions
for ORA-4068 Errors
——————————
1) Simply
re-execute the package.
For example:
Session 1: Create the
package and body for package p_pack:
SQL> create or replace package
p_pack as
2 p_var varchar2(1);
3 procedure p;
4 end p_pack;
5 /
Package created.
SQL> create or
replace package body p_pack as
2 procedure p is
3
begin
4 p_var := 1;
5 end;
6 end
p_pack;
7 /
Package body created.
SQL>
Session 2: Execute the package:
SQL> exec p_pack.p
PL/SQL
procedure successfully completed.
SQL>
Session 1: Recreate
the package and body:
SQL> create or replace package p_pack
as
2 p_var varchar2(1);
3 procedure p;
4 end
p_pack;
5 /
Package created.
SQL> create or
replace package body p_pack as
2 procedure p is
3
begin
4 p_var := 1;
5 end;
6 end
p_pack;
7 /
Package body created.
SQL>
Session 2: Re-execute the package:
SQL> exec p_pack.p
begin
p_pack.p; end;
*
ERROR at line 1:
ORA-04068: existing
state of packages has been discarded
ORA-04061: existing state of package
«SCOTT.P_PACK» has been invalidated
ORA-04065: not executed, altered or
dropped package «SCOTT.P_PACK»
ORA-06508: PL/SQL: could not find program
unit being called
ORA-06512: at line 1
SQL> exec
p_pack.p
PL/SQL procedure successfully completed.
SQL>
2) Attempt to recompile the package by using the ALTER PACKAGE
command.
For example:
SQL> ALTER PACKAGE DBMS_SQL
COMPILE;
Package altered.
SQL>
3) Verify that proper
execute permissions have been provided. In PL/SQL
stored program units,
roles are disabled prior to the release of Oracle
8i. Oracle 8i definers
rights follow the previous release model of
requiring explicit permission
to the object.
In Oracle 8i, if invoker’s rights are set on the
routine, then execution
is done with roles enabled, so permission could
be granted explicitly to
the schema executing or through a role. For
additional information,
refer to [NOTE:74149.1] entitled «Invoker Rights
versus Definer Rights
in Oracle 8i».
For example:
SQL> SELECT owner, table_name, privilege FROM dba_tab_privs WHERE
2
table_name = ‘DBMS_SQL’ AND ( grantee = ‘SCOTT’ OR grantee = ‘PUBLIC’
);
OWNER TABLE_NAME
—————————— ——————————
PRIVILEGE
—————————————-
SYS DBMS_SQL
EXECUTE
SQL>
4) If errors exist (check DBA_ERRORS or USER_ERRORS views with
above
query), then take the appropriate action to correct the errors.
If the package is a system package that comes with the Oracle
server,
the scripts are located in $ORACLE_HOME/rdbms/admin. Most
packages have
their own .sql and .plb script to build the specification
and body (see
below for names).
System packages that come
with the Oracle server, as well as other Oracle
products, typically need
to be owned by a particular schema. In the case
of the Oracle server
DBMS packages, these need to be owned by SYS. If these
packages are not
owned by SYS, some packages start getting ‘ORA-6509 PL/SQL
ICD vector
missing for this package’ errors.
5) If duplicate SYS owned objects
exist, clean them up.
We have had this issues for couple of times and for time being, we were compiling schema to resolve this issue temporarily. Over couple of days we were searching for the permanent resolution.
We found below query that showed timestamp difference in our synonym. we recompiled synonym and It worked !!! It’s been almost a week and so far we have no issues. Here is the query that helped in our case.
**
select do.obj# d_obj,do.name d_name, do.type# d_type, po.obj# p_obj,po.name p_name,
to_char(p_timestamp,'DD-MON-YYYY HH24:MI:SS') "P_Timestamp",
to_char(po.stime ,'DD-MON-YYYY HH24:MI:SS') "STIME",
decode(sign(po.stime-p_timestamp),0,'SAME','*DIFFER*') X
from sys.obj$ do, sys.dependency$ d, sys.obj$ po
where P_OBJ#=po.obj#(+) and D_OBJ#=do.obj#
and do.status=1 /*dependent is valid*/
and po.status=1 /*parent is valid*/
and po.stime!=p_timestamp /*parent timestamp not match*/
order by 2,1;
**
I hope this helps someone who may be having this issue.
ORA-04068 возможно самое неприятное из существующих в Oracle исключений. В последних версиях сделано довольно много, для снижения частоты его возникновения, но к сожалению, неизбежно при перекомпиляции stateful пакетов оно неизбежно. Итак, посмотрим, что это такое и как с ним жить:
Создаем stateful package:
create or replace package p_test_dependant is function getValue return varchar2; procedure setValue(pVALUE in varchar2); end; / create or replace package body p_test_dependant is g_value varchar2(4000); function getValue return varchar2 is begin return g_value; end; procedure setValue(pVALUE in varchar2) is begin g_value := pVALUE; end; end;
Создаем второй пакет, из которого будем работать с первым:
create or replace package p_test_main is procedure work(pVALUE in varchar2); end; / create or replace package body p_test_main is procedure work(pVALUE in varchar2) is begin p_test_dependant.setValue(pVALUE); dbms_output.put_line(p_test_dependant.getValue); exception when others then dbms_output.put_line(SQLERRM); end; end;
Запустим:
begin p_test_main.work('AA'); end;
Все работает. Из второй сессии перекомпилируем p_test_dependant:
alter package p_test_dependant compile
Еще раз запустим:
Запустим:
begin p_test_main.work('AA'); end; --ORA-06508: PL/SQL: could not find program unit being called
Ни повторные запуски, ни перекомпиляция p_test_main не помогут устранить эту ошибку. Она так и будет возникать, пока мы не начнем новую сессию. Повторный запуск из блока исключений не решает эту проблему:
create or replace package p_test_main is procedure work(pVALUE in varchar2); end; / create or replace package body p_test_main is ex_state_reset exception; PRAGMA EXCEPTION_INIT(ex_state_reset, -6508); procedure work(pVALUE in varchar2) is begin p_test_dependant.setValue(pVALUE); dbms_output.put_line(p_test_dependant.getValue); exception when ex_state_reset then p_test_dependant.setValue(pVALUE); dbms_output.put_line(p_test_dependant.getValue); when others then dbms_output.put_line(SQLERRM); end; end;
begin p_test_main.work('AA'); end; /*ORA-04068: existing state of packages has been discarded ORA-04061: existing state of package "TEST.P_TEST_DEPENDANT" has been invalidated ORA-04065: not executed, altered or dropped package "TEST.P_TEST_DEPENDANT" ORA-06508: PL/SQL: could not find program unit being called: "TEST.P_TEST_DEPENDANT" ORA-06512: at "TEST.P_TEST_MAIN", line 11 ORA-04061: existing state of package "TEST.P_TEST_DEPENDANT" has been invalidated ORA-04065: not executed, altered or dropped package "TEST.P_TEST_DEPENDANT" ORA-06508: PL/SQL: could not find program unit being called: "TEST.P_TEST_DEPENDANT" ORA-06512: at line 2*/
Но повторный вызов отработает уже без ошибок, как и в случае с неперехваченным исключением. И к сожалению, других вариантов нет. Как утверждает asktom:
The issue here is the test 3 doesn’t raise the ORA-4068 back to the client. This is necessary to reset the package state. As stated in MOS note 1161225.1:
Subsequent attempts to call the package will either succeed if the package was successfully recompiled, or raise the underlying error if it was not. Error messages further down the error stack from the ORA_4068 indicate what prompted the recompilation to occur and may indicate whether a subsequent call will fail. An important proviso is that the ORA-4068 must be unhandled on exit from the subprogram in order for this solution to work. It is only when an unhandled ORA-4068 is returned by PL/SQL to ORACLE that the needed deinstantiations take place
It’s only when you leave ORA-4068 unhandled that Oracle resets the package state and validates the package.
«Exit from subprogram» в данном случае, увы, переход в хост-среду, а не выход из текущего или родительского pl/sql блока. Таким образом, для обработки этого исключения нужен внешний клиент.
P.S. При попытке перекомпилировать зависимый пакет в обработчике исключений возникает ORA-600.
Примечание:
1. Для поиска других кодов неисправностей воспользуйтесь поисковой строкой. Введите свой код неисправности в поле поиска и отправьте поиск.
2. Информация, содержащаяся на этом сайте, представлена исключительно в информационных целях. Мы не несем ответственности за любые действия, предпринятые вами в отношении вашего автомобиля. Если у вас есть какие-либо сомнения относительно ремонта вашего автомобиля, обратитесь к своему техническому специалисту.
Поиск всех кодов ошибок на одном сайте. Расшифровка Кодов ошибок obd2 по маркам автомобилей.
Знайдено кодов ошибок: 1
Код ошибки:
Значение ошибки
Похожие причины кодов
Коды ошибок по маркам автомобилей
Примечание:
1. Для поиска других кодов неисправностей воспользуйтесь поисковой строкой. Введите свой код неисправности в поле поиска и отправьте поиск.
2. Информация, содержащаяся на этом сайте, представлена исключительно в информационных целях. Мы не несем ответственности за любые действия, предпринятые вами в отношении вашего автомобиля. Если у вас есть какие-либо сомнения относительно ремонта вашего автомобиля, обратитесь к своему техническому специалисту.
Copyright © 2021. Коды ошибок OBD-II с расшифровкой на русском языке — возможные причины, описание и варианты по устранению ошибок.