LAST_DDL_TIME Not Changing after compilation of package body
You might have looked for different object types. It shows the last DDL time for both package and package body.

I have a package/body EMP_ADMIN.

SQL&gt; select object_type, last_ddl_time from  all_objects where object_name='EMP_ADMIN';

OBJECT_TYPE             LAST_DDL_TIME
----------------------- -----------------
PACKAGE                 05-12-17 22:49:50
PACKAGE BODY            05-12-17 22:52:34

SQL&gt; alter package emp_admin compile body;

Package body altered.

SQL&gt; select object_type, last_ddl_time from  all_objects where object_name='EMP_ADMIN';

OBJECT_TYPE             LAST_DDL_TIME
----------------------- -----------------
PACKAGE                 05-12-17 22:49:50
PACKAGE BODY            05-12-17 22:53:19


Look at the difference for DDL time for Package Body not for the Package.

And let's compile the package.

SQL&gt; alter package EMP_ADMIN compile;

Package altered.

SQL&gt;  select object_type, last_ddl_time from  all_objects where object_name='EMP_ADMIN';

OBJECT_TYPE             LAST_DDL_TIME
----------------------- -----------------
PACKAGE                 05-12-17 22:53:44
PACKAGE BODY            05-12-17 22:53:44


The compilation of the packages changes DDL time for both Package and Body.