I found similar issues with the OracleEnhanced driver. I fixed things up like this:
module ActiveRecord module ConnectionAdapters class OracleEnhancedAdapter def create_table(name, options = {}) #:nodoc: super(name, options) seq_name = options[:sequence_name] || "#{name}_seq" execute "CREATE SEQUENCE #{seq_name} START WITH 1 INCREMENT BY 1 NOCACHE ORDER NOCYCLE" unless options[:id] == false end end module SchemaStatements def add_index(table_name, column_name, options = {}) column_names = Array(column_name) index_name = index_name(table_name, :column => column_names) if Hash === options # legacy support, since this param was a string # add support for Oracle bitmap indexes index_type = options[:unique] ? "UNIQUE" : options[:bitmap] ? "BITMAP" : "" index_name = options[:name] || index_name else index_type = options end quoted_column_names = column_names.map { |e| quote_column_name(e) }.join(", ") execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)} (#{quoted_column_names})" end end end end