Not sure this is a question that can get a really good answer but it's important to know the preference order of OSPF:
intra area routes
inter area routes
external type 1
external type 2
NSSA type 1
NSSA type 2
So in some cases adjusting the metric has no effect on traffic engineering. It's important to change the auto-cost reference-bandwidth on Cisco devices so that there is a difference in cost between higher speed interfaces. By default this might be set to 100 Mbit. This would mean that 100 Mbit, gig and 10 gig interfaces would have the same cost.
For faster convergence it's good to have equal cost routes (ECMP) so if you are peering iBGP to a loopback you two paths and if one goes down the impact should not be that big.
I used to work for a large ISP and they set all the costs manually on the transit interfaces. The basic design was to choose the path that had the fewest core hops. The network was designed with access, distribution and core levels with dual links between each level. If there are multiple paths with same number of core hops then choose the path with the lowest delay.
So based on this they designed the paths and set costs on the interfaces. This might require a lot of planning. The bad thing about link state protocols is that they only use the bandwidth of the interface to calculate the metric. So you could have a case where the metric is the same but the distance is significantly longer via one of the paths.
We are talking quite large networks before this would have an impact though.
So I would design it based on bandwidth, number of devices to go through, physical distance (delay) and of course money could be a factor if one path is more expensive than the other.
As discussed in chat, PBX / SIP traffic is unique to an IP host route in your case. Therefore, you can remove PBR and use tracking objects on overlapping static routes, which go out different dialer
interfaces to solve the problem.
ip route 89.123.45.10 255.255.255.255 Dial0 track 1 1 name PBX_Pri
ip route 89.123.45.10 255.255.255.255 Dial1 track 2 10 name PBX_Bak
ip route 0.0.0.0 0.0.0.0 Dial 1 track 2 1 name Data_Pri
ip route 0.0.0.0 0.0.0.0 Dial 0 track 1 10 name Data_Bak
Best Answer
You should get familiar with the Cisco documentation, and how to search for it. For example, OSPF Design Guide, Virtual Links:
You can also look at the RFCs related to the subject. For example, RFC 2328, OSPF Version 2: