오라클 커넥션은 말 그대로 병렬 트랜잭션을 지원하지 않습니다. 해당 오류는 트랜잭션을 병렬로 설정하여 발생합니다. 다음은 병렬 트랜잭션 오류가 발생하는 예제 자료입니다. (OracleConnection does not support parallel transactions)
오류 발생 경위는 다음과 같습니다.
- 커넥션에서 트랜잭션을 시작합니다. => IDbTransaction tx = con.BeginTransaction();
- 커맨드에 트랜잭션을 할당합니다. => cmd.Transaction = (OracleTransaction)tx;
- 커맨드에 병렬로 트랜잭션을 할당합니다. => cmd.Transaction = con.BeginTransaction();
int i;
using (IDbConnection con = new OracleConnection("User Id=userName;Password=password;Data Source=dataSourceName"))
{
con.Open();
using (IDbCommand cmd = con.CreateCommand())
{
using (IDbTransaction tx = con.BeginTransaction())
{
cmd.Transaction = (OracleTransaction)tx;
cmd.CommandText = "INSERT INTO table_name (column_name) VALUES (:param)";
cmd.Parameters.Clear();
((OracleParameterCollection)cmd.Parameters).AddWithValue("param", "value");
i = cmd.ExecuteNonQuery();
//병렬 트랜잭션
cmd.Transaction = con.BeginTransaction();
cmd.Transaction.Commit();
}
}
}
해당 오류가 발생하면 커맨드에 트랜잭션 할당이 되는 부분을 점검해 주세요. 커밋 및 롤백 이전에 병렬 할당 부분이 있을 것입니다.