1011년(현종 2) 감찰어사(監察御史)에 임명되었고, 1019년 정월 강감찬(姜邯贊)의 휘하에서 병마판관(兵馬判官)으로 군사 1만 명을 거느리고 수도 개성을 호위하였다.
같은 해 2월에 거란군사가 구주(龜州)를 지나가자 강감찬 등이 동쪽 들에서 맞아 싸웠는데, 양편의 군사가 서로 버티어 승패가 결정되지 않았다.
이때 구원군을 이끌고 치니 거란군사가 패하여 북쪽으로 도망하므로 뒤쫓아 쳐서 석천(石川)을 건너 반령(盤嶺)에 이르니, 넘어져 죽은 시체가 들판을 덮고 사로잡은 군사와 말·낙타·갑옷·투구·병기는 이루 다 헤아릴 수도 없었다.
이 전투에서 적장 소배압(蕭排押)이 거느린 10만 대군 가운데 살아 돌아간 자는 겨우 수천 명 뿐이었다고 한다. 그뒤 예부원외랑(禮部員外郎)이 되고 1031년(덕종 즉위년) 우간의대부에 올랐고, 이듬해 우산기상시(右散騎常侍)가 되었다.