Hola Sara,
un "programa" unidad de programa es un "proceso", normalmente escrito en PL/SQL que se almacena en la base de datos. Ejemplos de programa son los procedimientos almacenados, funciones ...
Un paquete es una agrupación de programas,lo que nos permite estructurar los programas relacionados entre sí. Por ejemplo, imagina un paquete en el que agruparamos todos los programas que permiten ejecutar la facturación (agregar factura, eliminar_factura, contabilizar ...). Además, con el uso de paquetes podemos hacer ciertos programas "publicos" o "privados" con lo que añadimos un nivel de abstracción a nuestros programas.
Tanto los programas como los paquetes se guardan en la propia base de datos.
Saludos,
DJK