I am using materialized views a lot, and they are a handy thing (in older versions the were named SNAPSHOT). If you have for example a lot of statistic stuff on your customer (how many purchases the last 7 days, how many in average over the year, how many contacts.... it is a lot of CPU and IO you need just for information that are not so important to be actual in real-time. In this case you can use Materialized Views (MV).
A creation of a materialized views would look like this (more infos in the manuals there are a lot of options!!!):
CREATE MATERIALIZED VIEW MV_TEST
START WITH SYSDATE NEXT SYSDATE + 1 AS SELECT * FROM .....
In Oracle also a "fast refreshe" is possible, that means just the changed rows of the "master" table are written to the materialized view (100000 customers, just 5000 purchased something today so just 5000 changes are written to the MV).
In some cases you also need the "on commit" feature. This is basically a fast refresh every time a record gets commited to the master-table.