LAST_DDL_TIME Not Changing after compilation of package body On Nov 24 th,  we created the package body. Again today we recompiled it, but last DDL date has not changed. Is there any reason for this? 

Below is the query I'm using

SELECT object_name, object_type, created, last_ddl_time, status 
FROM ALL_OBJECTS 
WHERE OBJECT_NAME = 'xxxxxxxxx';
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.