# Problem #

Given is a SQL Server connected to an ORACLE Instance as a Linked Server. It’s using the Oracle Client OLEDB Provider. When doing an update in a transaction on a table having a CTXSYS.CONTEXT Text Index the DTC Connection aborts after approx. 10 Min with `Error: 8522, Severity: 18, State: 1` on the commit. When we remove the CONTEXT index we don't have this Problem anymore.

Is this a bug in OraOLEDB or can we do something to fix this issue, while keeping the indexes?

## Setup ##
### On ORACLE ###
We use an ORACLE 11g 11.2.0.2.0 

Create this table for this test.

    CREATE TABLE docs (id NUMBER PRIMARY KEY, text VARCHAR2(200));
    INSERT INTO docs VALUES(1, '<HTML>California is a state in the US.</HTML>');
    INSERT INTO docs VALUES(2, '<HTML>Paris is a city in France.</HTML>');
    INSERT INTO docs VALUES(3, '<HTML>France is in Europe.</HTML>');
    INSERT INTO docs VALUES(4, '<HTML>Los Angeles is a city in California.</HTML>');
    INSERT INTO docs VALUES(5, '<HTML>Mexico City is big.</HTML>');
    COMMIT;
    CREATE INDEX idx_docs ON docs(text)
        INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS
        ('FILTER CTXSYS.NULL_FILTER SECTION GROUP CTXSYS.HTML_SECTION_GROUP');

### On MSSQL ###
We use a SQL Server 2012 Express and Developer Edition both produce the same error. 
Setup a linked server to above Oracle Server with Oracle Provider for OLE DB (OraOLEDB)  Release 12.1.0.1.0 Production.

## Reproduce ##

### Working Update ###
This updates work:

    set xact_abort off;
    update DBLINK..REMOTE_USER.DOCS set text='<HTML>Mexico City is massive.</HTML>' where id = 5;

    (1 row(s) affected)

This Update Statement produces the error, after the DTC seems to run in a timeout.

    set xact_abort on;
    begin transaction t1
    update DBLINK..REMOTE_USER.DOCS set text='<HTML>Mexico City is huge.</HTML>' where id = 5;
    commit transaction t1;

    (1 row(s) affected)
    Msg 8522, Level 18, State 1, Line 4
    Microsoft Distributed Transaction Coordinator (MS DTC) has stopped this transaction.


### Trace ###
This the end of the trace of a successful update:
![successful update trace][1]

This is the end of the trace of the update that runs into the timeout:
![broken update trace][2]


  [1]: https://i.sstatic.net/lFdp8.png
  [2]: https://i.sstatic.net/2BNHq.png