Oakland Mayor Ron Dellums made the announcement on Wednesday, saying crime in Long Beach had fallen to its lowest level in 30 years under Batts' leadership.
Batts has served as Long Beach police chief for seven years.
In Oakland, he'll take charge of a department still mourning the four officers killed by a parolee in March.
He will take over from acting chief Howard Jordan. He replaced Wayne Tucker, who stepped down in February, a month after city leaders were preparing to call for a vote of no-confidence. Jordan will remain acting chief until Batts starts in September.