diff --git a/core/command/db/converttype.php b/core/command/db/converttype.php
index 8d1560b0511b3446c6fce8bce615c14f699173f4..9d03b705d12734cb413430c9a58e09cf2d2613a4 100644
--- a/core/command/db/converttype.php
+++ b/core/command/db/converttype.php
@@ -228,8 +228,9 @@ class ConvertType extends Command {
 	}
 
 	protected function getTables(Connection $db) {
+		$filterExpression = '/^' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
 		$db->getConfiguration()->
-			setFilterSchemaAssetsExpression('/^'.$this->config->getSystemValue('dbtableprefix', 'oc_').'/');
+			setFilterSchemaAssetsExpression($filterExpression);
 		return $db->getSchemaManager()->listTableNames();
 	}
 
diff --git a/lib/private/db/connection.php b/lib/private/db/connection.php
index f2fcd8730afa0665f756abdf5291823d6a0fb534..53935c1e1ed9f9c2d7652f9098722a6d862b432c 100644
--- a/lib/private/db/connection.php
+++ b/lib/private/db/connection.php
@@ -34,6 +34,13 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
 		}
 	}
 
+	/**
+	 * @return string
+	 */
+	public function getPrefix() {
+		return $this->tablePrefix;
+	}
+
 	/**
 	 * Initializes a new instance of the Connection class.
 	 *
diff --git a/lib/private/db/mdb2schemawriter.php b/lib/private/db/mdb2schemawriter.php
index a42cd86ba5434b2a7bcee6f9aa0ae60a2a02c577..1fb71ab398bf217f6b372f9aa9a3693182ef0c7a 100644
--- a/lib/private/db/mdb2schemawriter.php
+++ b/lib/private/db/mdb2schemawriter.php
@@ -22,8 +22,13 @@ class OC_DB_MDB2SchemaWriter {
 		$xml->addChild('overwrite', 'false');
 		$xml->addChild('charset', 'utf8');
 
-		$conn->getConfiguration()->
-			setFilterSchemaAssetsExpression('/^' . $config->getSystemValue('dbtableprefix', 'oc_') . '/');
+		// FIX ME: bloody work around
+		if ($config->getSystemValue('dbtype', 'sqlite') === 'oci') {
+			$filterExpression = '/^"' . preg_quote($conn->getPrefix()) . '/';
+		} else {
+			$filterExpression = '/^' . preg_quote($conn->getPrefix()) . '/';
+		}
+		$conn->getConfiguration()->setFilterSchemaAssetsExpression($filterExpression);
 
 		foreach ($conn->getSchemaManager()->listTables() as $table) {
 			self::saveTable($table, $xml->addChild('table'));
diff --git a/lib/private/db/migrator.php b/lib/private/db/migrator.php
index 8ccc02e36a5c19ab63ead458f6b1dfcdb531c527..fcf5aae0258085401e711bafcaf15664da50778b 100644
--- a/lib/private/db/migrator.php
+++ b/lib/private/db/migrator.php
@@ -75,9 +75,9 @@ class Migrator {
 		 * @var \Doctrine\DBAL\Schema\Table[] $tables
 		 */
 		$tables = $targetSchema->getTables();
-
+		$filterExpression = $this->getFilterExpression();
 		$this->connection->getConfiguration()->
-			setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
+			setFilterSchemaAssetsExpression($filterExpression);
 		$existingTables = $this->connection->getSchemaManager()->listTableNames();
 
 		foreach ($tables as $table) {
@@ -161,8 +161,9 @@ class Migrator {
 	}
 
 	protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) {
-		$connection->getConfiguration()->
-			setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
+		$filterExpression = $this->getFilterExpression();
+		$this->connection->getConfiguration()->
+		setFilterSchemaAssetsExpression($filterExpression);
 		$sourceSchema = $connection->getSchemaManager()->createSchema();
 
 		// remove tables we don't know about
@@ -230,4 +231,8 @@ class Migrator {
 		$script .= PHP_EOL;
 		return $script;
 	}
+
+	protected function getFilterExpression() {
+		return '/^' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
+	}
 }
diff --git a/lib/private/db/oraclemigrator.php b/lib/private/db/oraclemigrator.php
index b80295cbd60a41f2a2e91be73e28fb69ffe75917..9ae350238381546f84a79f945efbffcf2efa1471 100644
--- a/lib/private/db/oraclemigrator.php
+++ b/lib/private/db/oraclemigrator.php
@@ -51,4 +51,9 @@ class OracleMigrator extends NoCheckMigrator {
 		$script .= PHP_EOL;
 		return $script;
 	}
+
+	protected function getFilterExpression() {
+		return '/^"' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
+	}
+
 }
diff --git a/lib/private/db/pgsqltools.php b/lib/private/db/pgsqltools.php
index f3204d4c7b656681192edcc6f9fe6a8082b8611d..9336917cc5c6f025a1efcec8e85b66e558112d14 100644
--- a/lib/private/db/pgsqltools.php
+++ b/lib/private/db/pgsqltools.php
@@ -32,9 +32,9 @@ class PgSqlTools {
 	* @return null
 	*/
 	public function resynchronizeDatabaseSequences(Connection $conn) {
+		$filterExpression = '/^' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
 		$databaseName = $conn->getDatabase();
-		$conn->getConfiguration()->
-			setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
+		$conn->getConfiguration()->setFilterSchemaAssetsExpression($filterExpression);
 
 		foreach ($conn->getSchemaManager()->listSequences() as $sequence) {
 			$sequenceName = $sequence->getName();