Проблема с синонимом

artemisin
Дата: 17.09.2004 12:27:45
Доброго времени суток.
У меня Oracle 8.1.7. Выполнил импорт небольшой схемы А. При проверки выяснил следующие тонкости.
Все объекты вкачались удачно - в том числе и синонимы, ссылающиеся на распологающуюся в той же базе схему Б. Однако при компиляции пакета в схеме А, использующего синоним, происходит ошибка identifier must be declared. Проверяю в SQLNave 4.3 и через свою прикладу. Такое ощущение, будто не находится сисноним в пакете, хотя селект из синонима выполняется удачно.
Viewer
Дата: 17.09.2004 12:38:27
посмотрите как даны права на таблицы, используемые в пакете, возможно они даны через роль, а не напрямую владельцу пакета.
artemisin
Дата: 17.09.2004 16:21:46
Спасибо!
Разобрался. Действительно ползователю не хватало прав.
Viewer
Дата: 17.09.2004 17:31:03
artemisin
Выполнил импорт небольшой схемы А. Все объекты вкачались удачно - в том числе и синонимы, ссылающиеся на распологающуюся в той же базе схему Б.

Похоже вы используете частные синонимы. На мой взгляд использовать их целесообразно лишь в отладочных целях, и то осторожно. Можно получить либо ту же самую ошибку identifier must be declared, если ваша программа будет в дальнейшем работать не от имени владельца схемы (частный синоним в этом случае не будет найден), либо можно нарваться при внедрении что public синоним такой уже существует на одноименную таблицу другой схемы, и нужно переписывать код на другое имя таблицы (или на другое имя синонима для этой таблицы)
softwarer
Дата: 17.09.2004 18:17:41
Viewer
Похоже вы используете частные синонимы. На мой взгляд использовать их целесообразно лишь в отладочных целях, и то осторожно.

Любой синоним - потенциальная проблема, и использовать их надо с умом. Я бы сказал, тут важно продумать концепцию и четко следовать ей.

А найти применение можно. Скажем, когда-то, в Oracle 7, у нас была реализована следующая схема работы: полноправные пользователи получали синоним на таблицу с данными, а прочие - на вьюшку с соответствующе ограниченной выборкой из этой таблицы.
Viewer
Дата: 18.09.2004 10:05:23
softwarer
Любой синоним - потенциальная проблема, и использовать их надо с умом. Я бы сказал, тут важно продумать концепцию и четко следовать ей.

Абсолютно верно. Жаль лишь что иногда продолжают упорно четко следовать неверно выбранной концепции. Месяца 3 назад центральная компания сплавила нам базу специализированного продуктива. Мол пусть у вас поживет полгода-год, пока мы будем осваивать взамен новый продуктив.
Так в этой базе концепция работы с синонимами доведена до абсурда. База практически состоит из одной схемы. C базой работают 270 юзеров (физических объектов они не имеют). Ролей нет. Гранты даны каждому напрямую. Public синонимов нет. У каждого юзера от 300 до 500 частных синонимов на объекты основной схемы. Успокаиват лишь то, что по уверениям базе осталось жить ограниченный срок.
А по поводу проблем при внедрении - мне пришлось на отладочной базе программистов из роли connect убрать привилегию на создание частных синонимов. Обнаружив, что уже есть паблик синонимы на одноименные таблицы другой схемы - некоторые недолго думая создавали свой частный. Приходит время переносить схему в опытно-промышленную эксплуатацию - и здрасте - не могу создать паблики - аналогичные уже есть (а приложение должно работать не под владельцем схемы). И внимая воплям, что отчетность горит и что потом поправят код - исхитряешься как можешь, лишь бы работало.
А применение частным синонимам безусловно найти не только можно, но и нужно. И как вы правильно отметили - четко продуманная концепция, здравый смысл и вмеру жесткая позиция админа помогут избежать большей части потенциальных проблем. :)
use-se
Дата: 20.09.2004 07:35:36
1) Что подразумевается под понятием "Частный синоним"? Not PUBLIC?
2) Практически все (в топике) не рекомендуют использовать синонимы. Я сейчас наоборот пытаюсь развязки все подвесить на синонимы, например, я не уверен, что будет использоваться в качестве источника tab_1, tab_2 или view_1 и т.п., не знаю потому, что другой разработчик еще не определился и т.п. (естественно, структура частично специфицирована) В продуктиве я еще не пробывал подобные решения. Может я не правильно строю логику???
Viewer
Дата: 20.09.2004 08:25:42
use-se
1) Что подразумевается под понятием "Частный синоним"? Not PUBLIC?
2) Практически все (в топике) не рекомендуют использовать синонимы.

Под частным понимается синоним, владельцем которого является любая схема, кроме псевдо юзера PUBLIC. Логику вы строите правильно, неправильно что "Практически все (в топике) не рекомендуют использовать синонимы" - скорее наоборот, не рекомендуется не использовать синонимы :))
Вчитайтесь в топик повнимательнее, речь шла о грамотном использовании частных синонимов :)
Gluk (Kazan)
Дата: 20.09.2004 09:46:55
Зачем плодить грабли ? Лучше я лишний раз явно имя схемы укажу на клиенте чем потом буду с синонимами ...ся.
Вячеслав Любомудров
Дата: 20.09.2004 09:57:56
И когда на этой же базе захотите развернуть дополнительную тестовую инсталляцию - веселья будет полные штаны
На самом деле от веселья не спасут никакие синонимы (скорее еще и добавят)
Как обычно все хорошо в меру
Но я более склоняюсь к мысли, что синонимы - это костыль