title: Execute a distributed transaction for an Oracle linked server using SQL Server 2000
body: <p>I'm trying to execute a distributed transaction for a single Oracle linked server using SQL Server 2000, I came up with the following script:</p>
  
  <pre><code>BEGIN DISTRIBUTED TRANSACTION;
    SET XACT_ABORT  off;
    GO
  
    SELECT MAX(DEPTNO)+1,
    FROM [WSF08_CONTA_ORADATA_II]..[SCOTT].DEPT
  
    SET XACT_ABORT  on;
    GO
  
  COMMIT TRANSACTION;
  </code></pre>
  
  <p>As soon as the script is ran I get the following errors followed by SQL Management studio freezing and closing the connection.</p>
  
  <blockquote>
    <p>Msg 7399, Level 16, State 1, Line 3<br>
        The OLE DB provider "OraOLEDB.Oracle" for linked server "WSF08_CONTA_ORADATA_II" reported an error. The provider reported an unexpected catastrophic failure.<br>
        Msg 7303, Level 16, State 1, Line 3
        Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "WSF08_CONTA_ORADATA_II".</p>
  </blockquote>
  
  <p>What is going on?</p>
  
  <p>*P.D: </p>
  
  <ol>
  <li>I can create/update/delete data using regular queries but error shows up when the <code>DISTRIBUTED TRANSACTION</code> clause is involved.</li>
  <li>We recently upgraded or linked servers to Oracle 10g, It is worth to mention that I did not run into issues we were using 9i.</li>
  </ol>