株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

SQL*Plusのプロンプトに接続先コンテナ名を表示する方法

マルチテナントデータベースを使用してると、現在のセッションの接続先である コンテナが何であるかを知りたくなる瞬間が多くあります。 もちろん 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>
参考

以下の記事を参考にさせていただきました。感謝!

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ