본관은 해주(海州). 자는 극경(克卿), 호는 석천(石泉). 공조판서 오두인(吳斗寅)의 증손으로, 할아버지는 오진주(吳晋周)이고, 아버지는 대제학 오원(吳瑗)이다. 어머니는 강릉최씨로, 최식(崔寔)의 딸이다.
1767년(영조 43) 음보로 기용되어 장릉참봉(長陵參奉)에 임명되었으나 부임하지 않았다. 이듬해 사마시에 합격해 정릉참봉이 되었다. 1771년 사옹원봉사로 옮겼으나 그 해 정시 문과에 병과로 급제해 승정원주서(承政院注書)가 되었다. 1773년 정식으로 정6품에 오르고 홍문관 관리가 되었다.
1775년 문신들이 행하는 전강(殿講)에서 수석을 차지해 홍국영(洪國榮)과 함께 숙마(熟馬) 한 필을 하사받았으며, 그 해 승지에 올랐다. 1777년(정조 1) 찬집당상(纂輯堂上)이 되고 이어서 대사간에 올라 홍봉한(洪鳳漢)의 역변 사건의 처리에 핵심적 역할을 하였다.
1801년(순조 1) 행부호군(行副護軍)이 되고 천주학 배척에 기여한 공로가 인정되어 아경(亞卿)의 지위에 올랐다. 그 해 진하부사(進賀副使)가 되어 청나라에 다녀왔다. 그 뒤 『정조실록』 편찬의 찬수당상에 임명되었으며, 1803년 다시 대사간이 되고 이듬해 강화유수가 되어 외지로 나갔다.
임기가 끝나자 1806년 중앙으로 돌아와 대사헌이 되고, 이어서 한성부판윤을 역임하였다. 1807년 예조판서, 이듬해 판의금부사, 1809년 우참찬을 지낸 뒤 이듬해 판돈녕부사에 이르렀다.
성격이 온후해 모나지 않았고 남의 의사를 존중해 자기 뜻을 고집하지 않아 여러 사람의 존경을 받았다. 그러나 공사 처결은 대쪽같이 곧아서 사사로운 정을 개입시키지 아니하였다. 시호는 정헌(定獻)이다.