Você tem seus dados de origem todos misturados em sua declaração de mesclagem, eu suspeito. Você só quer considerar as linhas que estão sendo inseridas, certo?
Eu acho que seu gatilho deve ser algo como:
CREATE OR REPLACE TRIGGER test_tri
after INSERT
ON test1
FOR EACH ROW WHEN (NEW.col5 >= '01-MAY-16')
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
IF INSERTING
THEN
MERGE INTO test_hist hist
USING (select :new.package_id, :new.col1, :new.col2, :new.col3, :new.col4, :new.col5
from dual) t1
ON (t1.PACKAGE_ID=hist.PACKAGE_ID)
WHEN MATCHED THEN
UPDATE SET hist.col5=t1.col5
WHEN NOT MATCHED THEN
INSERT (col1, col2, col3, col4, col5)
VALUES (t1.col1, t1.col2, t1.col3, t1.col4, t1.col5);
END IF;
COMMIT;
END;
/
N.B. se :new.col5 for uma coluna de data, altere:
FOR EACH ROW WHEN (NEW.col5 >= '01-MAY-16')
para
FOR EACH ROW WHEN (NEW.col5 >= to_date('01/05/2016', 'dd/mm/yyyy'))
Os anos têm 4 dígitos (adivinhei que você quis dizer 2016, e não 1916!).