Chapter II, problem 2.8(b)  of Zachmanoglu and Thoe
Find the general solution to 
dx/( yz)= dy/(-xz)=(dz/((xy((x^2)+(y^2)))))
In class, we found two first integrals, and the region Ω where the vector field V is nonzero.  Indeed, Ω is (R^3) with the three coordinate axes removed.
In class I found two first integrals
u1(x,y,z) = x^2 + y^2 and
u2(x,y,z) = (x^2 + y^2) x^2  - z^2.

I made an error when I said that u1 and u2 are functionally independent whenever z ≠ 0, since
grad u1 = (2x, 2y, 0) and 
grad u2 = (*,  *, -2z)

One can conclude that u1 and u2 are functionally independent if z ≠ 0, and (x, y) ≠(0,0).  But we can do a whole lot better by actually taking the cross product.  It turns out that u1 and u2 are functionally independent on all of Ω.

u1[x_, y_, z_] := x^2 + y^2;
u2[x_, y_, z_] :=(x^2 + y^2)x^2 - z^2;
c1 = 2;
c2 = 1;
ContourPlot3D[{u1[x,y,z] == c1, u2[x,y,z] == c2}, {x, -2,2}, {y, -2,2}, {z, -2,2}, ContourStyle -> Opacity[.8]]

v[x_, y_, z_] := {y z, -x z, x y(x^2+y^2)};
c1 = 2;
c2 = 1;
p1=ContourPlot3D[{u1[x,y,z] == c1, u2[x,y,z] == c2}, {x, -2,2}, {y, -2,2}, {z, -2,2}, ContourStyle -> Opacity[0.8]];
p2 = VectorPlot3D[v[x,y,z],{x, -2,2}, {y, -2, 2}, {z, -2, 2}];
Show[{p1, p2}]

gradu1[x_,y_, z_] := {2x, 2y, 0};
gradu2[x_,y_,z_] :={4 x^3 + 2x y^2, 2 x^2 y, -2z}

Simplify[v[x,y,z]. gradu1[x,y,z] ]
Simplify[v[x,y,z]. gradu2[x,y,z] ]

Simplify@Cross[gradu1[x,y, z], gradu2[x,y, z]]

v[x,y,z]

How cool is that?  The cross product grad u1 x grad u2 = -4 v, so the cross product is nonzero precisely where v is nonzero.  Thus u1 and u2 are functionally independent first integrals on Omega = R^3 with the three coordinate axes removed.

You can make copies of the above cell, and change the vector fields and/or first integrals u1 and u2.  
Try this with the vector field V = {x,y,z}.
If you change the bounds of the box, you may want to do
Show[{p1, p2}, BoxRatios -> Automatic]

Manipulate[ContourPlot3D[{u1[x,y,z] == c1, u2[x,y,z] == c2}, {x, -2,2}, {y, -2,2}, {z, -2,2}, ContourStyle -> Opacity[.8]], {{c1, 1}, 0,4,Appearance->"Labeled"}, {{c2, 0}, -2, 2,Appearance->"Labeled"},
Initialization -> { (* this makes the functions "local" *)
u1[x_, y_, z_] := x^2 + y^2;
u2[x_, y_, z_] := (x^2 + y^2)x^2 - z^2;
}]

The Manipulate function is fun but temperamental.  If things get weird with Mathematica, you can always got to the Evaluation menu and quit the local kernel, and start again.