This is not possible, because just accessing APEX makes APEX write allot of stuff to the database, like session information for example. In a read only database this is not possible.
The only workaround is creating a 2nd non-readonly database where you store just your APEX application, and where you use database links for all your tables/packages/views/etc to your read only database.
Thanks Joni, but have two database is a big change now -- as I have to see the way to do it, etc.
I am looking for an interim solution to stop people to add/modify.... not sure what to do!
I managed to do the job by changing only the related tablespace (USER) -- to read-only.