The answer by Netch is wrong.

"Еще раз" "one more time" is used when you expect that the event happens or will happen the last time, you do not expect it to repeat again. 

"Опять" and "снова" are used for actions that you expect to repeat again and again.

"Опять" is usually used for non-desirable events.

> Опять придется его об этом просить.

I do not want to irritate him with my request again but I have no other choice.

> Ничего страшного, я снова его об этом попрошу.

Nothing bad, I can ask him again and he will do it without negative reaction.

> Я попрошу его об этом еще раз.

I will ask him again one more time (I hope it will be the last time).

Also "снова" may refer to starting anew a prolonged action, while "опять" may mean a continuation of the previous action.

> Он снова начал готовиться к экзаменам

Possibly a year passed from the last time, and he choose another university so he started to prepare anew.

> Он опять начал готовиться к экзаменам

Probably something interrupted his preparations for a day or two and now he continued the preparations.

> Он решил построить дом снова

He decided to build a house anew instead of his previous house that was destroyed.

> Он опять решил построить дом

He again decided to build a house (he already decided so previously but changed his mind).


In short, "опять" is used wen you want to underline the unavoidable repetitiveness of the event:

"опять начались дожди", "опять я заболел", "опять крысы испортили продукты", "он опять стал принимать наркотики"

"Снова" is used when you want to underline that the event starts anew and the results of the previous event are lost or that the event gained new inpulse:

"придется снова собирать все документы", "он снова влюбился и снова приобрел интерес к жизни", "после выхода из тюрьмы он снова начал строить свою карьеру".