====== SESSIONS ====== * utilisateur courant select user from dual * sessions en cours Standalone (SQLPLUS) SET lines 500 col LOGON_TIME format a15 col MACHINE format a20 col PID format a8 col SID format a8 col ser# format a8 col username format a20 col os_user format a18 col BOX format a20 SELECT b.LOGON_TIME, b.MACHINE, SUBSTR(a.spid,1,9) pid, SUBSTR(b.sid,1,5) sid, SUBSTR(b.serial#,1,5) ser#, SUBSTR(b.machine,1,6) box, SUBSTR(b.username,1,10) username, SUBSTR(b.osuser,1,8) os_user, SUBSTR(b.program,1,30) program, b.blocking_session FROM v$session b, v$process a WHERE b.paddr = a.addr AND TYPE='USER' ORDER BY spid; * sessions en cours RAC (SQLPLUS) SET lines 500 col LOGON_TIME format a15 col MACHINE format a20 col PID format a8 col SID format a8 col ser# format a8 col username format a20 col os_user format a18 col BOX format a20 SELECT b.LOGON_TIME, b.MACHINE, SUBSTR(a.spid,1,9) pid, SUBSTR(b.sid,1,5) sid, SUBSTR(b.serial#,1,5) ser#, SUBSTR(b.machine,1,6) box, SUBSTR(b.username,1,10) username, SUBSTR(b.osuser,1,8) os_user, SUBSTR(b.program,1,30) program, b.blocking_session FROM gv$session b, gv$process a WHERE b.paddr = a.addr AND TYPE='USER' ORDER BY spid; * sessions en cours (SQL DEV) SET lines 500 col LOGON_TIME format a15 col MACHINE format a20 col PID format a8 col SID format a8 col ser# format a8 col username format a20 col os_user format a18 col BOX format a20 SELECT b.LOGON_TIME, b.MACHINE, SUBSTR(a.spid,1,9) pid, SUBSTR(b.sid,1,5) sid, SUBSTR(b.serial#,1,5) ser#, SUBSTR(b.machine,1,6) box, SUBSTR(b.username,1,10) username, SUBSTR(b.osuser,1,8) os_user, SUBSTR(b.program,1,30) program FROM v$session b, v$process a WHERE b.paddr = a.addr AND TYPE='USER' ORDER BY spid; * sessions en cours RAC (SQL DEV) SELECT DISTINCT q.sql_id, q.plan_hash_value, p.spid, s.STATE, s.username, s.INST_ID, y.INSTANCE_NAME, y.HOST_NAME "DATABASE HOST", s.machine "CLIENT HOST", s.sid, s.program, s.serial#, s.blocking_session_status, s.blocking_session, w.event, SUBSTR(q.sql_text, 1, 100) sql_text FROM gv$session s JOIN gv$sql q ON q.address = s.sql_address AND q.hash_value = s.sql_hash_value JOIN gv$process p ON p.addr = s.paddr JOIN gv$session_wait w ON w.sid = s.sid JOIN gv$instance y on y.INST_ID=s.INST_ID WHERE s.status = 'ACTIVE' AND w.event NOT LIKE 'SQL%' AND w.event NOT LIKE 'rdbms%' ORDER BY q.sql_id; * generate kill session select 'alter system kill session '||''''||sid||','||serial#||',' ||'@'||INST_ID||''''||' immediate;' from gv$session where USERNAME='xxxxx' order by INST_ID; * lock SELECT 'Instance '||s1.INST_ID||' '|| s1.username || '@' || s1.machine || ' ( SID=' || s1.sid || ','|| s1.serial#||s1.status|| ' ) is blocking ' || s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' ||s2.sql_id FROM gv$lock l1, gv$session s1, gv$lock l2, gv$session s2 WHERE s1.sid=l1.sid AND s1.inst_id=l1.inst_id AND s2.sid=l2.sid AND s2.inst_id=l2.inst_id AND l1.BLOCK=1 AND l2.request > 0 AND l1.id1 = l2.id1 AND l2.id2 = l2.id2 ; * récupérer la transaction avec un PID determine col sid format 9999 col pid format 9999 col serial# format 99999 col process format a8 heading "unixPID" col spid format a8 heading "unixPID" col username format a9 col addr format a11 col program format a20 trunc col logon_time format a18 col osuser format a8 heading unixUsr col p_user format a9 heading unixUsr col terminal format a7 heading unixtrm col command format 99 heading Cd col machine format a7 col action format a7 col module format a10 set pagesize 24 prompt "Enter the Oracle Session ID (SID) user in question" select p.PID, p.SERIAL#, p.USERNAME p_user, p.SPID, to_char(s.logon_time,'DD-MON-YY HH24:MI:SS') Logon_Time, s.program, s.command, s.sid, s.serial#, s.username, s.process, s.machine, s.action, s.module, s.osuser, s.terminal from v$process p, v$session s where s.sid = &sid and p.addr = s.paddr order by s.logon_time / * Nombre de session en cours select count(MACHINE) from v$session; * modifier le nombre sessions possible (processes) SQL> show parameter processes; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 1 db_writer_processes integer 2 gcs_server_processes integer 2 global_txn_processes integer 1 job_queue_processes integer 80 log_archive_max_processes integer 4 processes integer 400 SQL> create pfile=/tmp/pfile_db1.ora from spfile; SQL> alter system set processes=1000 scope spfile; SQL> shutdown immediate SQL> startup mount SQL> alter database open