1. You don't have to use Oracle for your automated testing, you can use an in memory DB as you suggest.
But... this assumes that you are not using any Oracle specific syntax or data types in your schema, in which case you're stuck with Oracle. Although it would be worth checking to see if your Oracle db has an in memory mode that you could use for local testing and CI.
2. Pass. Refer to the DBUnit documentation to see which is suitable for your purposes.
3. My experience with DBUnit has required that the database already be created with the correct schema. Then for your tests you have an xml file that describes the content you want loaded into it.
It's always a good idea to have tests in place that verify the correct integration with the actual database you're going to be using. As these would be Integration Tests you can expect them to be slow and a bit of a pest to setup, i.e. having to make a real Oracle db available. Due to this I would keep the number of tests relatively small, just enough to give you confidence that it's ok. However for your application Unit Tests, of which there would be much more, I would usually swap out the DAO classes with fakes either with a Mocking framework such as
Mockito or even just write a test double version that is backed by a Map. That way your Unit Tests are fast and require no external resources.