diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php
index 0eec4d4d317aeba5190e7827670cdfb696c3f507..1c9b6b9d00bd6c4de560ac07673044371ed231a1 100644
--- a/lib/private/db/mdb2schemamanager.php
+++ b/lib/private/db/mdb2schemamanager.php
@@ -8,8 +8,7 @@
 
 namespace OC\DB;
 
-use Doctrine\DBAL\Platforms\MySqlPlatform;
-use Doctrine\DBAL\Platforms\PostgreSqlPlatform;
+use Doctrine\DBAL\Platforms\OraclePlatform;
 use Doctrine\DBAL\Platforms\SqlitePlatform;
 
 class MDB2SchemaManager {
@@ -54,6 +53,20 @@ class MDB2SchemaManager {
 		return $this->executeSchemaChange($toSchema);
 	}
 
+	/**
+	 * @return \OC\DB\Migrator
+	 */
+	protected function getMigrator() {
+		$platform = $this->conn->getDatabasePlatform();
+		if ($platform instanceof SqlitePlatform) {
+			return new SQLiteMigrator($this->conn);
+		} else if ($platform instanceof OraclePlatform) {
+			return new OracleMigrator($this->conn);
+		} else {
+			return new Migrator($this->conn);
+		}
+	}
+
 	/**
 	 * update the database scheme
 	 * @param string $file file to read structure from
@@ -65,24 +78,12 @@ class MDB2SchemaManager {
 		$platform = $this->conn->getDatabasePlatform();
 		$schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $platform);
 		$toSchema = $schemaReader->loadSchemaFromFile($file);
-		if ($platform instanceof SqlitePlatform) {
-			$check = true;
-			$migrator = new SQLiteMigrator($this->conn);
-		} else if ($platform instanceof MySqlPlatform or $platform instanceof PostgreSqlPlatform) {
-			$check = true;
-			$migrator = new Migrator($this->conn);
-		} else {
-			// dont do the upgrade check for oracle
-			$check = false;
-			$migrator = new Migrator($this->conn);
-		}
+		$migrator = $this->getMigrator();
 
 		if ($generateSql) {
 			return $migrator->generateChangeScript($toSchema);
 		} else {
-			if ($check) {
-				$migrator->checkMigrate($toSchema);
-			}
+			$migrator->checkMigrate($toSchema);
 			$migrator->migrate($toSchema);
 			return true;
 		}
diff --git a/lib/private/db/migrator.php b/lib/private/db/migrator.php
index 917f92f64b6e733e1d3d8d95f5b47e5655b934de..5dd7735dfc60812a01b88d0dadeb5536b552eecf 100644
--- a/lib/private/db/migrator.php
+++ b/lib/private/db/migrator.php
@@ -144,16 +144,7 @@ class Migrator {
 		}
 
 		$comparator = new Comparator();
-		$schemaDiff = $comparator->compare($sourceSchema, $targetSchema);
-
-		foreach ($schemaDiff->changedTables as $tableDiff) {
-			$tableDiff->name = $this->connection->quoteIdentifier($tableDiff->name);
-			foreach ($tableDiff->changedColumns as $column) {
-				$column->oldColumnName = $this->connection->quoteIdentifier($column->oldColumnName);
-			}
-		}
-
-		return $schemaDiff;
+		return $comparator->compare($sourceSchema, $targetSchema);
 	}
 
 	/**
diff --git a/lib/private/db/oraclemigrator.php b/lib/private/db/oraclemigrator.php
new file mode 100644
index 0000000000000000000000000000000000000000..5494bcbac3056a22848d5dbccec749cb23b6dd1f
--- /dev/null
+++ b/lib/private/db/oraclemigrator.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\DB;
+
+use Doctrine\DBAL\Schema\Schema;
+
+class OracleMigrator extends Migrator {
+	/**
+	 * @param \Doctrine\DBAL\Schema\Schema $targetSchema
+	 * @throws \OC\DB\MigrationException
+	 *
+	 * Migration testing is skipped for oracle
+	 */
+	public function checkMigrate(Schema $targetSchema) {}
+
+	/**
+	 * @param Schema $targetSchema
+	 * @param \Doctrine\DBAL\Connection $connection
+	 * @return \Doctrine\DBAL\Schema\SchemaDiff
+	 */
+	protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) {
+		$schemaDiff = parent::getDiff($targetSchema, $connection);
+
+		// oracle forces us to quote the identifiers
+		foreach ($schemaDiff->changedTables as $tableDiff) {
+			$tableDiff->name = $this->connection->quoteIdentifier($tableDiff->name);
+			foreach ($tableDiff->changedColumns as $column) {
+				$column->oldColumnName = $this->connection->quoteIdentifier($column->oldColumnName);
+			}
+		}
+
+		return $schemaDiff;
+	}
+}