Is there a way to create a history table for a queue table, that will store all the events of the queues, for a defined period of time ?
It seems likely to me that you could use the retention property of the queue to do this. See http://docs.oracle.com/cd/B10500_01/appdev.920/a96587/qsample.htm#158007 and also dbms_aqadm.alter_queue for details. If you really need a separate table then how about creating a multiple subscriber queue and creating an audit subscription that populates the history table. I'd use built in functionality first.