web-dev-qa-db-ja.com

Linux環境にインストールされているOracleのインスタンスの数を特定する方法

昨日は、Oracleのインストールとサービスの開始とシャットダウンに関するトレーニングを1回受けていました。そこで、LinuxマシンでOracleインスタンスを起動およびシャットダウンするためのLinuxコマンドについて知りました。

実行中のインスタンスを特定するには:以下のコマンドは、そのマシンで現在実行中のすべてのOracleインスタンスを返します。

ps -ef | grep pmon

このコマンドは次の結果を返します。

Oracle    823     1  0 Dec03 ?        00:00:17 ora_pmon_instance1
Oracle  19632     1  0 Nov17 ?        00:06:35 ora_pmon_instance2
Oracle  24199     1  0 Nov20 ?        00:05:23 ora_pmon_instance3

どこ instance1instance2およびinstance3は、現在実行中のLinux on Oracleの3つのインストールです。

私のクエリ:したがって、ps -efは、現在実行中のプロセスのみを表示します。と仮定して、instance3がダウンしているため、そのインスタンスを起動する必要があります。ただし、マシン上にOracleインスタンスがいくつあるかはわかりません。

このインスタンスがダウンしていることをどのようにして知ることができますか?

Windowsには、サービスと呼ばれる方法があり、これらのインストールがOracle for Windowsで行われていることを知ることができます。

2
Rohit Batta

間違いのない方法はありませんが、ここにあなたのためのアイデアのリストがあります:

/ etc/oratab:

oratab内のSIDのリストを提供する小さなスクリプト:

cat /etc/oratab | grep -v '^#\|^\s*$' | cut -d: -f 1

$ Oracle_HOME/dbs

上記のスクリプトを変更して、oratabにリストされているすべての$Oracle_HOMEsを調べ、インスタンスのinitSID.oraおよびspfilesを検索できます。

for ORACLEHOME in `cat oratab | grep -v '^#\|^\s*$' | cut -d: -f 2 |uniq`
do 
  ls -1 $ORACLEHOME/init*.ora | sed -n 's/init\(.*\).ora/\1/p'
  ls -1 $ORACLEHOME/spfile*.ora | sed -n 's/spfile\(.*\).ora/\1/p'
done

tnsnames.ora/listener.ora

別のオプションは、各$Oracle_HOME/network/adminを調べ、tnsnames.oraおよびlistener.oraファイルを分析して、設定されているインスタンスを確認することです。

すでに実行中のインスタンス

pmon検索でこれをすでにカバーしています。 lsnrctl statusを使用して、リスナーが現在リクエストを処理しているインスタンスを確認することもできます。

2
Philᵀᴹ

RACやASMが使用されている場合によくあるように、Oracleの再起動が行われている場合は、以下を使用できます。

crsctl stat res -t -w "TYPE = ora.database.type"|awk '/^ora./ {l=$0;} !/^ora./ { if ( l > "" ) l=l " " $0; print l;l="";}'|grep  ${HOSTNAME%%.*}

現在のホストで定義されているデータベースを一覧表示します。これはWindowsサービスに非常に近いものです。これを次の行にパイプしてデータベース名を除外し、インスタンスがリストされているデータベースのステータスを要求できます。

awk -F"." '{print $2}' |while read db
do
  srvctl status database -d $db
done| grep  ${HOSTNAME%%.*}

RACの場合、これにより、他のノードで実行されているインスタンスが再び導入されるため、現在のホスト名を使用してフィルタリングします。

1
ik_zelf

通常、私は/etc/oratabエントリ。しかし、ファイルを編集する権限を持つ誰かによって編集される可能性があるので、これもまた間違いのないことではありません。

例えば、

-sh-4.1$ ls -lrt /etc/oratab
-rw-rw-r-- 1 Oracle oinstall 729 Nov  2 12:30 /etc/oratab
-sh-4.1$ cat /etc/oratab
#



# This file is used by Oracle utilities.  It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.

# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $Oracle_SID:$Oracle_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $Oracle_SID are not allowed.
#
#
orcl:/scratch/app/Oracle/product/12.1.0/dbhome_1:N

orclという名前のデータベースインスタンスが1つしかないので、ファイルにはエントリが1つしかありません。複数のエントリがある場合、[〜#〜] dbca [〜#〜]root.shによって作成されたファイルに新しいエントリをそれぞれ追加して追加します。

0
Lalit Kumar B