OBIEE support cancel on all (or all the major ones) sources. It calls the appropriate cancellation method for each product. For example, for DB2 it call SQLCancel(). For Oracle it call OCIBreak().
The only automated control OBIEE has for cancelling request queries is via the Admin tools' Permissions > Query Limits 'Max rows' and 'Max Time' options. Once either of these limits has been reached, OBIS will send a cancel call to the source database. A user may also explicitly cancel a running request as well. Whether or not the cancel is effective on the database is very much a timing issue. For example, if the cancel call is received while the request is in a fetch state, then most databases will ignore it, since it would typically take longer to back out the transaction and cancel, then to allow it to complete.
And, whether the cancel call is received by the database in time to effectively cancel the request depends on several factors as well, like the complexity of the request, and the speed of the OBIS server and / or the database server. For example, it does take time for OBIS to act on a request that has exceeded a repository-defined query limit. During that time, the database is still processing the request. Pending the factors mentioned earlier, the request may have passed the point where the database sees cancellation as a viable option."
Additionally, when a user executes a cancel command in a Presentation Server session a cancel request is sent to the BI Server, which then sends the appropriate cancel call to the source (OCIBreak for Oracle).