I've been at my current job 2 years. Things have slowed down a lot in Alberta, so new offers and opportunities are very hard to find. But I've made myself useful to a handful of companies, and don't anticipate any shortages in work (during a period when many are getting laid off and taking paycuts). When things pick back up, I've got a verbal offer on a position which should bring me another hefty raise.
My advice: Switch whenever an opportunity comes up that offers better work or pay. Employers are generally reluctant to hand out a 10-20% raise, but they will easily pay that money to someone new coming in to fill a hole in their organization. It can be difficult to explain coming-and-going in interviews, but if you have a solid line of references and some okay answers, their need to hire is often stronger than their desire to see what's wrong with you.