Один из первых советских легионеров в НХЛ — 1-й сезон провел в 1991/92, когда в лиге выступало чуть больше 10 выходцев из СССР. В 1990-е, наряду с Дарюсом Каспарайтисом, стал самым жестким защитником из России в НХЛ. Один из 4 российских хоккеистов, получивших не менее 1100 штрафных минут в регулярных сезонах НХЛ (кроме Уланова — Андрей Назаров, Дарюс Каспарайтис и Алексей Ковалёв).
Всего в регулярных чемпионатах НХЛ провёл 739 матчей и набрал 162 очка (27+135) и 1151 штрафную минуту. Играл в 8 разных клубах НХЛ, один из лидеров среди россиян по этому показателю.
Вырос в семье рабочих: мама работала на бумажной фабрике, папа всю жизнь шофёром. Рос очень спортивным мальчишкой: ходил лыжную секцию, секцию самбо. Но больше всего увлекал хоккей, которым занимался в спортивном спецклассе. В 14 лет тренер показал Уланова своим коллегам в Перми. Просмотр оказался удачным, после него Уланов стал заниматься в Перми (для чего каждый день приходилось ездить из Краснокамска в областной центр). Перед призывом в армию отыграл в сезоне 1986/1987 6 игр за взрослую команду «Молот» (Пермь). Во время службы в армии играл за СКА (Свердловск).
В 1990 году подписал контракт с «Химиком». В 1991 году после успешного турне «Химика» по Северной Америке поставлен на драфт командой «Виннипег Джетс».
Под новый 1992 год в составе олимпийской сборной поехал на серию матчей против сборной Канады, после которых перешёл в «Виннипег». В команде сразу зарекомендовал с лучшей стороны и играл постоянно в основной команде.
После 1995 года несколько раз был обменян между клубами НХЛ. В 1997 году оказался в «Монреаль Канадиенс».
В 2006 году после долгой карьеры в НХЛ переехал в Россию, выступал за «Локомотив» (Ярославль) (2006—2008). В сезоне 2008/09 выступал за «Динамо» (Минск).
В настоящее время проживает в родном Краснокамске.