Во-первых, вам нужно немного отладить здесь. Подключитесь к каждому экземпляру того же пользователя, что и источник данных вашего Geoserver, и запустите файл sql. Из тех же соединений (в каждом случае) вы также должны убедиться, что в представлении метаданных пользователя (user_sdo_geom_metadata) есть запись для таблицы, а в таблице есть пространственный индекс, владельцем которого является тот же пользователь, что и тот, который вы подключаетесь.
Кроме того, ваш запрос (select ... from 'vtable') имеет столбец shape, который является буфером столбца lyv_chantier.shape. Sdo_filter в этом sql ожидает пространственный индекс для vtable.shape, который не может существовать. Вам следует попробовать использовать другой псевдоним (например, buf_shape) и sdo_filter (buf_shape, ...) - чтобы увидеть, не срабатывает ли sql в обоих случаях, как должно.
Я сейчас немного тороплюсь, поэтому мои инструкции резюмированы. Если хотите, выполните эту отладку и опубликуйте результаты. Затем мы можем go в деталях.
РЕДАКТИРОВАТЬ: Судя по вашим усилиям, я бы сказал, что самый простой подход: 1) добавить второй столбец геометрии в lyv_chantier (например, buf_shp). 2) обновить lyv_chantier set buf_shp = sdo_geom.sdo_buffer (shape, ...). 3) вставьте в user_sdo_geom_metadata значения (lyv_chantier, buf_shp, ...). 4) создайте пространственный индекс для столбца buf_shp. Возможно, вам придется подумать о триггере для обновления buf_shp при изменении формы ...
Это очень практичный подход, но вы не предоставляете никакой информации о вашем случае (какая версия oracle, сколько строк содержит table, как он используется, почему вы хотите использовать sdo_buffer, et c), так что это моя рекомендация.
Кроме того, поскольку вы, скорее всего, используете представление sql как слой в Geoserver (об этом вы тоже ничего не говорите), вы также можете рассмотреть возможность использования чистой функциональности GS для достижения своей цели.
В конце концов, без описания вашей цели трудно предоставить что-то более индивидуальное.