oracleが自動起動できない(oracle19c、RHEL8)
こんにちは。はすきーです。
これはみすてむずアドベントカレンダー2の12/9の記事です。
みんな力作揃いでこんな初心者丸出しな内容恥ずかしいけど、いつか誰かの役に立つかもしれない…という期待も込めて記事にすることにしました。
前提
・サーバー構築はほぼ初めて
・oracle-database-preinstallで事前準備をしてoracleをインストールした
・自動起動をするために以下の手順を実行した(主にこちらを参考にさせて頂きました)
・/etc/oratabファイルの設定変更(N→Y)
・環境変数を設定するファイルを作成(/etc/sysconfig/env.oracledb)
・systemdのユニットファイルを作成(/etc/systemd/system/oracledb.service)
・作成したユニットファイルの反映
・サービスの有効化
・シンボリックリンクの確認
・自動起動がうまくいかなくても、ユニットファイルに書いたExecStartのコマンドをoracleユーザーで叩くとDBは起動できる
…でもどうしても自動起動で失敗する
systemctl status oracle.service
oracle.service - Oracle Database Service Loaded: Loaded(/etc/systemd/system/oracle.service; enabled; vendor preset: disabled)
Active:failed(略)
var/log/massages
oracle.service:Failed to determine user credentials:Bad message
oracle.service:Failed at step USER swapping (ORACLE_HOME)/bin/dbstart:Bad massage
oracle.service:Main process exited, code=exited, status=217/USER
oracle.service:Failed with result 'exit-code'.
journalctlを見ても似た感じ
とにかくユーザーがダメって怒られてる
試行錯誤
検索するとtypoだったりgroupの指定が足りなかったりダブルクォーテーションで囲ってたから…みたいなのが出てくるのでユニットファイルに書かれたユーザーやグループにtypoがないか丁寧にゲシュタルト崩壊するくらい確認する
ほら!
だってpreinstallで作ってくれたもん問題ないよ。
/etc/group
oinstall:x:65535:oracle
/etc/passwd
oracle:x:65535:65535::/home/oracle:/bin/bash
辿り着いた真理
もう一回色々読んで回ったらこんなページに辿り着く
まぁ、ざっくり言うとsystemdユニットのみUIDまたはGID(もしくはその両方)65535に制限がかかるというもの。
あ??これじゃん…???
preinstallで作られたユーザーたちなので何でこんなIDになっちゃったのかまではよくわからなかったんだけど、preinstallあたりで色々迷走して間違えたものを入れていたようで、構築ほぼ初めてなのでID変えて回ったあとどうなるか(変えた結果また沼る可能性もあるし)その手前のインストールとかも復習になると思ったので、爆破しました。
そういえばこのoracleユーザー、ログインできるはずなのにいわゆるログインループに陥る問題もあったけど…もしかして…
検証というか、やり直した結果
やり直した後、UID、GIDともに65535とは違うIDになっていて、自動起動も無事できるようになりました。なんの苦労もなく。あっさりと!!
ログインできない問題もこれでしたね…
爆破で解決することもある。
インストールするバージョンはしっかり確認してインストールしよう!!
おつかれさまでした!!はずかし!!
アドカレおかわり
初めてのアドカレでいくつかネタを没ったんだけど、一個は書くだけ書いててせっかくなので一緒に公開します。スナック感覚のアドカレおかわり!
明日の担当は桐山さんです!