diff --git a/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb b/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb
index <HASH>..<HASH> 100644
--- a/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb
+++ b/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb
@@ -165,6 +165,14 @@ module ActiveRecord
       def remove_index(table_name, options = {}) #:nodoc:
         index_name = index_name(table_name, options)
         unless index_name_exists?(table_name, index_name, true)
+          # sometimes options can be String or Array with column names
+          options = {} unless options.is_a?(Hash)
+          if options.has_key? :name
+            options_without_column = options.dup
+            options_without_column.delete :column
+            index_name_without_column = index_name(table_name, options_without_column)
+            return index_name_without_column if index_name_exists?(table_name, index_name_without_column, false)
+          end
           raise ArgumentError, "Index name '#{index_name}' on table '#{table_name}' does not exist"
         end
         remove_index!(table_name, index_name)
Use the index name explicitly provided in a migration when reverting

see rails/rails#<I>