Please have a look at the following doc, which shows how to set up/configure multiple OMS's for high availability.
You dont need a cluster. You can install an additional OMS pointing to the same repository to have an active-active configuration. Here two or more OMS instances are configured to serve the same application workload. These instances can reside on the same machine as the Repository Database machine(s) or on different machines.
They are all active instances front-ended by a Server Load Balancer (SLB) router, which can redirect requests to any of the active OMS instances. Such a setup ensures that even if one of the OMS goes down, another OMS can serve the console / upload requests.
For more details, refer to the doc link suggested by Loc earlier:
Also see: Note 330072.1 - How To Configure Enterprise Manager for High Availability
How about repository database ? I believe I need to setup standby database with dataguard on different host. Is that right ?
Do I need to consider anything else apart from oms and repository database ?
Ideally the standby database should be in a different location for better protection against a disaster. By the way, you can use EM to create a standby database. Also, make sure that your OMS's are in proximity of the repository to prevent performance issues due to network latency.
Depend, for me OEM is not a business critical and I just put it in a VM so the HA feature is managed by the VM. However, you will have to careful as OEM is very chatty and any network disruption will cause a lot of alerts to go off.
For the proper HA feature for OEM is cluster database and additional OMS