OracleデータベースをUnixサーバーにインストールすると、インストールに使用するUnixユーザーIDがデータベースの所有者になります。どのUnixユーザーがOracleインストールの所有者であるかをシェルスクリプトで決定する最も信頼性が高く一般的な方法は何ですか?つまり、インストールによって作成されたファイルに対してgrepを実行してこの情報を見つけることができますか、それとも特定のディレクトリの特定のファイルに対してlsコマンドを使用することにしますか。チェックするファイルの名前も可変である場合、ファイルの名前とパスを決定する方法が必要になります。
「oratab」という名前のファイルを探します。通常は/ etcまたは/ var/opt/Oracleにあります。そこには、データベースごとに、そのデータベースのホームディレクトリの名前があります。そのディレクトリの所有者は、インストールの所有者であり、ホームから実行されているすべてのデータベースの所有者である必要があります。
Oratabファイルが/ var/opt/Oracleにあると仮定すると、これはある程度役立つ可能性があります。
ls -ld `grep 'your_db_name' /var/opt/Oracle/oratab|cut -d":" -f2`|cut -d" " -f4
プロセスの所有者を調べるここで提供される他のソリューションも同様に機能するはずですが、データベースが実行されている必要があります。このソリューションには、インスタンスを起動する必要がないという利点があります。
私はプロのOracleDBAではありませんが、データベースの所有者がOracleプロセスの所有者であるというのが私の経験です。チェックするための信頼できるプロセスはおそらくora_pmonでしょう。
ps -ef | grep <process name or id> | awk '{print $1}'
これにより、実行中のユーザープロセスの名前がわかります。