Немного оффтоп:
Обязательно ли нужно выполнять команды DDL из своего кода?На самом деле я думаю, что было бы неплохо разделить администратор БД и его использование.Наша настройка безопасности базы данных Oracle здесь фактически настроена так, что таблицы настраиваются с использованием другого пользователя базы данных (DB_OWNER), нежели тот, на котором запущены команды SELECT, INSERT, DELETE, запускаемые DB_USER.
Это предотвращает случайноеудаление таблиц или изменение схемы, а также позволяет настроить DB_USER таким образом, чтобы были предоставлены только абсолютно необходимые привилегии, что добавляет уровень безопасности.
Полагаю, это зависит от характера вашей службы /приложения, но подумайте о преимуществах создания таблиц внутри кода (и о том, может ли возможная ошибка в коде DDL случайно уничтожить производственные данные).