I have this query
INSERT INTO hist_museum (SELECT * from of_owner.museum al
JOIN (SELECT vd.city_data_id
With "select * from al JOIN ..." you get all values from al and your joined subrequest vd. What you want is
INSERT INTO hist_museum (SELECT al.* from of_owner.museum al
JOIN (SELECT vd.city_data_id
FROM of_owner.city_data vd
WHERE gps_full_date < add_months(SYSDATE,-12)) vd
ON al.city_data_id = VD.city_data_id);