Replacing IN condition in Oracle
I'd recommend getting rid of that DISTINCT if possible, they tend to act as "make this subquery a black box to the DB engine" keywords, which doesn't help the query optimiser make good choices.

Try the following, if it works in Oracle (I'm a MS-SQL coder, sorry)

UPDATE orders
SET status = 'ORDERED'
WHERE orders.status = 'PENDING'
    AND EXISTS (
    SELECT 1
    FROM line_items
    INNER JOIN products ON line_items.product_id = products.product_id
    WHERE
        products.product_category = 'COFFEE' AND
        products.product_available_on &lt;= CURRENT_DATE
        AND line_items.orderId = orders.order_id 
);