Se ho capito bene vuoi che tiri fuori i record la cui data_inizio è compresa in un certo intervallo e la data_fine è compresa in un certo intervallo oppure è nulla.
Se è questo quello che volevi fare il codice che ti metto sotto funziona benissimo in oracle.

(to_date(to_char(data_inizio,'dd-mm-yyyy'),'dd-mm-yyyy')
between to_date('01-01-2015','dd-mm-yyyy') and
to_date(
nvl('15-01-2015',to_char(sysdate,'dd-mm-yyyy')),'dd-mm-yyyy')) and

((to_date(to_char(data_fine,'dd-mm-yyyy'),'dd-mm-yyyy') between to_date('01-01-2015','dd-mm-yyyy') and
to_date(
nvl('15-01-2015',to_char(sysdate,'dd-mm-yyyy')),'dd-mm-yyyy')) or data_fine is null)