我觉得这个可以是一个小工具,所有我授权给了所有人(不过这也很危险)。
1:用SYS建立此PROC,
源码:
create or replace procedure kill_session(p_username varchar2,
p_sid number,
p_serial number) is
--Session exists flg
v_exist number := 0;
begin
--Query the session by identifier
select count(*)
into v_exist
from v$session s
where s.username = upper(p_username)
and s.sid = p_sid
and s.serial# = p_serial
and rownum =1;
--Ensure the session is already exists
if v_exist > 0 then
--Try to kill it
execute immediate 'alter system kill session ''' || p_sid || ',' ||
p_serial || '''';
else
--Echo error msg
dbms_output.put_line('No such session,username=' || p_username ||
',sid=' || p_sid || ',serial#=' || p_serial);
end if;
end kill_session;
2:授权给所有
GRANT EXECUTE ON KILL_SESSION TO PUBLIC;
3:用SCOOT登录后执行
begin
SYS.kill_session('SCOTT', 155, 28);
end;
分享到:
相关推荐
相反,这个存储过程会调用一个没有直接kill session功能的程序包,或者通过DBMS_LOCK包来间接实现杀会话的目的。这样可以避免普通用户直接访问到具有潜在危险的系统权限。 最后,将创建的存储过程赋予PUBLIC,即...
如果需要解锁某个被锁定的会话,可以使用`ALTER SYSTEM KILL SESSION`命令来强制终止会话。 ```sql ALTER SYSTEM KILL SESSION '535, #' IMMEDIATE; ``` 此处的`535`为会话SID,`#`为会话的串行号。执行该命令后,...
2. **oblkill**: 这可能是自定义的Oracle RAC阻塞检查或解决脚本。"OBL"可能代表"Oracle Blocking"的缩写。该脚本可能用于找出导致阻塞的会话并执行相应的操作,例如杀掉(kill)阻塞其他会话的SQL语句。 3. **...
- 使用`ALTER SYSTEM KILL SESSION`命令来手动终止死锁的会话。 - 定期执行数据库健康检查,预防死锁的发生。 4. **如何避免Oracle数据库性能下降**: - 定期分析SQL执行计划,确保使用最高效的查询路径。 - ...
- `PROCEDURE` 和 `FUNCTION`:用于创建自定义过程和函数。 - `DECLARE`:声明变量和游标。 - `EXCEPTION`:处理运行时错误。 5. **数据库对象管理**: - `GRANT` 和 `REVOKE`:分配和撤销用户权限。 - `...
- Oracle的`DBMS_LOCK`包提供了一些实用程序,如`REQUEST`和`RELEASE`,用于申请和释放自定义锁。 5. **优化锁策略** - 优化事务设计,减少锁定时间,可以有效避免锁冲突。例如,尽量保持事务短暂,避免长时间...
- **ExceptionSorter:**有效处理不可恢复的异常,如Oracle的session被kill,防止大量错误累积。 - **PSCache内存优化:**针对支持游标的数据库(Oracle、SQLServer等),优化PreparedStatement缓存机制,大幅提升...
3. **配置开机自启**:为了让GNOME在VNC Server启动时自动加载,我们需要创建一个自定义的systemd服务文件。 ```bash sudo nano /etc/systemd/system/vnc-gnome.service ``` 在文件中输入以下内容: ```ini ...
2. **自定义序列化**:如果需要更精细地控制序列化的过程,可以实现`writeObject()`和`readObject()`方法来自定义序列化和反序列化的行为。 ### XML解析技术与应用 XML(Extensible Markup Language,可扩展标记...