Is it possible to cache only index not the data,
Please tell me how to do this, I have a very large database, I do not want to cahce the entire data but only the index,
also caching the data or index will improve the performance
You could configure a KEEP buffer pool and assign the index to the buffer pool KEEP - if the KEEP buffer pool is large enough to contain your index, you will have cached the index forever.
I don't think it is worth the effort for indexes. Index blocks are always read and put in the MRU end of the lru list of the buffer cache, so if you are going to re-read them after a while, you will find them in the buffer cache.
In short: Oracle already caches both indexes and tables efficiently, in the buffer cache, using sophisticated algorithms. Unless you have special needs (and it seems that you don't have), you have already what you want.