Поскольку вы ввели ложное слово «игнорировать» между «вставить» и «в» !!
insert ignore into table1 select 'value1',value2 from table2 where table2.type = 'ok'
Должно быть:
insert into table1 select 'value1',value2 from table2 where table2.type = 'ok'
Из заголовка вашего вопроса "oracle insert, если строка не существует", я полагаю, вы думали, что "ignore" было ключевым словом Oracle, что означает "не пытайтесь вставить строку, если она уже существует". Может быть, это работает в некоторых других СУБД, но не в Oracle. Вы можете использовать оператор MERGE или проверить существование следующим образом:
insert into table1
select 'value1',value2 from table2
where table2.type = 'ok'
and not exists (select null from table1
where col1 = 'value1'
and col2 = table2.value2
);