Materialized view in Oracle are the database objects based on SQL Queries. Unlike normal view MV actually contains the data.
The generic statement to create a Materialize View in Oracle Database is as below,
CREATE MATERIALIZED VIEW viewname [options] AS SELECT .....
While working on Oracle Apps 12.2.5 where editioning or online patching is enabled, you need to use a different approach to create a materialized view.
Create Materialized View
You need to create a logical view and then use ad_zd_mview. upgrade script to create a materialized view. Internally oracle creates the required edition materialized view.
Let’s see it with an example.
1. Create Logical View
This is the first step. You need to create a logical view. It is a normal view only suffixed by the # character.
CREATE OR REPLACE VIEW apps.xx_test_mv#
AS
SELECT qlh.rowid qlhrow_id ,
qlb.rowid qlbrow_id,
name
FROM qp_list_headers_tl qlh,
qp_list_headers_b qlb
WHERE qlh.list_header_id = qlb.list_header_id ;
2. Run ad_zd_mview. upgrade
Now run the ad_zd_mview script as shown below. The first parameter is the schema name and the second is the view name without # suffix.
exec ad_zd_mview.upgrade('APPS','XX_TEST_MV');
Now, let’s see objects created by Oracle in the backend.
SELECT * FROM dba_objects WHERE object_name LIKE 'XX_TEST_MV%';

While working on this example, I faced the below issue. Maybe something I mentioned wrong in View statement.
exec ad_zd_mview.upgrade('APPS','XX_TEST_MV')
Error report -
ORA-24256: EXPAND_SQL_TEXT failed with ORA-00933: SQL command not properly ended
ORA-06512: at "SYS.DBMS_UTILITY", line 1538
ORA-06512: at "APPS.AD_ZD_MVIEW", line 209
ORA-06512: at "APPS.AD_ZD_MVIEW", line 1283
ORA-06512: at "APPS.AD_ZD_MVIEW", line 1628
ORA-06512: at "APPS.AD_ZD_MVIEW", line 714
ORA-06512: at "APPS.AD_ZD_MVIEW", line 1130
ORA-06512: at "APPS.AD_ZD_MVIEW", line 1885
ORA-06512: at line 1
24256. 00000 - "EXPAND_SQL_TEXT failed with %s"
*Cause: See the string parameter at the end of the message.
*Action: See the string parameter at the end of the message and take
corrective action.
What I did, simply opened a new session and ran the script again and it worked. Strange.
Summary
We have explained creating a materialized view in R12.
I hope you found it helpful. Please like and subscribe.