diff -urpN drupal-6.x-dev-200708201800/modules/system/system.schema drupal-6.x-dev-variable.inc-0.3/modules/system/system.schema
--- drupal-6.x-dev-200708201800/modules/system/system.schema	2007-08-11 22:06:15.000000000 +0800
+++ drupal-6.x-dev-variable.inc-0.3/modules/system/system.schema	2007-08-20 21:28:51.000000000 +0800
@@ -2,6 +2,17 @@
 // $Id: system.schema,v 1.9 2007/08/11 14:06:15 dries Exp $
 
 function system_schema() {
+  // NOTE: "variable" should create before all other tables. This is because
+  // some database drivers, e.g. Oracle and DB2, will require variable_get()
+  // and variable_set() for overcoming some database specific limitations.
+  $schema['variable'] = array(
+    'fields' => array(
+      'name'     => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
+      'value'    => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
+    ),
+    'primary key' => array('name'),
+  );
+
   $schema['batch'] = array(
     'fields' => array(
       'bid'       => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
@@ -186,13 +197,5 @@ function system_schema() {
     'indexes' => array('src' => array('src')),
   );
 
-  $schema['variable'] = array(
-    'fields' => array(
-      'name'     => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
-      'value'    => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
-    ),
-    'primary key' => array('name'),
-  );
-
   return $schema;
 }
