diff --git a/ns/oracleSchema.sql b/ns/oracleSchema.sql
index 7d469b42a23841b5ada8e3e3a6eff659903fae8e..38b2af054ca1fb85897a1c3fe0ac0cf307019761 100644
--- a/ns/oracleSchema.sql
+++ b/ns/oracleSchema.sql
@@ -97,20 +97,11 @@ CREATE INDEX I_seg_metadata_tapesum ON Cns_seg_metadata (vid, s_fileid, segsize,
 CREATE GLOBAL TEMPORARY TABLE Cns_files_exist_tmp
   (tmpFileId NUMBER) ON COMMIT DELETE ROWS;
 
--- Temporary tables to store intermediate data to be passed from/to the stager.
--- We keep the data on commit and truncate it explicitly afterwards as we
--- want to use it over multiple commits (e.g. on bulk multi-file operations).
-CREATE GLOBAL TEMPORARY TABLE SetSegmentsForFilesHelper
-  (reqId VARCHAR2(36),
-   fileId NUMBER, lastModTime NUMBER, copyNo NUMBER, oldCopyNo NUMBER, transfSize NUMBER,
-   comprSize NUMBER, vid VARCHAR2(6), fseq NUMBER, blockId RAW(4), checksumType VARCHAR2(16), checksum NUMBER)
-  ON COMMIT PRESERVE ROWS;
-
-CREATE INDEX I_SetSegsHelper_ReqId ON SetSegmentsForFilesHelper(reqId);
-  
-CREATE GLOBAL TEMPORARY TABLE ResultsLogHelper
-  (reqId VARCHAR2(36),
-   timeinfo NUMBER, ec INTEGER, fileId NUMBER, msg VARCHAR2(2048), params VARCHAR2(4000))
-  ON COMMIT PRESERVE ROWS;
-
-CREATE INDEX I_ResultsLogHelper_ReqId ON ResultsLogHelper(reqId);
+-- Tables to store intermediate data to be passed from/to the stager.
+-- Note that we cannot use temporary tables with distributed transactions.
+CREATE TABLE SetSegmentsForFilesHelper
+  (reqId VARCHAR2(36), fileId NUMBER, lastModTime NUMBER, copyNo NUMBER, oldCopyNo NUMBER, transfSize NUMBER,
+   comprSize NUMBER, vid VARCHAR2(6), fseq NUMBER, blockId RAW(4), checksumType VARCHAR2(16), checksum NUMBER);
+
+CREATE ResultsLogHelper
+  (reqId VARCHAR2(36), timeinfo NUMBER, ec INTEGER, fileId NUMBER, msg VARCHAR2(2048), params VARCHAR2(4000));
diff --git a/upgrades/cns_2.1.12-4_to_2.1.13-0.sql b/upgrades/cns_2.1.12-4_to_2.1.13-0.sql
index 5b498c127108e9d169cd9d3bba997197c9622782..cbd0bb1bfa5123ebe9763181fb7802d15439b04c 100644
--- a/upgrades/cns_2.1.12-4_to_2.1.13-0.sql
+++ b/upgrades/cns_2.1.12-4_to_2.1.13-0.sql
@@ -58,23 +58,15 @@ COMMIT;
 
 /* Schema changes go here */
 /**************************/
--- Temporary tables to store intermediate data to be passed from/to the stager.
--- We keep the data on commit and truncate it explicitly afterwards as we
--- want to use it over multiple commits (e.g. on bulk multi-file operations).
-CREATE GLOBAL TEMPORARY TABLE SetSegmentsForFilesHelper
-  (reqId VARCHAR2(36),
-   fileId NUMBER, lastModTime NUMBER, copyNo NUMBER, oldCopyNo NUMBER, transfSize NUMBER,
-   comprSize NUMBER, vid VARCHAR2(6), fseq NUMBER, blockId RAW(4), checksumType VARCHAR2(16), checksum NUMBER)
-  ON COMMIT PRESERVE ROWS;
 
-CREATE INDEX I_SetSegsHelper_ReqId ON SetSegmentsForFilesHelper(reqId);
-  
-CREATE GLOBAL TEMPORARY TABLE ResultsLogHelper
-  (reqId VARCHAR2(36),
-   timeinfo NUMBER, ec INTEGER, fileId NUMBER, msg VARCHAR2(2048), params VARCHAR2(4000))
-  ON COMMIT PRESERVE ROWS;
+-- Tables to store intermediate data to be passed from/to the stager.
+-- Note that we cannot use temporary tables with distributed transactions.
+CREATE TABLE SetSegmentsForFilesHelper
+  (reqId VARCHAR2(36), fileId NUMBER, lastModTime NUMBER, copyNo NUMBER, oldCopyNo NUMBER, transfSize NUMBER,
+   comprSize NUMBER, vid VARCHAR2(6), fseq NUMBER, blockId RAW(4), checksumType VARCHAR2(16), checksum NUMBER);
 
-CREATE INDEX I_ResultsLogHelper_ReqId ON ResultsLogHelper(reqId);
+CREATE ResultsLogHelper
+  (reqId VARCHAR2(36), timeinfo NUMBER, ec INTEGER, fileId NUMBER, msg VARCHAR2(2048), params VARCHAR2(4000));