Первый вопрос - используете ли вы оригинальный адаптер ActiveRecord Oracle или адаптер oracle_enhanced (http://github.com/rsim/oracle-enhanced)? Я рекомендую использовать адаптер oracle_enhanced, поскольку я сделал там некоторые улучшения производительности для дампа схемы.
Rails предоставляет два пути для дампа схемы:
rake db:schema:dump
Это создаст файл schema.rb с миграциями Rails для создания схемы. В случае Oracle он будет искать все таблицы в локальной локальной схеме пользователя (пользователь указан в database.yml) и попытается преобразовать типы данных Oracle в типы атрибутов модели Rails. Если у вас есть некоторые типы данных, которые не поддерживаются Rails, вы можете их потерять. Но если вы хотите провести реинжиниринг своего приложения в Rails, тогда это предпочтительный подход. Как я уже сказал, я улучшил производительность адаптера oracle_enhanced для дампа схемы в случае больших данных Oracle (если у вас тысячи таблиц во всех схемах).
rake db:structure:dump
Это создаст файл схемы SQL (например, db / development_structure.sql), который вы можете выполнить в другой базе данных Oracle (это не будет работать в других базах данных). Это может быть более быстрый способ создания дампа схемы, и он не потеряет специфические типы данных Oracle. Но таким образом вы можете столкнуться с проблемами позже, когда будете использовать ActiveRecord с этой базой данных, а затем заметите, что некоторые типы данных обрабатываются неправильно. Поэтому я рекомендую использовать миграцию Rails для поддержки схемы, а не необработанного SQL.
Но если вы хотите использовать Rails с некоторой существующей базой данных Oracle, вам не нужно пересоздавать эту схему - вы можете просто указать database.yml на эту существующую схему базы данных и начать создавать модели ActiveRecord поверх существующих таблиц. В http://blog.rayapps.com/2008/09/26/openworld-unconference-presentation-about-rails-on-oracle/ приведены советы по использованию Rails с устаревшими базами данных Oracle.