1、生成Kill Session語句
創(chuàng)新互聯(lián)專注于湞江企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。湞江網(wǎng)站建設(shè)公司,為湞江等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
select?'alter?system?kill?session?'''?||?SID?||','?||?SERIAL#?||?''';'?from
(
select?distinct?a.sid,?a.Serial#,?status,?machine,?LOCKWAIT,?logon_time
from?v$session?a,?v$locked_object?b
where?(a.status?=?'ACTIVE'?or?a.status?=?'INACTIVE')
and?a.sid?=?b.session_id
and?b.ORACLE_USERNAME='XYHISTEST'--加上用戶名是避免把其他系統(tǒng)的會話也關(guān)閉,以免傷及無辜
)
2、批量執(zhí)行第一步生成的語句
alter?system?kill?session?'sid,serial#';
--alter?system?kill?session?'6976,33967';
3、查詢oracle用戶名,機(jī)器名,鎖表對象
SELECT?l.session_id?sid,?s.serial#,?l.locked_mode,l.oracle_username,
l.os_user_name,s.machine,?s.terminal,?o.object_name,?s.logon_time
FROM?v$locked_object?l,?all_objects?o,?v$session?s
WHERE?l.object_id?=?o.object_id
AND?l.session_id?=?s.sid
ORDER?BY?sid,?s.serial#?;
/*或者
select?s.SID,?s.OSUSER,?p.spid?as?OSPID,?s.MACHINE,?s.TERMINAL,?s.PROGRAM
from?v$session?s,?v$process?p
where?s.sid?=?6??--session_id
and?s.paddr?=?p.addr;
*/
4、查詢是執(zhí)行何sql語句導(dǎo)致鎖表的
select?b.sql_text
from?v$session?a,?v$sql?b
where?a.sid?=?6?--session_id
and?a.SQL_ADDRESS?=?b.ADDRESS(+);
/*--或者
SELECT?l.session_id?sid,?s.serial#,?l.locked_mode,?l.oracle_username,?s.user#,
l.os_user_name,s.machine,?s.terminal,a.sql_text,?a.action
FROM?v$sqlarea?a,v$session?s,?v$locked_object?l
WHERE?l.session_id?=?s.sid
AND?s.prev_sql_addr?=?a.address
ORDER?BY?sid,?s.serial#;
*/
grant Connect to [用戶名]
如果只對單個表做限制
grant select on [表名] to [用戶名]
鎖是
數(shù)據(jù)庫保護(hù)數(shù)據(jù)表的一種機(jī)制,通常是自動的,分級別的,如果你訪問一個表的并發(fā)量太大,可以試試拆分這個表,比如按日期拆分成月表,或者利用oracle的功能(分區(qū))進(jìn)行拆分來分散壓力,如果沒有依據(jù)拆分的話,可以做成實(shí)體化快照,將一些查詢類的操作指向這個快照,分?jǐn)偙淼脑L問量,也可以通過提升硬件,比如上SSD磁盤,然后將這個表放到這個磁盤上,提高訪問速度。