If your app is indeed read only, and you *can* create views, then that's your best bet. Create a view for each table that fits the Rails conventions. That way, your Rails application will be just like any other.
I don't know much about Oracle, but if you could create the views in a different namespace (schema, etc), then even better, because you get to name the views following the Rails conventions for Class <--> table names.
Non-sequential ids should be ok. I believe that all ActiveRecord assumes is the existance of a column named 'id' on each table, with unique integer values. Who knows, maybe they don't even need to be integers.
As far as updating the views with triggers: again, I don't know about Oracle, but in MySQL and PostgreSQL it is possible to create views that basically just re-write SQL on the fly. No need to store redundant data. And since each one of your views will basically be just:
CREATE VIEW widgets AS SELECT foo_r as foo, bar_s as bar, some_primary_key as id from oddly_named_table
Then you shouldn't have much performance problems. Those views are one to one with the tables.