Cancel on future will not terminate the Oracle query. Even worse, Completablefuture's cancel simply causes a CancellationException making it complete exceptionally. This will not stop the submitted task, or even try to interrupt it.
From the docs:
CompletableFuture.cancel(boolean mayInterruptIfRunning):
If not already completed, completes this CompletableFuture with a CancellationException. Dependent CompletableFutures that have not already completed will also complete exceptionally, with a CompletionException caused by this CancellationException.
mayInterruptIfRunning - this value has no effect in this implementation because interrupts are not used to control processing.
You could set a timeout on the db connection for read with OracleConnection.CONNECTION_PROPERTY_THIN_READ_TIMEOUT on your connection (Setting Network Timeout for JDBC connection). This does not kill Oracle's thread, but times out the statement read.
Or use Statement.cancel to try cancel running statement in the database. (When I call PreparedStatement.cancel() in a JDBC application, does it actually kill it in an Oracle database?). This is intended to kill database execution thread, but the db might not always honor it.
Beyond this I would suggest using a small FixedThreadPool executor with your CompletableFutures to control the number of parallel database threads.
EDIT
For doing the same on a hibernate session use Session#cancelQuery()