diff --git a/core/modules/system/lib/Drupal/system/Tests/Database/SchemaTest.php b/core/modules/system/lib/Drupal/system/Tests/Database/SchemaTest.php
index dad9552..af604ff 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Database/SchemaTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Database/SchemaTest.php
@@ -89,37 +89,45 @@ function testSchema() {
     $index_exists = Database::getConnection()->schema()->indexExists('test_table2', 'test_field');
     $this->assertTrue($index_exists, 'Index was renamed.');
 
-    // Copy the schema of the table.
-    db_copy_table_schema('test_table2', 'test_table3');
+    // Function db_copy_table_schema is fully supported only by MySQL.
+    // So we need to allow other database drivers pass this test.
+    // See https://drupal.org/node/2056133.
+    $connection_info = Database::getConnectionInfo('default');
+    $is_mysql = (bool) ($connection_info['default']['driver'] == 'mysql');
+
+    if ($is_mysql) {
+      // Copy the schema of the table.
+      db_copy_table_schema('test_table2', 'test_table3');
 
-    // Index should be copied.
-    $index_exists = Database::getConnection()->schema()->indexExists('test_table3', 'test_field');
-    $this->assertTrue($index_exists, 'Index was copied.');
+      // Index should be copied.
+      $index_exists = Database::getConnection()->schema()->indexExists('test_table3', 'test_field');
+      $this->assertTrue($index_exists, 'Index was copied.');
 
-    // Data should still exist on the old table but not on the new one.
-    $count = db_select('test_table2')->countQuery()->execute()->fetchField();
-    $this->assertEqual($count, 1, 'The old table still has its content.');
-    $count = db_select('test_table3')->countQuery()->execute()->fetchField();
-    $this->assertEqual($count, 0, 'The new table has no content.');
+      // Data should still exist on the old table but not on the new one.
+      $count = db_select('test_table2')->countQuery()->execute()->fetchField();
+      $this->assertEqual($count, 1, 'The old table still has its content.');
+      $count = db_select('test_table3')->countQuery()->execute()->fetchField();
+      $this->assertEqual($count, 0, 'The new table has no content.');
 
-    // Ensure that the proper exceptions are thrown for db_copy_table_schema().
-    $fail = FALSE;
-    try {
-      db_copy_table_schema('test_table4', 'test_table5');
-    }
-    catch (SchemaObjectDoesNotExistException $e) {
-      $fail = TRUE;
-    }
-    $this->assertTrue($fail, 'Ensure that db_copy_table_schema() throws an exception when the source table does not exist.');
+      // Ensure that the proper exceptions are thrown for db_copy_table_schema().
+      $fail = FALSE;
+      try {
+        db_copy_table_schema('test_table4', 'test_table5');
+      }
+      catch (SchemaObjectDoesNotExistException $e) {
+        $fail = TRUE;
+      }
+      $this->assertTrue($fail, 'Ensure that db_copy_table_schema() throws an exception when the source table does not exist.');
 
-    $fail = FALSE;
-    try {
-      db_copy_table_schema('test_table2', 'test_table3');
-    }
-    catch (SchemaObjectExistsException $e) {
-      $fail = TRUE;
+      $fail = FALSE;
+      try {
+        db_copy_table_schema('test_table2', 'test_table3');
+      }
+      catch (SchemaObjectExistsException $e) {
+        $fail = TRUE;
+      }
+      $this->assertTrue($fail, 'Ensure that db_copy_table_schema() throws an exception when the destination table already exists.');
     }
-    $this->assertTrue($fail, 'Ensure that db_copy_table_schema() throws an exception when the destination table already exists.');
 
     // We need the default so that we can insert after the rename.
     db_field_set_default('test_table2', 'test_field', 0);
@@ -162,6 +170,7 @@ function testSchema() {
       'description' => 'Schema table description.',
       'fields' => array(
         'timestamp'  => array(
+          'type' => 'timestamp',
           'mysql_type' => 'timestamp',
           'pgsql_type' => 'timestamp',
           'sqlite_type' => 'datetime',
@@ -315,8 +324,12 @@ function testSchemaAddField() {
     }
 
     // Test numeric types.
-    foreach (array(1, 5, 10, 40, 65) as $precision) {
-      foreach (array(0, 2, 10, 30) as $scale) {
+    // Precision range is not the same in different databases:
+    // - MySQL has a range of 1 to 65;
+    // - PgSQL allow up to 1000 digits;
+    // - Oracle limited to 38 digits.
+    foreach (array(1, 5, 10, 38) as $precision) {
+      foreach (array(0, 2, 10, 20) as $scale) {
         if ($precision <= $scale) {
           // Precision must be smaller then scale.
           continue;
