I performed full database import into existing database with identical structure. After this, call the DBMS_MVIEW.REFRESH procedure cause ORA-01422 error. For example:
begin
DBMS_MVIEW.REFRESH('SCHEMA_NAME.T_TOP_FRESH_COMMENTS');
end;
Error:
ORA-01422 exact fetch returns more than requested number of rows
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2563
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2776
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2745
ORA-06512: at line 2
Select bellow returns single row:
select * from dba_registered_mviews t where t.name = 'T_TOP_FRESH_COMMENTS'
What do errors cause? How can I fix that? Thanks!
UPD:
Materialized view select doesn’t cause error. The same error repeated for others materialized views.
Script for creating view is listed below:
CREATE MATERIALIZED VIEW T_TOP_FRESH_COMMENTS
REFRESH FORCE ON DEMAND
AS
SELECT ROWNUM AS order_comment, id_comment, date_refresh
FROM ( SELECT c.id_comment, MAX (h.updated) date_refresh
FROM t_comment_user c
INNER JOIN t_comment_history h ON c.id_comment = h.id_comment
WHERE c.published = 'T' AND h.published = 'T' and h.updated is not null GROUP BY c.id_comment
ORDER BY date_refresh DESC)
WHERE ROWNUM <= 10;
UPD1: I ran completed refresh and recieved the same error:
begin
DBMS_MVIEW.REFRESH('SCHEMA_NAME.T_TOP_FRESH_COMMENTS','c');
end;
I recreated materialized view with REFRESH COMPLETE and this didn't help too. I tried to purge view log. It is didn't help:
begin
dbms_mview.purge_log('SCHEMA_NAME.T_COMMENT_HISTORY',99999,'delete');
end;
create materialize viewscript) which is returning multiple rows where only one is expected. Postingcreate materialized viewcode will be helpful. - San