ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

Oracle Clusterwareに登録したDBリソース名でoratabが更新されるけど、DBリソース名はDB_UNIQUE_NAMEと同じにしといた方が良い。

言いたい事は件名で語り尽くしてしまったけど、kwsk解説。
oratab に記載されるエントリは Oracle Clusterware の oraagentプロセス に
よって自動更新されます。下記マニュアルに記載の仕様やで。

Oracle Real Application Clustersインストレーション・ガイド
11g リリース2 (11.2) for Linux and UNIX Systems
B56272-07
7.3 Oracle RAC用のoratabファイル構成
http://docs.oracle.com/cd/E16338_01/install.112/b56272/undrstnd.htm#sthref347
> oratabファイルのエントリも、データベースをまだ実行したことのないノード上で
> 初めて起動したときDatabase Agentによって自動的に作成されます。

oraagentプロセスによって oratab が更新されている場合、
${GI_HOME}/log//agent/crsd/oraagent_oracle.log に
下記のような感じで oratab を更新している旨のログが出力されているハズです。

2015-10-05 23:14:30.389: [ora.aaaaa.db][2083088128]{1:44002:459}
[start] ConfigFile::updateInPlace file /etc/oratab is updated
2015-10-05 23:14:30.389: [ora.aaaaa.db][2083088128]{1:44002:459}
[start] sclsnInstAgent::sUpdateOratab file updated with
dbName aaaaa value /u01/app/oracle/product/11.2.0/dbhome_1:N
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^コレ

oratab に追記されるエントリされる DB名 は、初期化パラメータの
db_name や db_unique_name とは 無関係 に、Oracle Clusterware に
リソース登録した際のリソース名(srvctl add database -d ←コレ 〜)
が引き継がれるのを、11gR2のRAC環境で検証/確認しますた。

/u01/app/11.2.0/grid/bin/crsctl stat res -t
:
ora.aaaaa.db
      1        ONLINE  ONLINE       dbsv1121                 Open
      2        ONLINE  OFFLINE
^^^^^^^^^^^^^ DB名「aaaaa」でリソース登録されている。
:
srvctl start database -d aaaaa
cat /etc/oratab
:
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
+ASM1:/u01/app/11.2.0/grid:N            # line added by Agent
aaaaa:/u01/app/oracle/product/11.2.0/dbhome_1:N           # line added by Agent
^^^^^ DB名「aaaaa」のエントリがoratabに追記されている。
:

そして Oracle Clusterware に登録するDBリソース名ですが、
srvctl add databaseコマンドでは任意の文字列で登録できてしまうのですが、
下記マニュアルに記載のある通り、RAC環境 の oratab においては
DB_UNIQUE_NAME が記載されるのが想定される構成となりんす。

Oracle Real Application Clustersインストレーション・ガイド
11g リリース2 (11.2) for Linux and UNIX Systems
B56272-07
7.3 Oracle RAC用のoratabファイル構成
http://docs.oracle.com/cd/E16338_01/install.112/b56272/undrstnd.htm#BEIFCJBA
> データベースのエントリの構文は、次のとおりです。
> $DB_UNIQUE_NAME:$ORACLE_HOME:N

Oracle Clusterware に 登録する DBリソース名 に DB_UNIQUE_NAME以外 の
文字列を使用していた環境で、DBUA がエラーになると云う事象に遭遇したので、
取り敢えず DBリソース名=DB_UNIQUE_NAME にしといた方が無難なようです(;´・ω・)ゞ
#奥歯に物が挟まったような物言いなのは、DBリソース名=DB_UNIQUE_NAME を
#明示的に推奨してるドキュメントが無いからなんやで。どっかにないやろか...彡(゚)(゚)