The issue is related to privileges between two different schemas.
When you use a LEFT JOIN,
Oracle needs to verify access to all referenced tables at compile time,
and the schema that owns the view (A) must have direct privileges
on the tables it joins from schema B
not just through a grant chain or a WITH GRANT OPTION.
Here’s how to fix it:
Option 1 – Grant access directly from B to A
Log in as schema B (the table owner) and run:
GRANT SELECT ON table1 TO A;
GRANT SELECT ON table2 TO A;
-- repeat for each table used
Then recompile the view:
ALTER VIEW A.view_name COMPILE;
You don’t need to use WITH GRANT OPTION unless schema A also needs to re‑grant those privileges to others.
Option 2 – Create Synonyms in A
In schema A, create synonyms to make references cleaner:
CREATE SYNONYM table1 FOR B.table1;
Then recompile the view or recreate it.
This helps Oracle resolve object names easily and prevents the ORA‑01720 privilege error during compile time.