一般社団法人 全国個人事業主支援協会

COLUMN コラム

先日、Oracleのストアドプロシージャを改修し、本番環境DBへ反映させようとした時のこと。

「ORA-00942:表またはビューが存在しません。」のエラーが出てきました。

げ・・・本番リリースで問題発生か、参ったな・・・でも開発環境では大丈夫だったけどなんでだろう。

というわけで原因調査開始。

まず、ストアドを改修前に戻してDBに反映。これはOK。つまり、改修箇所に問題があると。

改修内容はテーブルのSELECTとUPDATEを追加したくらいです。

当然、SELECT、UPDATE対象のテーブル(テーブルA、B)は存在しています。なのになぜこんなことを言われるのか・・・

考えても仕方ないので、エラーメッセージを基に検索。

すると、原因として「テーブルにアクセスする権限がない」というのを発見。これかな?

SELECT * FROM DBA_TAB_PRIVS;

これで全ユーザの権限情報を取得します。すると、ストアドの存在するユーザ(スキーマ)にはテーブルA、BのSELECT、UPDATE権限が無いのがわかりました!

これで原因がわかりましたので、次に権限を付与します。権限付与はGRANT文を使います。

例)GRANT SELECT ON USER_A.TABLE_A TO USER_B;

権限付与後、再度改修後のストアドを反映したところ・・・無事成功! あー良かった。

 

今まで権限ってあまり意識していなかったので、良い経験となりました。

The following two tabs change content below.

y.kanda

13年間IT系企業に勤めた後、フリーランスに転身しました。昔は新規開発案件でプログラムを組んでばかりでしたが、ここ数年は保守・運用がメインの仕事になっています。

最新記事 by y.kanda (全て見る)

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア