powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-02070 При использовании sys_context()
10 сообщений из 10, страница 1 из 1
ORA-02070 При использовании sys_context()
    #32877294
use-se
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORACLE 9.2.0.5
Предыстория:
Перенес схему с сервера 9.2.0.6 на сервер с 9.2.0.5 для тестирования.
При создании представления (view) происходит ошибка: "ORA-02070 база
данных не поддерживает в этом контексте". Само представление 96 строк
приведу схематический вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create view v_test as
  with s_all as (
    select *
      from t_test
      where aaa=sys_context('c_name','var')  -- <<< здесь проблема
             ),
    -- здесь идут несколько выборок из s_all
    ....
    -- и снова повторяется выборка с использованием контекста причем того же и из той же таблицы
  s_others as (
    select *
      from t_test
      where aaa=sys_context('c_name','var')  -- <<< здесь проблемы НЕТ
             ),
  -- далее окончательный селест
так вот Оракл на отрез отказывается СОЗДАВАТЬ вьюху.
На рабочей базе работает без проблем
Далее меняю в строке
Код: plaintext
      where aaa=sys_context('c_name','var')  -- <<< здесь проблема
на
Код: plaintext
      where aaa= 115   -- <<< здесь проблема исчезает
заметьте не везде, а только в этой строке и все работает.

Я не МОГУ ПОНЯТЬ в чем проблема.

ниже описание ошибки из документации.
авторORA-02070 database stringstring does not support string in this context

Cause: The remote database does not support the named capability in the context in which it is used.


Action: Simplify the SQL statement.

поиск по форуму дал вот это
...
Рейтинг: 0 / 0
ORA-02070 При использовании sys_context()
    #32878590
use-se
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня смутное ощущение, что проблема в чем то другом.
...
Рейтинг: 0 / 0
ORA-02070 При использовании sys_context()
    #32878784
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bug. Introduced in 9.2.0.5 as a result of a fix of another bug. Fixed in 9.2.0.6. Workaround - patch


SY.
...
Рейтинг: 0 / 0
ORA-02070 При использовании sys_context()
    #32878814
use-se
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен, что проще было бы пропачить до 9.2.0.6. Но изменить номер версии сервера это проблема уже не столько техническая сколько организационная особенно на чужом сервере.

Промежуточный итог
----------------------
1. Это баг версии 9.2.0.5, исправленный в 9.2.0.6 (Вероятность ~ 80%)
2. Не явная ошибка, связанная с неправильными действиями по переносу схемы или не правильным программированием (читай - кривые руки ) (Вероятность ~ 20%)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ORA-02070 При использовании sys_context()
    #39271837
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю, чего там пофиксили 10 лет назад, но на 11.2.0.3 всё продолжается
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DROP TABLE d;

     CREATE TABLE d(d NUMBER);

     CREATE OR REPLACE VIEW v_d AS SELECT * FROM d WHERE d>NVL (TO_NUMBER (SYS_CONTEXT ('Ctx', 'base')), 0);

insert into  tbl@link (ID_K)
SELECT v_d;    

ORA-02070: база данных  не поддерживает  в этом контексте
...
Рейтинг: 0 / 0
ORA-02070 При использовании sys_context()
    #39271901
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

тест-кейс не очевидный. Слетает запрос к локальному параметризированному представлению после начала распределённой транзакции?
...
Рейтинг: 0 / 0
ORA-02070 При использовании sys_context()
    #39271910
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerandreymx,

тест-кейс не очевидный. Слетает запрос к локальному параметризированному представлению после начала распределённой транзакции?даже не знаю, что ответить; чего-то я не понимаю
сам запрос из вьюхи работает нормально
а на инсерте валится ошибка
а запрос после ошибки всё равно работает нормально
...
Рейтинг: 0 / 0
ORA-02070 При использовании sys_context()
    #39272014
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

Bug 5208794 где обьясняется что это not a bug since the sys_context function needs to be locally executed.

Пример можно упростить до:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SQL> insert into t@sol11
  2  values(sys_context('userenv','sid'))
  3  /
values(sys_context('userenv','sid'))
       *
ERROR at line 2:
ORA-02070: database  does not support  in this context


SQL> create or replace
  2  function f1(
  3              p_namespace varchar2,
  4              p_parameter varchar2
  5             )
  6  return varchar2
  7  authid current_user
  8  is
  9  begin
 10  return sys_context(p_namespace,p_parameter);
 11  end;
 12  /

Function created.

SQL> insert into t@sol11
  2  values(f1('userenv','sid'))
  3  /

1 row created.

SQL> 



И применительно к твоему примеру:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
SQL> CREATE TABLE d(d NUMBER);

Table created.

SQL> CREATE OR REPLACE VIEW v_d AS SELECT * FROM d WHERE d>NVL (TO_NUMBER (SYS_CONTEXT ('userenv','s
id')), 0);

View created.

SQL> insert into t@sol11
  2  select * from v_d
  3  /
select * from v_d
                *
ERROR at line 2:
ORA-02070: database  does not support  in this context


SQL> CREATE OR REPLACE VIEW v_d AS SELECT * FROM d WHERE d>NVL (TO_NUMBER (F1('userenv','sid')), 0);


View created.

SQL> insert into t@sol11
  2  select * from v_d
  3  /

0 rows created.

SQL> 



SY.
...
Рейтинг: 0 / 0
ORA-02070 При использовании sys_context()
    #39272060
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
контекстами широко пользуемся во вьюхах с 2005-ого года, с 9-ой версии
куча удалёнки, даём друг друг права между БД
но раньше с ошибкой не сталкивались
Правда, и вставку в удаленные таблицы не практикуем, обычно - наоборот.
...
Рейтинг: 0 / 0
ORA-02070 При использовании sys_context()
    #39272064
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxПравда, и вставку в удаленные таблицы не практикуем, обычно - наоборот.

SY.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-02070 При использовании sys_context()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]