AFAIK необходимо сделать объект предоставлений по одному.
Обычно Вы использовали бы сценарий, чтобы сделать это, что-то вроде:
SELECT 'GRANT ALL ON '||table_name||' TO BOB;'
FROM ALL_TABLES
WHERE OWNER = 'ALICE';
И подобный для других объектов дб.
Вы могли поместить пакет в каждую схему, что необходимо выпустить предоставление, от которого пройдет весь вызов каждый оператор GRANT через ВЫПОЛНЕНИЕ НЕПОСРЕДСТВЕННОГО.
, например,
PROCEDURE GRANT_TABLES
IS
BEGIN
FOR tab IN (SELECT table_name
FROM all_tables
WHERE owner = this_user) LOOP
EXECUTE IMMEDIATE 'GRANT SELECT, INSERT, UPDATE, DELETE ON '||tab.table_name||' TO other_user';
END LOOP;
END;
Вы говорите о Рекламной модели - в статье Perforce освещены проблемы с ней - сообщение об изменении ролей строк кода и перемещение работы между ветвями.
Расширение моих взглядов на перечисленные проблемы:
1) Изменение политики строк кода:
Каждая строка кода имеет политику, записанную и формализованную или полностью скрытую в голове разработчика. Он определяет, например:
Модель продвижения проста в использовании, она отображается непосредственно на способ работы без контроля версий. Но когда начинаешь собирать большие команды, становится больно.
Если вы посмотрите на разработку ядра Linux, вы увидите противоречие между рекламной моделью и магистральной моделью: дерево Линуса является рекламным - оно проходит циклы между окном слияния, и период RC / стабилизации. Но Linux-next и -mm возникли, чтобы дать более магистральную линию.
Распределенные SCM / VCS в любом случае несколько отличаются, политики не должны распространяться среди всех разработчиков, потому что каждый разработчик имеет свои собственные деревья и вносит изменения, когда он хочет.
Проекты с открытым исходным кодом страдают от этой проблемы что они могут ' • заставлять людей выполнять тяжелую работу по стабилизации выпуска после ответвления от ствола. Поэтому модель продвижения более важна как способ форсирования усилий по стабилизации, а не просто работа над функциями.
2) Перемещение работы:
Разработчик может работать над функцией, когда политика для линии, над которой он работает изменения только в исправлениях ошибок, теперь ему нужно переключить свою рабочую копию на другую строку кода. Это может быть от простого до чрезвычайно сложного в зависимости от используемой системы SCM. Этой проблемы не возникает, если разработчик работает над транком, поскольку его работа всегда идет в транк. Если разработчик работает в частной или функциональной ветке, то его работа будет касаться только основной ветви (и выпуска) вообще.
Если функция уже отмечена, но задерживается по сравнению с версией, в которой она сейчас находится, вы должны разобраться, как его удалить. Эта проблема все еще существует с моделью багажника, но, возможно, ее решить немного проще - собирать вещи из багажника для выпуска. Здесь помогают функциональные ветви, но они требуют затрат на интеграцию.
Моя проблема с бумагой Perforce заключается в том, что она отвергает рекламную модель, не упоминая главное преимущество - сокращение накладных расходов на слияние. Фактически, в документе ошибочно утверждается, что «основная модель» не накладывает «никаких дополнительных административных накладных расходов» - смехотворное утверждение. Модель «всегда объединять в ствол» означает именно это - у вас есть накладные расходы, связанные с тем, что все должны объединиться. Это бессмысленные накладные расходы, если у вас есть следующая ситуация (которая у нас есть):
a) небольшая команда (от 5 до 7 разработчиков), все на расстоянии крика друг от друга. коммуникация не является проблемой, когда нам нужно создать ветвь
и
б) кодовая база, где на самом деле всегда есть только две основные ветви - производственная ветвь и «следующая вещь в разработке». Может быть, однажды в синюю луну у нас будет 3.
Я думаю, что моя точка зрения - это ситуационная вещь. Сказать «у рекламной модели есть проблемы» - все равно что сказать «никогда не используйте OR / M». Это зависит от вашей среды.
Subversion допускает оба подхода. Багажник - это не необходимость, а условность. Если он у вас есть, некоторые инструменты работают легче (например, инструменты миграции для Git). Если у вас его нет, вам придется делать некоторые вещи вручную, но я не могу придумать что-нибудь, что вы заметите в повседневной работе.
Мы делаем - вроде того. Мы не используем транк, а создаем новую ветку для каждого релиза наших проектов. Эта «помеченная» ветвь затем является основной для каждой версии, и мы вносим исправления ошибок путем объединения изменений в более старые выпуски.
У нас это работает хорошо, но в нашем проекте много подпроектов.
IME, в некоторых средах ствол - хорошее место для обмена исправлений и изменений в / из. То есть все объединяют свои исправления в магистраль, и все объединяют другие исправления из магистрали. Мы обнаружили, что это очень полезно в среде, где большой объем кода совместно используется многими независимыми проектами и где все эти проекты вносят вклад в общий код.
Однако ваша среда может отличаться.
Недавно я начал работу над проектом, который находится в репозитории Subversion. Кто бы ни создавал репозиторий, не придерживался какой-либо конкретной схемы - они просто запихнули все в корень репозитория (без ствола /, без веток / и, конечно, без тегов /). Я хотел создать ветку для работы и несколько тегов для других вещей, но понял, насколько сложно сделать это в репозитории Subversion, который не соответствует правильному макету.