今天新装一个库,最后dbconsole起不来,最后想用emca -repos recreate重建一个EM资料库
重建EM资料库会先删后建,删的时候,会启动数据库到quiesce模式,这个一定要注意
删的时候,很久都没动静,v$session_wait看到是经常在latch: library cache上等待,很奇怪
捕获SQL看了下
declare
l_username varchar2(30);
l_sid number;
l_serial number;
err number;
c number;
begin
-- Now, drop the SYSMAN user
c := 0;
l_username := upper('SYSMAN');
begin
loop
BEGIN
LOOP
BEGIN
FOR crec in (SELECT sid, serial#
FROM v$session
WHERE upper(username)=l_username
AND status NOT IN('KILLED'))
LOOP
BEGIN
EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' ||
crec.sid || ',' || crec.serial# || '''';
EXCEPTION
WHEN OTHERS THEN
err := SQLCODE;
IF err != -30 THEN
EXIT;
END IF;
END;
commit;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
err := SQLCODE;
IF err != -30 THEN
EXIT;
END IF;
END;
IF SQL%NOTFOUND THEN
EXIT;
END IF;
commit;
END LOOP;
execute immediate 'drop user ' || l_username || ' cascade';
exit;
EXCEPTION
WHEN NO_DATA_FOUND THEN
exit;
WHEN OTHERS THEN
err := SQLCODE;
IF err = -1918 THEN
EXIT;
ELSE
IF err = -1940 THEN
NULL;
ELSE
DBMS_OUTPUT.PUT_LINE('not 1940 err' || err);
c := c+1;
IF c > 50 THEN
RAISE;
END IF;
END IF;
END IF;
END;
end loop;
end;
commit;
end;
这个SQL不停的出现,是在做一个轮询,估计是卡在哪里了
判断这个SESSION的逻辑,其是在杀dbsnmp用户,检查了下dbsnmp,发现有2个KILL状态的dbsnmp用户的SESSION。
在OS上干掉,OK。
另外说下resmgr:become active这个Scheduler类的等待,应该是由于数据库在quiesce模式,其他非SYSDBA权限的SESSION等待
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8242091/viewspace-668233/
,如需转载,请注明出处,否则将追究法律责任。