У пользователя всегда будут права на удаление принадлежащих ему объектов. Вы не можете предотвратить это, отменив привилегии.
Поскольку вы смотрите на ужесточение мер безопасности, создание нового пользователя и предоставление ему любых привилегий для манипулирования данными является правильным ответом. Единственные люди, которые должны войти в производственную базу данных как пользователь, владеющий объектами приложения, - это администраторы баз данных, и только тогда, когда они находятся в процессе развертывания изменений в схеме. Все остальные должны войти в базу данных как пользователи, отличные от владельца схемы.
При этом, если правильное решение - это больше работы, чем вы готовы предпринять прямо сейчас, потенциальным временным ограничением будет создание в базе данных триггера DDL, который выдает исключение, если DROP
выдается против объект в указанной схеме. Это менее безопасно, чем правильное решение. Вы можете что-то пропустить при реализации триггера, вы или кто-то другой можете сбросить или отключить триггер и забыть повторно включить его и т. Д. И это значительно усложняет создание отчетов по безопасности, поскольку у вас есть нестандартное решение, которое не собирается быть очевидным в различных представлениях словаря данных, связанных с безопасностью, которые могут создавать проблемы для аудиторов.