ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RAC可以杀掉其他实例上的会话

RAC可以杀掉其他实例上的会话

原创 Linux操作系统 作者:perfychi 时间:2012-07-25 14:53:18 0 删除 编辑

对于RAC环境Oracle11g增加了新的语句,使得DBA在当前实例就可以杀掉RAC其他实例上的会话。


11G引入的这个命令使得DBA在管理会话时不需要在登陆到会话所在的实例,而在任意一个实例上都可以执行:

SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Solaris: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SQL> SELECT INSTANCE_NUMBER, INSTANCE_NAME, HOST_NAME FROM V$INSTANCE;

INSTANCE_NUMBER INSTANCE_NAME HOST_NAME
--------------- ---------------- -------------------------------------
1 ractest1 ser1

SQL> SELECT INST_ID, SID, SERIAL#, USERNAME FROM GV$SESSION
2 WHERE USERNAME IS NOT NULL;

INST_ID SID SERIAL# USERNAME
---------- ---------- ---------- ------------------------------
1 51 20 SYSTEM
1 52 8 SYS
1 161 68 SYSTEM
1 165 9 SYS
1 166 9 SYS
2 63 29253 TEST
2 64 1275 SYS
2 135 10906 SYSTEM
2 139 9249 SYS
2 142 9 SYS
2 143 11 SYS

已选择11行。

可以看到,当前实例为实例1,而TEST用户登陆的实例是实例2,通过下面的语句可以在实例1杀掉实例2上的会话:

SQL> ALTER SYSTEM KILL SESSION '63, 29253, @2';

系统已更改。

在刚才登陆到实例2TEST用户的会话上执行查询,发现会话已经被杀掉:

SQL> SELECT * FROM DUAL;
SELECT * FROM DUAL
*
1 行出现错误:
ORA-00028:
您的会话己被终止

在实例1上检查会话状态:

SQL> SELECT INST_ID, SID, SERIAL#, USERNAME, STATUS FROM GV$SESSION
2 WHERE USERNAME IS NOT NULL;

INST_ID SID SERIAL# USERNAME STATUS
---------- ---------- ---------- ------------------------------ --------
1 51 20 SYSTEM ACTIVE
1 52 8 SYS INACTIVE
1 161 143 SYSTEM ACTIVE
1 165 9 SYS INACTIVE
1 166 9 SYS INACTIVE
2 64 1275 SYS INACTIVE
2 135 10947 SYSTEM ACTIVE
2 139 9249 SYS INACTIVE
2 142 9 SYS INACTIVE
2 143 11 SYS INACTIVE

已选择10行。

Oracle提供了这个语法简化了管理RAC的操作,使得用户可以在一个实例上执行更多的全局管理操作。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-736600/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-06

  • 博文量
    486
  • 访问量
    2621401