it is very easy task, i created one at festivos en calendario
create table calendar (dt, holiday) as
select trunc(sysdate, 'yy') + level - 1,
case when trunc(sysdate, 'yy') + level - 1 in ( select holiday_date
from holidays
) then 'Y'
else 'N'
end
from dual
connect by level <= trunc(sysdate) - trunc(sysdate, 'yy') + 1;