oracle

Oracle 接続先確認

SYS_CONTEXT()ファンクションを使うと各種接続先の情報、接続元の情報を確認できます。複数接続先にて作業する可能性がある際は念のために接続先を確認してから作業にとりかかりましょう。作業を始める前にエビデンスとしてこちらの結果出力を保持しておくと重宝します。

プラガブルDBの確認および切り替えはこちらです。

簡易版

select 1 LNO,'SERVICE_NAME' label,
SYS_CONTEXT('USERENV','SERVICE_NAME') USERENV_ITEM
from dual UNION
select 2 LNO,'INSTANCE_NAME' label,
SYS_CONTEXT('USERENV','INSTANCE_NAME') USERENV_ITEM
from dual UNION
select 3 LNO,'SESSION_USER' label,
SYS_CONTEXT('USERENV','SESSION_USER') USERENV_ITEM
from dual
order by 1
;
実行結果例
       LNO LABEL            USERENV_ITEM
---------- ---------------- ------------------------
         1 SERVICE_NAME     ora19.box
         2 INSTANCE_NAME    ora19
         3 SESSION_USER     SOONI

SQL>

より詳細版

サービス名はDB名+DBドメイン名から構成される。
DB_UNIQUE_NAME+”.”+DB_DOMAIN = SERVICE_NAME

select 1 LNO,'DB_NAME' label,
SYS_CONTEXT('USERENV','DB_NAME') USERENV_ITEM,'データベース名' note
from dual UNION
select 2 LNO,'DB_UNIQUE_NAME' label,
SYS_CONTEXT('USERENV','DB_UNIQUE_NAME') USERENV_ITEM,'DBユニーク名' note
from dual UNION
select 3 LNO,'DB_DOMAIN' label,
SYS_CONTEXT('USERENV','DB_DOMAIN') USERENV_ITEM,'DBドメイン' note
from dual UNION
select 4 LNO,'SERVICE_NAME' label,
SYS_CONTEXT('USERENV','SERVICE_NAME') USERENV_ITEM,'サービス名' note
from dual UNION
select 5 LNO,'INSTANCE_NO' label,
SYS_CONTEXT('USERENV','Instance') USERENV_ITEM,'インスタンスNo' note
from dual UNION
select 6 LNO,'INSTANCE_NAME' label,
SYS_CONTEXT('USERENV','INSTANCE_NAME') USERENV_ITEM,'インスタンス名' note
from dual UNION
select 7 LNO,'SERVER_HOST' label,
SYS_CONTEXT('USERENV','SERVER_HOST') USERENV_ITEM,'インスタンス稼働ホスト' note
from dual UNION
select 8 LNO,'SESSION_USER' label,
SYS_CONTEXT('USERENV','SESSION_USER') USERENV_ITEM,'セッションユーザ' note
from dual UNION
select 9 LNO,'SID' label,
SYS_CONTEXT('USERENV','SID') USERENV_ITEM,'セッションID' note
from dual UNION
select 10 LNO,'SERIAL#' label,
to_char( SERIAL#) USERENV_ITEM,'SERIAL#' note
from V$SESSION WHERE SID = USERENV('SID') UNION
select 11 LNO,'SERVER' label,
SERVER USERENV_ITEM,'接続モード' note
from V$SESSION WHERE SID = USERENV('SID') UNION
select 12 LNO,'HOST' label,
SYS_CONTEXT('USERENV','HOST') USERENV_ITEM,'クライアント名' note
from dual UNION
select 13 LNO,'IP_ADDRESS' label,
SYS_CONTEXT('USERENV','IP_ADDRESS') USERENV_ITEM,'クライアントIP' note
from dual 
order by 1
;
実行結果例
       LNO LABEL            USERENV_ITEM                 NOTE
---------- ---------------- ---------------------------- ------------------------
         1 DB_NAME          ora19                        データベース名
         2 DB_UNIQUE_NAME   ora19                        DBユニーク名
         3 DB_DOMAIN        box                          DBドメイン
         4 SERVICE_NAME     ora19.box                    サービス名
         5 INSTANCE_NO      1                            インスタンスNo
         6 INSTANCE_NAME    ora19                        インスタンス名
         7 SERVER_HOST      vm102                        インスタンス稼働ホスト
         8 SESSION_USER     SOONI                        セッションユーザ
         9 SID              107                          セッションID
        10 SERIAL#          55216                        SERIAL#
        11 SERVER           DEDICATED                    接続モード
        12 HOST             SOFFICE\DESKTOP-SOONIPC      クライアント名
        13 IP_ADDRESS       192.168.56.1                 クライアントIP

13行が選択されました。

SQL>

もし「ORA-00942: 表またはビューが存在しません。」とエラーが出てしまった場合はV$SESSIONへのアクセス権限を保持していないと思われます。この場合SELECT_CATALOG_ROLEを付与してあげると解決します。但しロールの付与が反映されるには再度ログインし直す必要があります。
例)grant SELECT_CATALOG_ROLE to scott;

SQL*plusで使う場合こちらも使ってください
set lin 200
set pagesize 50
set tab off
col label for a16
col userenv_item for a28
col note for a24
スポンサーリンク
タイトルとURLをコピーしました