I think Onix is fine in-game if you use it in more of a physical defensive way. 160 base defence with Eviolite is incredibly bulky even with relatively few hitpoints. Use moves like Bind, Sand Tomb, and Sandstorm to inflict damage over time and stall the enemy out. It can also be used more as a defensive setup pokémon, it can set up Stealth Rock and weaken enemy bosses (like strongest Gym Leader pokémon) with Screech or Rock Tomb. It has the bulk to get away with it, and once the enemy's stats are down another pokémon can come in and finish the job. There are several other pokémon I've had far more trouble using in a normal playthrough, like Noibat. Noibat's stats are just so poor and it evolves so late it's effectively useless in a playthrough. A pokémon like Rattata evolves much earlier, has better speed and offensive stats, and gets Hyper Fang quite early on to get some solid damage, but Noibat gets nothing of that. A pokémon like Beedrill has better bulk, much better offensive power, better bulk, better speed, and is already in the Beedrill stage by level 10.