본관은 영강(永康). 음보로 양온사(良醞史)가 되어 10년 동안 아전의 임무를 맡아 하였다. 원래 가문이 대대로 한미하고 별다른 재주도 없었으나, 평소 부지런하고 조심스럽게 일을 보았다.
뒤에 군기주부동정(軍器注簿同正)에 올랐으며, 다시 외직에 임명되어 영인진판관 진명도부서부사(寧仁鎭判官鎭溟都部署副使)로 재직 중 여진과 싸워 여러번 공을 세웠다. 특히, 1097년(숙종 2) 동여진(東女眞)의 적선 10척이 동북면 진명현(鎭溟縣)에서 약탈을 자행하자, 동북면병마사 김한충(金漢忠)의 명으로 적과 싸워 배 3척을 노획하고 48인을 베었다.
이어 감찰어사가 되고, 1098년에는 중윤(中允), 1101년 고공낭중 어사잡단(考功郎中御史雜端)으로 승진되었다. 뒤에, 동북면병마판관이 되어 능도(菱島)에서 다시 여진과 싸워 이긴 공으로, 전중시어사(殿中侍御史)에 올랐다. 1105년(예종 즉위년)에 지어사대사(知御史臺事)가 되었다.
1107년 윤관(尹瓘)의 여진정벌 때는 좌군지병마사(左軍知兵馬事)로 종군하여 공을 세웠으므로 좌산기상시(左散騎常侍)에 올랐다. 1111년에는 서북면병마사, 1112년 어사대부(御史大夫), 1113년 형부상서가 되고, 호부상서 삼사사(戶部尙書三司使)를 거쳐 지추밀원사가 되었다.
1114년 상서좌복야 추밀원사 판삼사사(尙書左僕射樞密院使判三司事)를 역임한 뒤, 1116년에는 수사공 참지정사판상서형부사 겸 태자소부(守司空參知政事判尙書刑部事兼太子少傅)가 되고, 이듬해 중서시랑평장사(中書侍郎平章事)에 올라 사직했다. 시호는 경양(景襄)이다.