Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2588286
  • 博文数量: 323
  • 博客积分: 10211
  • 博客等级: 上将
  • 技术积分: 4934
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-27 14:56
文章分类

全部博文(323)

文章存档

2012年(5)

2011年(3)

2010年(6)

2009年(140)

2008年(169)

分类: Oracle

2009-02-25 16:03:39

  今天在itpub上看到一个案例:sys/system用户可以登录,普通用户登录的时候就会HANG住。下面我就来演示一下这个故障并进行简单的分析。
 
1.先用普通用户登录
SQL> conn sjh/sjh
已连接。
SQL> show user
USER 为 "SJH"
 
2.再用sys用户登录,修改resource_manager_plan的值为'INTERNAL_QUIESCE'。
 
SQL> show user
USER 为 "SYS"
SQL> alter system set resource_manager_plan='INTERNAL_QUIESCE';
系统已更改。
SQL> show parameter resource_manager_plan;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------
resource_manager_plan                string      INTERNAL_QUIESCE
SQL> select * from v$rsrc_plan;
        ID NAME                             IS_TO
---------- -------------------------------- -----
      4840 INTERNAL_QUIESCE                 TRUE

3.验证普通用户的操作

SQL> select table_name from user_tables;

SQL> conn sjh/sjh

--两个操作均失去了响应。

4.sys用户的操作是OK的。如下:
 
SQL> create table sjh.test (id number(2));
表已创建。
SQL> insert into sjh.test values(10);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from sjh.test;
        ID
----------
        10
 
 
5.分析。我们来看一下等待事件:
 
SQL> select SID,SEQ#,EVENT FROM v$session_wait;
       SID       SEQ# EVENT
---------- ---------- ----------------------------------------------------------------
       143          7 resmgr:become active
       145         55 SQL*Net message to client
       146        282 SQL*Net message from client
       148         91 SQL*Net message from client
       150          2 Streams AQ: waiting for time management or cleanup tasks
       152          1 jobq slave wait
       153          2 Streams AQ: qmn slave idle wait
       154          6 Streams AQ: qmn coordinator idle wait
       158         70 resmgr:become active
       160          6 rdbms ipc message
       161        253 rdbms ipc message
       162         62 rdbms ipc message
       163          6 rdbms ipc message
       164       1444 smon timer
       165        480 rdbms ipc message
       166        385 rdbms ipc message
       167         84 rdbms ipc message
       168          7 rdbms ipc message
       169         39 rdbms ipc message
       170          3 pmon timer
20 rows selected
 
--注意蓝色的部分resmgr:become active 这个等待事件的解释如下:
The session is waiting for a resource manager active session slot. This event occurs when the resource manager is enabled and the number of active sessions in the session's current consumer group exceeds the current resource plan's active session limit for the consumer group.
这个等待跟resource manager的启用有关。通过查询resource_manager_plan参数获得其值为:INTERNAL_QUIESCE。这个值代表什么?
INTERNAL_QUIESCE - freezes all sessions out (by setting max number of sessions to 0) except for SYS_GROUP  
除了SYS_GROUP 组的用户,其它用户的session都被冻结。注意冻结这个词,OK,我来解冻。
 
6.解冻
 
SQL>  alter system set resource_manager_plan='';
 
系统已更改。
 
hang住的普通用户操作立刻有了反应。
 
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
TEST
 
SQL> conn sjh/sjh
已连接。

阅读(3408) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~