1. 在数据库hang\连接数满\客户端无法连接情况下,首先需要在数据库服务器获取systemstate 或hanganalyze信息
sqlplus / as sysdba #如果正常方式不能登录,以sqlplus -prelim / as sysdba登录
SQL>oradebug setmypid;
SQL>oradebug unlimit;
SQL>oradebug dump systemstate 266;
SQL>oradebug tracefile_name; #获取trace file
SQL>exit;
2. 如果需要kill进程,请先在数据库层面kill会话,假如将数据库会话kill后OS进程没有清除再从OS层面kill
SQL>alter system kill session ‘SID, SERIAL#’;
3. 如果kill进程后后数据库无法正常启动,请检查共享内存和信号量,如果存在需要清除。
#ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x7378a0d0 1245184 oracle 660 4096 0
0x00000000 1507329 oracle 660 4096 0
0x00000000 1540098 oracle 660 4096 0
0x00000000 1572867 oracle 660 4096 0
0x00000000 1605636 oracle 660 4096 0
0xcfff8548 1638405 oracle 660 4096 0
------ Semaphore Arrays --------
key semid owner perms nsems
0x002fa327 0 root 600 2
0x39163694 1179649 oracle 660 104
0x9ee5fac8 1441794 oracle 660 1004
#ipcrm -m < shmid> #清共享内存
#ipcrm -s <semid> #清信号id