昨日は、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
どこ instance1
、instance2
およびinstance3
は、現在実行中のLinux on Oracleの3つのインストールです。
私のクエリ:したがって、ps -ef
は、現在実行中のプロセスのみを表示します。と仮定して、instance3
がダウンしているため、そのインスタンスを起動する必要があります。ただし、マシン上にOracleインスタンスがいくつあるかはわかりません。
このインスタンスがダウンしていることをどのようにして知ることができますか?
Windowsには、サービスと呼ばれる方法があり、これらのインストールがOracle for Windowsで行われていることを知ることができます。
間違いのない方法はありませんが、ここにあなたのためのアイデアのリストがあります:
/ etc/oratab:
oratab
内のSIDのリストを提供する小さなスクリプト:
cat /etc/oratab | grep -v '^#\|^\s*$' | cut -d: -f 1
$ Oracle_HOME/dbs
上記のスクリプトを変更して、oratab
にリストされているすべての$Oracle_HOME
sを調べ、インスタンスの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
を使用して、リスナーが現在リクエストを処理しているインスタンスを確認することもできます。
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の場合、これにより、他のノードで実行されているインスタンスが再び導入されるため、現在のホスト名を使用してフィルタリングします。
通常、私は/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によって作成されたファイルに新しいエントリをそれぞれ追加して追加します。