you can use index monitoring (Altering Indexes) to find out if indexes are used or not.
And when you find if indexes are used or not you can check them against FND_INDEXES table (ones listed there should be the seeded ones and not the customised)
You can query select * from dba_objects where object_name like 'ABC%' and object_type='INDEX' and OWNER='APPS';
and select * from dba_objects where object_name like 'ABC%' and object_type='TABLE' and OWNER='APPS'; for tables.
As I understand if we enable index monitoring for certain period to check whether the indexes are being used or not. But if for certain period one job is not running which is accessing an index is not running before disable index monitoring, then that index will come under unused.please correct me if I am wrong.
if we will enable index monitoring then can you please suggest for how many time interval the index monitoring should be enabled and when should the monitoring will be disable??
will it impact anything for concurrent job processing/batch job processing??
You do not need to check the used indexes to know what are the custom indexes.
As Maris told you, you can query the fnd_indexes table to verify if an index is custom or not.
The following query retrieves the custom indexes created in the APPS schema:
from dba_indexes i
where owner = 'APPS'
and not exists (select 1 from fnd_indexes where index_name = i.index_name);