Tôi gần đây đã bắt đầu làm việc trên cơ sở dữ liệu oracle. Nói chung tôi có nhiều cửa sổ sqlplus mở để cơ sở dữ liệu oracle khác nhau. Khi chuyển từ một phiên sqlplus sang phiên khác, làm cách nào tôi có thể xem chi tiết phiên hiện tại cho mỗi phiên sqlplus? Bất kỳ trợ giúp nào cũng được đánh giá rất cao!sqlplus cách tìm thông tin chi tiết về phiên cơ sở dữ liệu hiện đang kết nối
Trả lời
Hãy nhìn vào một (c) Tanel Poder
này. Bạn có thể chạy nó từ glogin.sql của bạn (do đó, các cài đặt này sẽ cập nhật mỗi khi bạn kết nối, hoặc chỉ chạy nó theo cách thủ công. . đồng thời
-- 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% &[email protected]&_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% &[email protected]&_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;&[email protected]&_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
mẫu đầu ra:.
17:39:35 [email protected]> @sandbox
Connected.
18:29:02 [email protected]> @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
cảm ơn, nó thực hiện một công việc tuyệt vời bằng cách thay đổi tiêu đề cửa sổ. Bây giờ tôi có thể chỉ cần chọn cửa sổ sqlplus đúng từ thanh tác vụ của cửa sổ. –
select * from v$session
where sid = to_number(substr(dbms_session.unique_session_id,1,4),'XXXX')
chọn sid từ v $ mystat nơi rownum = 1?;) –
show user
để có được sử dụng kết nối
select instance_name from v$instance
để có được dụ hoặc đặt trong sqlplus
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
Hãy thử:
select * from v$session where sid = SYS_CONTEXT('USERENV','SID');
Bạn cũng có thể quan tâm đến this AskTom post
Sau seing nhận xét của bạn, bạn có thể làm:
SELECT * FROM global_name;
cảm ơn cade, nhưng tôi nghĩ rằng phản ứng tốt nhất là từ "có mặt ở đây", xem bình luận của tôi ở đó. cảm ơn một lần nữa! –
tôi biết đây là một câu hỏi cũ nhưng tôi đã thử tất cả các câu trả lời trên nhưng didnt làm việc trong trường hợp của tôi gì cuối cùng đã giúp tôi hiểu là
SHOW PARAMETER instance_name
Đây là câu trả lời đơn giản, chính xác. – udog
select sys_context('USERENV','INSTANCE_NAME') from dual;
&
select instance_name from v$instance;
sẽ cung cấp cho bạn tên ví dụ. Bạn cũng có thể sử dụng select * from global_name;
để xem tên toàn cục của cá thể.
Cách tiếp cận 'SHOW PARAMETER' yêu cầu truy cập vào' v $ instance', nhưng phương pháp 'SYS_CONTEXT' này không có. (+) – durette
Chúng tôi có thể nhận được các chi tiết và tình trạng của session từ bên dưới truy vấn như:
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'
/
Để biết thêm chi tiết: https://ora-data.blogspot.in/2016/11/query-session-details.html
Cảm ơn,
tìm thấy nó sử dụng chức năng sys_context [link] (http : //docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#g1513460) ví dụ: chọn sys_context ('USERENV', 'db_name') từ kép; hoặc đơn giản hơn từ v $ view ... chọn tên từ v $ database; Tôi nghĩ rằng lượt xem $ v thường bị hạn chế đối với DBA do đó sys_context sẽ là lựa chọn tốt nhất. –
Nếu đây là những gì bạn muốn, sau đó bạn có thể làm 'chọn * từ global_name' –