After spending a lot of time scrubbing our roof with bleach, soap and water, with poor results, I now use a product called House Wash. See link.
I buy the gallon and mix a 2:1 water and product then fill up a pump sprayer (or you can buy the product with the water hose adapter sprayer). Using the application instructions - Wet the roof then spray on the product. It works GREAT with minimum scrubbing. This will get rid of oak stains, mildew and the rest of the crud.
It also works great on fiberglass, vinyl covered rubber roofs and canvas. Make sure you rinse off with lots of fresh water.