キャストを疑われていますが、GetString() も ToString() も戻り値は string 型なので、string へのキャストは意味がなく、このキャストが原因でエラーになることはないです。実際、コンパイル後にはこのキャストはなくなります。
今回の場合はエラーメッセージの通りで、OracleDataReader では GetInt16() をサポートしていません。同様に、GetBoolean() 等、オラクルではサポートされないメソッドは他にいくつかあります。
このことがヘルプに少しも書かれていない、というか使えそうに書かれているのは問題ですね...。
GetInt32 の方であれば機能しますが、OracleDataReader を使用するときには、基本的に GetOracle で始まるメソッドを使うといいと思います。今回の場合、decimal を返す GetOracleNumber(~).Value を使用されてはと思います。
this.txtAge.Text = dr.GetOracleNumber(2).Value.ToString();
項目に名前がある場合は、名前で値を取得する方がわかりやすいのではと思います。
this.txtAge.Text = dr.GetOracleNumber(dr.GetOrdinal("年齢")).Value.ToString("##0");