demonstration of benefits of ridge regression over ordinary regression I can understand ridge regression is better than ordinary regression in case of multiple-collinarity.
set.seed(123)
 x1 <- rnorm(100)
 set.seed(223)
 x2 <- rnorm(100,mean=x1,sd=.01)
 set.seed(344)
 y <- rnorm(100,mean=3+x1+x2)
 myd <- data.frame(x1, x2,y)
 cor(myd)
          x1        x2         y
x1 1.0000000 0.9999383 0.8701704
x2 0.9999383 1.0000000 0.8702772
y  0.8701704 0.8702772 1.0000000

The ordinary regression: 
lm(y~x1+x2)$coef
(Intercept)          x1          x2 
   3.063971   -1.027534    3.097806 

The ridge regression using MASS package 
require(MASS)
lm.ridge(y~x1+x2,lambda=1)
               x1       x2 
3.066382 1.019101 1.043206 

The lambda (shrinkage) = 0 is equal to ordinary regression.
 lm.ridge(y~x1+x2,lambda=0)
                 x1        x2 
 3.063971 -1.027534  3.097806

QUESTIONS:
(1) How can we show that ridge regression is performing better than ordinary? any estimators like error ? How to calculate ?
(2) Are there other situations where ridge is better OLR ?
 A: I try for an answer, but a rather general one.
(1) It depends on what you mean by "performing better". Often, performance is measured in terms of the capability to generalize and forecast. For this cross-validation is an often used tool, where you repeatedly divide the data into a training and test set, fit the model using the training set, and then take the deviation between forecast and test set as a measure for the generalization capability.
(2) There are many of these situations. The main reason is that ridge regression often can avoid overfitting. A basic example is given at the beginning of Bishop's machine learning book: Here, a polynomial of order nine is fitted to random realizations of a sine curve with added noise. Without ridge regression, the fit obviously seems to overfit for $M=9$:

... well, obviously at least when you additionally see the corresponding sine curve. But even without this information, one should -- according to Ockham's razor -- prefer simple models, in this case the $M=3$ polynomial on the left.
Here are the corresponding results using ridge regression:

You see the benefits, but also the dangers. If you choose $\lambda=1$ (i.e.  $\ln \lambda =0$) as is done on the right-hand side, you obtain a fit which most people will find disappointing. For $\ln \lambda = -18$ you retain a simple and obviously appropriate description similar to the $M=3$ polynomial.
The parameter $\lambda$ therefore is seen to reduce the complexity of the model. That is, you can assume a sophisticated model and let the procedure automatically reduce the complexity when it is needed. In general, this is a way to avoid the task of finding an appropriate model specific to each new dataset -- instead, you simply pick a general model and then reduce its complexity until you hopefully get the desired result. Of course, by this you get a further free parameter $\lambda$ which must be properly estimated. Again, this is often done by cross-validation.
Finally, here you see the influence of the ridge parameter on training and test error:

Naturally, with growing $\lambda$, the training error increases as the residual sum of squares becomes larger. At the same time. however, On the other hand, you see that the test-error reaches a minimum somewhere around $\ln \lambda=-30$, which suggests that this is a good value for generalization tasks.
