一、数据库会话数目发芽
/ G2 r& {. ]: z8 s* C5 i5 w5 e+ t
- s, T; J D. z' Y1 r 发芽当前数据库会话数目:select * from v$session3 p+ ]- K% Y# [( b% c7 y+ V8 |" s
! @- y! H8 R9 a; h9 S S0 ~9 y
改削数据库最大会话数目:alter system set processes=500 scope=spfile (在呼吁模式下执行)
3 I U% g. X. s
+ V0 x2 a) {) ? 查看当前数据库最大会话上限:show parameters processes; 8 |. A" V" ]% @. ]9 z6 r* y
7 x- H! U" h3 ~8 j% u
查看当前数据库DBLINK最多可打开的毗连数目:show parameters open_links;
9 t; Q8 j$ B& r/ R1 K f7 b8 f. E: s$ }
二、删除被锁住的Session
* K n/ w2 ?) k n y- W
5 @% P8 E, T1 l# n4 } 1、一般的话只要下面两条呼吁就可以:
3 \+ Y0 c% _+ f$ f# i( g 8 x5 X8 X. X0 P, V6 P
(1)select t1.sid,t1.serial#,t1.username,t1.logon_time from v$session t1,) W ~# x D% L1 D! C9 m
( N: B8 {, @3 B v$locked_object t2 where t1.sid=t2.session_id order by t1.logon_time; 8 R* g7 f5 u/ g
( ^, ^( H( o: u# M" h, J (2)alter system kill session 'sid, serial#';
* [' _- S7 q9 l5 Q$ w
8 {! x1 r1 W' V- a 备注:此鱿辅2)中的sid和serial#是(1)中发芽出来的。
( F5 ?- p) H/ `/ s. E + z7 f: J$ B. C
2、有时这种体例仍是删不失踪,就要用ORAKILL呼吁了
5 Z* V' P1 l4 T5 Z# G . f" |) P9 x% X) c+ y5 F
(1)select object_name,machine,s.sid,s.serial# from v$locked_object l,& Q0 l8 n6 Z/ N3 {0 W2 T
" S. q: c7 [: o6 g5 c, I' q$ E dba_objects o ,v$session s where l.object_id=o.object_id and l.session_id=s.sid;& N! B, l* L3 y2 n
# E/ l, S9 u6 M/ N+ l2 C. O9 ?
(2)select spid ,osuser,s.program from v$session s,
. D/ I# K$ }: a2 q% `! Z4 f( Z& i d' p
3 g3 l. m$ r, N" h) r1 C v$process p where s.paddr=p.addr and s.sid=93;
3 [/ W/ n. i6 L* w2 M! k# C8 ~; `
* j; J6 g1 h# Z6 ]0 L. P6 v! v& W* n (3)orakill sid spid(unix 系统下,root身份:kill sid spid)' `# M+ d9 R3 H* V! F, ^; X4 D
- C8 M7 U; O4 m8 p! X
声名:9 @7 G9 B0 [5 V- v) `; O
2 _ `6 v- O* t' c9 m 第一条2(1)和1(1)效不美观是一样的,只是查出的内容更多,我们要的,关头是这个sid,
: c% X# D% h! M& B
- e* x: k- ^% I* S 第二条中的93,就是第一条中发芽出的sid;
% t' {: u P: [6 S9 m1 U+ G/ g
2 L+ z$ i% Y2 G# P: ~ 第三条要在系统下进行,cmd下直接使用,spid就是第二条中查出来的spid.5 s* _+ a) M1 D" i! s/ R. T, m2 L; T m' R7 p
/ o/ O/ o' U5 j5 t8 M! { 此外,unix下的,没现实使用,原例子是这么写的 kill -9 12345(12345是spid,前面-9小我估量是数据库的sid吧…) |