2020.01.27   2021.02.10

【Oracle12c】qopatchエラー

Oracle    

【この記事は2020-01-27に他ブログで掲載したものです】

2週間前から出ていたqopatchエラーの原因がやっと分かったのでメモ書きする。

そもそもqopatchとは

一言で言えば、簡単に適用済みパッチの状況を確認できる機能のこと。

Oracle DBのパッチはOSコマンド(Linux Red Hat) である「OPatch」コマンドで適用する。
適用したパッチの確認は、11g以前では同じ「OPatch」コマンドを使用して確認する仕様だった。

そして、Oracle DB 12cなってからは適用済みパッチをSQLベースで確認できるようになった。
具体的には、DBMS_QOPATCHが提供するXMLドキュメントを返すファンクションを使用する。
そのファンクションがqopatch。

エラーの発生タイミング

インスタンスの起動時になぜか毎回発生する。

DBインスタンスは夜間停止しており、朝8時になるとJP1に設定したhogeora(仮名)というOSユーザーでシェルを実行し、インスタンスを起動している。

エラー内容

アラートログに「パーミッションがおかしい」(超訳)と書いてあった。

原因

インスタンス起動をoracleユーザー(DBインストールユーザー)で実行していなかったから。
私の扱っているシステムではoracleユーザーの代わりに、hogeoraというOSユーザーでDBの管理をしている。
しかし、DBのインストールはoracleユーザーで実行しており、製品系のコマンドファイルの所有者はoracleとなっていた。
起動コマンドはスティッキービットによりhogeoraで実行しても、oracleユーザーとして実行されるため、特に問題は発生しないが、起動処理の流れの中で実行されるqopatchのファンクションについてはスティッキービットが付与されていないため、hogeoraとして処理が実行される。
qopatchは実行内容をORACLE_HOMEの下のlogディレクトリにログ出力しようとするが、hogeoraでは権限がないのでログが吐けず怒られていたというオチ。

解決策

インスタンスの起動については、oracleユーザーで実行すれば良い。

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信