ngtokuの日記

主に雑記帳です。SNSではngtokuのID取れなかったんで、別のIDでやってます。

備忘メモ(SQL*PlusでORACLE_SID環境変数が効かない)

ベンダーさんにお願いしてクラウド上にDBサーバとクライアントサーバ(Linux)を構築してもらった際、環境変数ORACLES_SIDを設定しているにもかかわらずSQL*PlusでSID指定でないと接続できないと報告したら「DBサーバとクライアントサーバが別になっている場合はコマンド上でSIDを明示しないと動かない」と返信貰ったので、

ん?つまり環境変数ORACLE_SIDを設定していてもこれではだめで

$ sqlplus scott/tiger

これに置き換えないと動かないと?そんなアホな。

$ sqlplus scott/tiger@SID

と思ったので「SQLPlus 環境変数」で検索してみたら、検索1ページ目のトップに回答が。 docs.oracle.com

パラメータまたは変数 説明
TWO_TASK 接続文字列を指定するUNIX環境変数。データベースを指定しない接続は、TWO_TASKに指定したデータベースに接続されます。

例
TWO_TASK=MYDB
export TWO_TASK
sqlplus hr
これは、次のように解釈されます。
sqlplus hr@MYDB

公式のユーザーガイドにズバリ回答書いてあるやん。しかもOracle12のユーザーズガイドだから随分前から存在する、即ち枯れた情報みたいですな。
UNIX系で環境変数ORACLE_SIDが効かない場合は環境変数TWO_TASKを設定するのがお作法なのかな。
設定したらSQL*PlusのコマンドにSIDを指定しなくても繋がりました。