This error occurs when the query in the using clause returns more than 1 row for the joining condition
in on clause.
ORA-30926: unable to get a stable set of rows in the source tables
Cause: A stable set of rows could not be got because of large dml activity
or a non-deterministic where clause.
Action: Remove any non-deterministic where clauses and reissue the dml.
To solve above issue, make id column as the primary key in the table source.
create table source(id number not null,
name varchar2(10) null,
CONSTRAINT pk_source PRIMARY KEY (id));
merge into target t
using (select * from source) s
on (t.id = s.id)
when matched then update set t.name = s.name;