1) Create an Agent , call your activity from it . In the activity while doing Obj-Browse , limit the number of records and fetch only those records which are not updated . Process those records at a time . Here you may need to track which all work items are updated . So next time , your Obj-Browse skips the updated work items. You may iterate it till all the work items are updated.
2) Is it not possible to use SQl to update your data ? ( I assume the update logic is not complex)
What you want to perform on the case after opening, whether you want to update only pega properties data or application related properties data, for example if want to update any exposed column data it can also be performed on backend i.e. database side.
You might not require an agent since it is an onetime running of activity. if the records to update is around 1lakh and it is for a period of 1year records to be updated. you can split it into 12 months by providing dates to the activity i.e. update the cases created on between these days.