技術ブログ
マルチテナントデータベースを使用してると、現在のセッションの接続先である コンテナが何であるかを知りたくなる瞬間が多くあります。 もちろん show con_name や select sys_context('userenv', 'con_name') from dual;を実行すれば、接続先コンテナはわかりますが、プロンプトに表示されていると便利でしょう。
また、端末の出力をメモとして記録するとき、特に意識しなくても接続先コンテナが自然と記録に残るため、検証に便利です。
SQL*Plusのプロンプトに接続先コンテナ名を表示するためには、環境変数SQLPATHでポイントされるディレクトリにlogin.sqlというファイルを作成し、以下の内容を記載しておきます。
col CONT new_value CONT noprint select sys_context('userenv', 'con_name') as CONT from dual; set sqlprompt "_USER'@'_CONNECT_IDENTIFIER##&&CONT> "
ただし、この方法では、ALTER SESSION SET CONTAINER = <コンテナ名>; で接続先コンテナを 変更した場合に、併せてプロンプトが変更されません。変更後あらためて login.sqlを実行する必要があります。
[oracle@l63x64a ~]$ sqlplus system/oracle SQL*Plus: Release 12.1.0.1.0 Production on 金 8月 2 02:02:42 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. 最終正常ログイン時間: 金 8月 02 2013 01:51:56 -04:00 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options に接続されました。 SYSTEM@c101cdb##CDB$ROOT> ALTER SESSION SET CONTAINER = PDB1; セッションが変更されました。 SYSTEM@c101cdb##CDB$ROOT> show con_name CON_NAME ------------------------------ PDB1 SYSTEM@c101cdb##CDB$ROOT> @login SYSTEM@c101cdb##PDB1>
以下の記事を参考にさせていただきました。感謝!