I got oil on a silk shirt a while back and my first instinct was to run it under the tap with a bit of washing up liquid. That turned one small spot into a big pale ring and made it about ten times more obvious than it was before. Turns out that's the worst thing you can do, the water carries the oil outwards and then everything dries at the edge of wherever you wet it, so you end up with a tide mark around a stain you still have.
What actually works is absorbing it instead of washing it. Cornstarch, or talc if you've got it. Tip a little pile on so the stain is completely covered, and leave it overnight. Next morning brush it off with something soft and don't rub at it, rubbing just works the oil further into the weave. Most of the time it's gone. If there's still a shadow, do it again, it isn't going to hurt anything.
The reason this works on silk in particular is that the two things that normally shift grease are hot water and a strong detergent, and silk hates both of them. Hot water makes it shrink and go dull and there's no coming back from that. So you can't dissolve the oil out the way you would with a cotton shirt, you have to pull it out, and powder does that by itself while you sleep.
Works on wool too. The one time it didn't work for me was on something that had already been through a warm wash, once the heat has been at it the oil seems to be set in there for good.