There is a requirement to compress monthly interval partition older that 36 months.
First, interval partitions were renamed to more intuitive names using Renaming Interval Partitions
Even though the rename is not necessary, it does provide more clarity.
There is a demo to find and compress partitions older that 36 months.
SQL> @ partition_interval_delta.sql
SQL> select
2 partition_name, compression, high_value,
3 TRUNC(MONTHS_BETWEEN(SYSDATE,(TO_DATE(regexp_substr(partition_name, '[[:digit:]]+'),'YYYYMM')))) months_delta
4 from dba_tab_partitions
5 where table_owner = UPPER('&owner')
6 and table_name = UPPER('&table')
7 and compression='DISABLED'
8 and TRUNC(MONTHS_BETWEEN(SYSDATE,(TO_DATE(regexp_substr(partition_name, '[[:digit:]]+'),'YYYYMM')))) >= &months_delta
9 order by 1
10 ;
Enter value for owner: app
Enter value for table: interval
Enter value for months_delta: 36
PARTITION_NAME COMPRESS HIGH_VALUE MONTHS_DELTA
--------------------- -------- -------------------------------------------------------- ------------
P201702 DISABLED TO_DATE(' 2017-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 49
P201705 DISABLED TO_DATE(' 2017-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 46
P201706 DISABLED TO_DATE(' 2017-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 45
P201707 DISABLED TO_DATE(' 2017-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 44
P201708 DISABLED TO_DATE(' 2017-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 43
P201709 DISABLED TO_DATE(' 2017-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 42
P201710 DISABLED TO_DATE(' 2017-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 41
P201711 DISABLED TO_DATE(' 2017-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 40
P201712 DISABLED TO_DATE(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 39
P201801 DISABLED TO_DATE(' 2018-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 38
P201802 DISABLED TO_DATE(' 2018-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 37
P201803 DISABLED TO_DATE(' 2018-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 36
SQL>
SQL> set echo off
SQL> set verify on
SQL> define partition_name = P201702
SQL> alter table APP.INTERVAL modify partition &partition_name compress for OLTP;
old 1: alter table APP.INTERVAL modify partition &partition_name compress for OLTP
new 1: alter table APP.INTERVAL modify partition P201702 compress for OLTP
SQL> alter table APP.INTERVAL move partition &partition_name ONLINE UPDATE INDEXES PARALLEL 8;
old 1: alter table APP.INTERVAL move partition &partition_name ONLINE UPDATE INDEXES PARALLEL 8
new 1: alter table APP.INTERVAL move partition P201702 ONLINE UPDATE INDEXES PARALLEL 8
SQL> define partition_name = P201705
SQL> alter table APP.INTERVAL modify partition &partition_name compress for OLTP;
old 1: alter table APP.INTERVAL modify partition &partition_name compress for OLTP
new 1: alter table APP.INTERVAL modify partition P201705 compress for OLTP
SQL> alter table APP.INTERVAL move partition &partition_name ONLINE UPDATE INDEXES PARALLEL 8;
old 1: alter table APP.INTERVAL move partition &partition_name ONLINE UPDATE INDEXES PARALLEL 8
new 1: alter table APP.INTERVAL move partition P201705 ONLINE UPDATE INDEXES PARALLEL 8
SQL> @ partition_interval_delta.sql
SQL> select
2 partition_name, compression, high_value,
3 TRUNC(MONTHS_BETWEEN(SYSDATE,(TO_DATE(regexp_substr(partition_name, '[[:digit:]]+'),'YYYYMM')))) months_delta
4 from dba_tab_partitions
5 where table_owner = UPPER('&owner')
6 and table_name = UPPER('&table')
7 and compression='DISABLED'
8 and TRUNC(MONTHS_BETWEEN(SYSDATE,(TO_DATE(regexp_substr(partition_name, '[[:digit:]]+'),'YYYYMM')))) >= &months_delta
9 order by 1
10 ;
Enter value for owner: app
Enter value for table: interval
Enter value for months_delta: 36
PARTITION_NAME COMPRESS HIGH_VALUE MONTHS_DELTA
--------------------- -------- -------------------------------------------------------- ------------
P201706 DISABLED TO_DATE(' 2017-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 45
P201707 DISABLED TO_DATE(' 2017-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 44
P201708 DISABLED TO_DATE(' 2017-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 43
P201709 DISABLED TO_DATE(' 2017-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 42
P201710 DISABLED TO_DATE(' 2017-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 41
P201711 DISABLED TO_DATE(' 2017-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 40
P201712 DISABLED TO_DATE(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 39
P201801 DISABLED TO_DATE(' 2018-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 38
P201802 DISABLED TO_DATE(' 2018-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 37
P201803 DISABLED TO_DATE(' 2018-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS' 36
SQL> set echo off