Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 синоним через дблинк  [new]
debosh_
Guest
Имеется странное поведение сиквел | плсиквел кода.
дано - mytable - синоним на синоним в другой базе, который в свою очередь ссылается на таблицу(вьюху) в третьей.
Выполняем:

sql> declare i number;
  2  begin
  3  select count(*) into i
  4  from mytable;
  5  end;
  6  /
select count(*) into i
*
ERROR at line 3:
ORA-06550: line 3, column 1:
PL/SQL: ORA-00980: synonym translation is no longer valid
ORA-06550: line 3, column 1:
PL/SQL: SQL Statement ignored


Но, в той же самой сессии!!!

sql> select count(*) from mytable;

  COUNT(*)
----------
       133

sql> 


WTF? в какую сторону рыть?
ps. выполняем хоть на 9.2, хоть на 11.2 - результат одинаковый.
Таргет базы - 10.х (это куда линки ведут)
pps. обойти не проблема, интересна причина именно такого поведения. Номера нот приветствуются :)
30 ноя 12, 13:19    [13555448]     Ответить | Цитировать Сообщить модератору
 Re: синоним через дблинк  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
debosh_
Имеется странное поведение сиквел | плсиквел кода.
дано - mytable - синоним на синоним в другой базе, который в свою очередь ссылается на таблицу(вьюху) в третьей.
Выполняем:

sql> declare i number;
  2  begin
  3  select count(*) into i
  4  from mytable;
  5  end;
  6  /
select count(*) into i
*
ERROR at line 3:
ORA-06550: line 3, column 1:
PL/SQL: ORA-00980: synonym translation is no longer valid
ORA-06550: line 3, column 1:
PL/SQL: SQL Statement ignored


Но, в той же самой сессии!!!

sql> select count(*) from mytable;

  COUNT(*)
----------
       133

sql> 


WTF? в какую сторону рыть?
ps. выполняем хоть на 9.2, хоть на 11.2 - результат одинаковый.
Таргет базы - 10.х (это куда линки ведут)
pps. обойти не проблема, интересна причина именно такого поведения. Номера нот приветствуются :)

для начала - в топ популярных №4
30 ноя 12, 13:26    [13555528]     Ответить | Цитировать Сообщить модератору
 Re: синоним через дблинк  [new]
debosh_
Guest
orawish,

десятки чужие.
Имею доступ только к первой - под юзьверем дблинка.
На ней плсиквел (анонимный блок) выполняется нормально.
30 ноя 12, 13:41    [13555674]     Ответить | Цитировать Сообщить модератору
 Re: синоним через дблинк  [new]
Анти-ТОП
Guest
orawish
для начала - в топ популярных №4
Здесь нет именованного PL/SQL.
30 ноя 12, 13:59    [13555814]     Ответить | Цитировать Сообщить модератору
 Re: синоним через дблинк  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
debosh_
Имею доступ к первой...
На ней плсиквел (анонимный блок) выполняется нормально.

... состыкуйте этот пост со своим первым, и проставьте вешки - что/где ...
30 ноя 12, 14:07    [13555890]     Ответить | Цитировать Сообщить модератору
 Re: синоним через дблинк  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
http://practical-sql-tuning.blogspot.com/2012/03/struggling-with-ora-00980.html
Struggling with ORA-00980
If you are struggling with ORA-00980, and all things seem to be ok. Even you can use synonym with dblink in ordinary sql. But in pl/sql it raises ORA-00980.
As last resort you can try to check global name for databases from both side of dblink. They both must not match each other.
Here is query to check global name: select * from global_name;

?
30 ноя 12, 14:13    [13555936]     Ответить | Цитировать Сообщить модератору
 Re: синоним через дблинк  [new]
debosh_
Guest
Viewer,

9i/11.2(№0) -> 10(№1)->10(№2)

данные лежат на 10(№2)
логинимся на №0, выполняем блок - имеем ошибку. Сиквел выполняется нормально.
логинимся на №1 , - все работает, и сиквел и процедурки/анонимки.
на №2 не логинимся - не умеем.
30 ноя 12, 14:15    [13555948]     Ответить | Цитировать Сообщить модератору
 Re: синоним через дблинк  [new]
debosh_
Guest
Viewer
http://practical-sql-tuning.blogspot.com/2012/03/struggling-with-ora-00980.html
Struggling with ORA-00980
If you are struggling with ORA-00980, and all things seem to be ok. Even you can use synonym with dblink in ordinary sql. But in pl/sql it raises ORA-00980.
As last resort you can try to check global name for databases from both side of dblink. They both must not match each other.
Here is query to check global name: select * from global_name;

?


Все три разные.
30 ноя 12, 14:20    [13555989]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить