見出し画像

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になっていて、自動起動も無事できるようになりました。なんの苦労もなく。あっさりと!!
ログインできない問題もこれでしたね…

爆破で解決することもある。
インストールするバージョンはしっかり確認してインストールしよう!!
おつかれさまでした!!はずかし!!

アドカレおかわり

初めてのアドカレでいくつかネタを没ったんだけど、一個は書くだけ書いててせっかくなので一緒に公開します。スナック感覚のアドカレおかわり!

明日の担当は桐山さんです!


この記事が気に入ったらサポートをしてみませんか?