Iam trying to refresh the materialized view by using:
DBMS_MVIEW.REFRESH('v_materialized_foo_tbl')
But it's throwing invalid sql statement.
Then I have created a stored procedure like this:
CREATE OR REPLACE
PROCEDURE MAT_VIEW_FOO_TBL
IS
BEGIN
DBMS_MVIEW.REFRESH('v_materialized_foo_tbl')
END MAT_VIEW_FOO_TBL IS;
This procedure has been created successfully but when i am calling this procedure with
MAT_VIEW_FOO_TBL;
it's throwing an error again.
Kindly suggest a solution for this issue.
Thanks, Srinivas
Best option is to use the '?' argument for the method. This way DBMS_MVIEW will choose the best way to refresh, so it'll do the fastest refresh it can for you. , and won't fail if you try something like method=>'f' when you actually need a complete refresh. :-)
from the SQL*Plus prompt:
You can refresh a materialized view completely as follows:
When we have to use inbuilt procedures or packages we have to use "EXECUTE" command then it will work.
EX:
EXECUTE exec DBMS_MVIEW.REFRESH('v_materialized_foo_tbl');
a bit late to the game, but I found a way to make the original syntax in this question work (I'm on Oracle 11g)
** first switch to schema of your MV **
alternatively you can add some options:
this actually works for me, and adding parallelism option sped my execution about 2.5 times.
More info here: How to Refresh a Materialized View in Parallel
If you're working with SQL Developer, you have to put the dbms_view in lowercase. The rest compiled fine for me although I haven't called the procedure from code yet.
EXECUTE dbms_mview.refresh('view name','cf');