Название Осло согласуется в мужском роде.
Приведенное Вами написание корректно.
Верно: Ему присвоили звание полковника. Он окончил войну в звании майора.
Корректно: ...подлежат одобрению советами директоров компаний.
Запятая нужна.
Корректно: звание города-героя; звание "город-герой".
Правильно слитное написание.