본관은 동복(同福). 자는 군서(君瑞) 또는 서장(瑞章), 호는 동사(東沙). 직장(直長) 오세현(吳世賢)의 증손으로, 할아버지는 이조참판 오백령(吳百齡)이다. 아버지는 관찰사 오단(吳端)이며, 어머니는 이조판서 심액(沈詻)의 딸이다. 당숙 오전(吳竱)에게 입양되었다.
일찍이 진사가 된 뒤 1645년(인조 23) 별시문과에 병과로 급제, 1652년(효종 3) 부교리(副校理)·수찬(修撰)을 지내고, 1659년 승지를 역임하였다. 1664년(현종 5) 예조참의가 되었으며 그뒤 충청도관찰사를 지냈는데, 이때 공주의 옛성을 개축하고 두 곳에 절을 세워 성을 지키게 하는 등 크게 치적을 올렸다.
그 뒤 양주목사·경기도관찰사 등을 거쳐, 1672년 호조·형조·공조의 판서를 지냈다. 숙종 초에 서인 송시열(宋時烈)에 대한 처벌문제로 남인이 온건파와 강경파로 분열될 때 청남(淸南)에 속하여 강경론을 지지하였다. 1677년(숙종 3) 동지사(冬至使)로 청나라에 다녀와 예조판서·우참찬 등을 역임하였다.
1680년 경신대출척으로 무안에 유배되었다가 삭주·보성에 이배되었다. 1689년 기사환국으로 풀려나와서 다시 공조판서에 등용되었고, 이어 기로소에 들어갔다.