web-dev-qa-db-ja.com

sqlplus現在接続されているデータベースセッションの詳細を見つける方法

私はごく最近、Oracleデータベースで作業を始めました。一般に、さまざまなOracleデータベースに対して開いている多くのsqlplusウィンドウがあります。あるsqlplusセッションから別のセッションに切り替えるとき、各sqlplusセッションの現在のセッションの詳細を表示するにはどうすればよいですか?どんな助けも大歓迎です!

17

これを見てください (c) Tanel Poder 。 glogin.sqlから実行できます(したがって、これらの設定は接続するたびに更新されるか、単に手動で実行します。注意Host titleコマンド-sql * plusコンソールウィンドウのタイトルをセッション情報で変更します-多くのウィンドウを同時に開くと非常に便利です。

-- the Who am I script

def   mysid="NA"
def _i_spid="NA"
def _i_cpid="NA"
def _i_opid="NA"
def _i_serial="NA"
def _i_inst="NA"
def _i_Host="NA"
def _i_user="&_user"
def _i_conn="&_connect_identifier"

col i_username head USERNAME for a20
col i_sid head SID for a5 new_value mysid
col i_serial head SERIAL# for a8 new_value _i_serial
col i_cpid head CPID for a15 new_value _i_cpid
col i_spid head SPID for a15 new_value _i_spid
col i_opid head OPID for a5 new_value _i_opid
col i_Host_name head Host_NAME for a25 new_value _i_Host
col i_instance_name head INST_NAME for a12 new_value _i_inst
col i_ver head VERSION for a10
col i_startup_day head STARTED for a8
col _i_user noprint new_value _i_user
col _i_conn noprint new_value _i_conn
col i_myoraver noprint new_value myoraver

select 
    s.username          i_username, 
    i.instance_name i_instance_name, 
    i.Host_name         i_Host_name, 
    to_char(s.sid)          i_sid, 
    to_char(s.serial#)      i_serial, 
    (select substr(banner, instr(banner, 'Release ')+8,10) from v$version where rownum = 1) i_ver,
    (select  substr(substr(banner, instr(banner, 'Release ')+8),
            1,
            instr(substr(banner, instr(banner, 'Release ')+8),'.')-1)
     from v$version 
     where rownum = 1) i_myoraver,
    to_char(startup_time, 'YYYYMMDD') i_startup_day, 
    p.spid              i_spid, 
    trim(to_char(p.pid))        i_opid, 
    s.process           i_cpid, 
    s.saddr             saddr, 
    p.addr              paddr,
    lower(s.username) "_i_user",
    upper('&_connect_identifier') "_i_conn"
from 
    v$session s, 
    v$instance i, 
    v$process p
where 
    s.paddr = p.addr
and 
    sid = (select sid from v$mystat where rownum = 1);

-- Windows CMD.exe specific stuff

-- Host title %CP% &_i_user@&_i_conn [sid=&mysid ser#=&_i_serial spid=&_i_spid inst=&_i_inst Host=&_i_Host cpid=&_i_cpid opid=&_i_opid]
   Host title %CP% &_i_user@&_i_conn [sid=&mysid #=&_i_serial]
-- Host doskey /exename=sqlplus.exe desc=set lines 80 sqlprompt ""$Tdescribe $*$Tset lines 299 sqlprompt "SQL> "

-- short xterm title
-- Host echo -ne "\033]0;&_i_user@&_i_inst &mysid[&_i_spid]\007"
-- long xterm title
--Host echo -ne "\033]0;Host=&_i_Host inst=&_i_inst sid=&mysid ser#=&_i_serial spid=&_i_spid cpid=&_i_cpid opid=&_i_opid\007"


def myopid=&_i_opid
def myspid=&_i_spid
def mycpid=&_i_cpid

-- undef _i_spid _i_inst _i_Host _i_user _i_conn _i_cpid

サンプル出力:

17:39:35 SYSTEM@saz-dev> @sandbox
Connected.
18:29:02 SYSTEM@sandbox> @me

USERNAME             INST_NAME    Host_NAME                 SID   SERIAL#  VERSION    STARTED  SPID            OPID  CPID            SADDR    PADDR
-------------------- ------------ ------------------------- ----- -------- ---------- -------- --------------- ----- --------------- -------- --------
SYSTEM               xe           OARS-SANDBOX              34    175      11.2.0.2.0 20130318 3348            30    6108:7776       6F549590 6FF51020

1 row selected.

Elapsed: 00:00:00.04
7
be here now
show user

接続ユーザーを取得する

 select instance_name from v$instance

インスタンスを取得するか、sqlplusに設定する

set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
24
igr

これは古い質問ですが、上記の回答はすべて試してみましたが、私の場合はうまくいきませんでした。最終的に私を助けたのは

SHOW PARAMETER instance_name

17
rajesh
select sys_context('USERENV','INSTANCE_NAME') from dual;

select instance_name from v$instance;

インスタンス名が表示されます。 select * from global_name;を使用して、インスタンスのグローバル名を表示することもできます。

7
Saurabh Tyagi

試してください:

select * from v$session where sid = SYS_CONTEXT('USERENV','SID');

このAskTomの投稿 にも興味があるかもしれません

コメントを取得したら、次のことができます。

SELECT * FROM global_name;
3
A.B.Cade
select * from v$session
where sid = to_number(substr(dbms_session.unique_session_id,1,4),'XXXX')
0

次のクエリから session の詳細とステータスを取得できます。

select ' Sid, Serial#, Aud sid : '|| s.sid||' , '||s.serial#||' , '||
       s.audsid||chr(10)|| '     DB User / OS User : '||s.username||
       '   /   '||s.osuser||chr(10)|| '    Machine - Terminal : '||
       s.machine||'  -  '|| s.terminal||chr(10)||
       '        OS Process Ids : '||
       s.process||' (Client)  '||p.spid||' (Server)'|| chr(10)||
       '   Client Program Name : '||s.program "Session Info"
  from v$process p,v$session s
 where p.addr = s.paddr
   and s.sid = nvl('&SID',s.sid)
   and nvl(s.terminal,' ') = nvl('&Terminal',nvl(s.terminal,' '))
   and s.process = nvl('&Process',s.process)
   and p.spid = nvl('&spid',p.spid)
   and s.username = nvl('&username',s.username)
   and nvl(s.osuser,' ') = nvl('&OSUser',nvl(s.osuser,' '))
   and nvl(s.machine,' ') = nvl('&machine',nvl(s.machine,' '))
   and nvl('&SID',nvl('&TERMINAL',nvl('&PROCESS',nvl('&SPID',nvl('&USERNAME',
       nvl('&OSUSER',nvl('&MACHINE','NO VALUES'))))))) <> 'NO VALUES'
/

詳細: https://ora-data.blogspot.in/2016/11/query-session-details.html

おかげで、

0
Sapna