It sounds like you have unsealed or unglazed tile. Although this is not a bad thing, they do tend to stain easily and will absorb water temporarily, change color then return to original color when dry.
I don't know what you have already tried to remove the oil stains. Once oil stains sink into unsealed tile, they can be very difficult to remove. Test a small area in an inconspicuous area with some TSP, bleach and water mixture. You may also try some grout cleaner from the building supply store. If the stains are not deep, maybe some Dawn detergent may be enough.
The longer term solution to your problem is to seal the tile. There are several products at the flooring department of building supply stores. These products are similar to grout sealers but better adapted to whole floor sealing. Expect to pay $50 to $75 to seal the average 12X12 foot floor. Follow the directions carefully and use two coats if recommended by the manufacturer. After sealing, ongoing floor cleaning instructions are included on the bottle of sealer. Avoid harsh or abrasive cleaners, often just plain water will do a good job on a sealed tile floor. Depending on the amount of traffic, you may have to reseal every year or two.