diff --git a/src/NHibernate.Test/DialectTest/Oracle8iDialectFixture.cs b/src/NHibernate.Test/DialectTest/Oracle8iDialectFixture.cs
index 0691d0fd95..5476c49862 100644
--- a/src/NHibernate.Test/DialectTest/Oracle8iDialectFixture.cs
+++ b/src/NHibernate.Test/DialectTest/Oracle8iDialectFixture.cs
@@ -1,4 +1,4 @@
-using NHibernate.Cfg;
+using NHibernate.Cfg;
 using NHibernate.Dialect;
 using NHibernate.SqlCommand;
 using NHibernate.Util;
@@ -148,5 +148,18 @@ public void CheckUnicodeWithPrefix()
 		}
 
 		#endregion
+		[Test]
+		public void TemporaryTableNameTruncation()
+		{
+			string temporaryTableName = new Oracle8iDialect().GenerateTemporaryTableName(
+				"TABLE_NAME_THAT_EXCEEDS_30_CHARACTERS");
+			Assert.AreEqual(
+				30,
+				temporaryTableName.Length);
+			Assert.AreEqual(
+				"HT_TABLE_NAME_THAT_EXCEEDS_30_",
+				temporaryTableName
+			);
+		}
 	}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate/Dialect/Oracle8iDialect.cs b/src/NHibernate/Dialect/Oracle8iDialect.cs
index 2843db5e58..e49323f3bd 100644
--- a/src/NHibernate/Dialect/Oracle8iDialect.cs
+++ b/src/NHibernate/Dialect/Oracle8iDialect.cs
@@ -529,7 +529,7 @@ public override bool SupportsTemporaryTables
 		public override string GenerateTemporaryTableName(String baseTableName)
 		{
 			string name = base.GenerateTemporaryTableName(baseTableName);
-			return name.Length > 30 ? name.Substring(1, (30) - (1)) : name;
+			return name.Length > 30 ? name.Substring(0, (30) - (1)) : name;
 		}
 
 		/// <inheritdoc />