Чтобы использовать последовательность для генерации идентификаторов, вы обычно создаете ее в схеме, где находится таблица.
Как пользователь приложения пользователя GEM_APP
:
CREATE TABLE my_table (id NUMBER, col1 ...);
CREATE SEQUENCE my_seq;
Сам пользователь приложения (и, например, его хранимые процедуры) может напрямую использовать последовательность:
INSERT INTO my_table (id, col1) VALUES (my_seq.nextval, 'bla');
Однако другим пользователям нужны правильные привилегии. Обычно вы предоставляете права выбора для последовательности тем же пользователям или ролям, которым вы предоставляете права на вставку для таблицы:
GRANT SELECT, INSERT ON my_table TO user_xy;
GRANT SELECT ON my_seq TO user_xy;
Тогда другой пользователь может вставить данные в таблицу, но должен указать схему:
INSERT INTO gem_app.my_table(id, col1) VALUES (gem_app.my_seq.nextval, 'bla');
Вы можете создавать псевдонимы, чтобы скрыть схемы, некоторым людям они нравятся, другим нет, но я бы определенно не рекомендовал использовать синонимы PUBLIC , поскольку их трудно контролировать и создавать всевозможные конфликты пространства имен.