Solve seems to work better if you separate definitions from equations.
Off[Solve::ratnz] With[{r = .4, dbtot = 2.06155}, Solve[1/dib == -2/r - 1/(dbtot - r), dib]] (* {{dib -> -0.178513}} *) In this next example one of the definitions (= vice ==) is embedded in the Solve since it cannot be included with the other definitions since it depends on them.
With[{x = 2, y = 0.5, z = 0.0, r = 0.4}, Solve[dbtot = Sqrt[x^2 + y^2 + z^2]; 1/dib == -2/r - 1/(dbtot - r), dib]] (* {{dib -> -0.178513}} *) Or it can be pulled out
With[{x = 2, y = 0.5, z = 0.0, r = 0.4}, dbtot = Sqrt[x^2 + y^2 + z^2]; Solve[1/dib == -2/r - 1/(dbtot - r), dib]] (* {{dib -> -0.178513}} *) Clear[dbtot] With[{x = 2, y = 0.5, z = 0.0, r = 0.4}, Solve[{dbtot == Sqrt[x^2 + y^2 + z^2], 1/dib == -2/r - 1/(dbtot - r)}, {dbtot, dib}]] (* {{dbtot -> 2.06155, dib -> -0.178513}} *)