You can use the ROW_NUMBER function to filter out only a subset of the rows, delete them with a single statement, then COMMIT this batch. Then you process the same batch by adjusting the predicates applied to the result of the ROW_NUMBER function.
An alternative is to use NOT LOGGED INITIALLY on the table via the ALTER TABLE statement. However, if you happen to run into a problem during the execution of the DELETE statement or before you run a backup, the table is rendered useless and you have to drop it. The reason is that DB2 cannot guarantee a consistent state for the table if you did a not-logged operation. (Problem = any kind of error in a SQL statement.)