Oracle hang 之sqlplus -prelim方法
2015-09-16 22:05
519 查看
很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据。
所幸的是Oracle 10g推出了sqlplus -prelim选项,在Oracle挂起时依然能使用sqlplus,从而能获得数据库状态。
使用方法如下
[oracle@HadoopNameNode ~]$ sqlplus -prelim / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue
Aug 25 11:06:14 2015
Copyright (c) 1982, 2011, Oracle. All rights
reserved.
SQL>
在prelim模式下,不可以查询数据字典,但可以关闭数据库
SQL> select status from v$instance;
select status from v$instance
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0
关闭数据库
SQL> shutdown abort
ORACLE instance shut down.
对于实例级别hang,通常建议收集如下信息:
[oracle@HadoopNameNode ~]$ sqlplus -prelim / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue
Aug 25 11:19:49 2015
Copyright (c) 1982, 2011, Oracle. All rights
reserved.
SQL> oradebug setmypid
Statement processed.
SQL> oradebug dump systemstate 10;
Statement processed.
SQL> oradebug tracefile_name
/home/u01/app/oracle/diag/rdbms/ytzx/ytzx/trace/ytzx_ora_8611.trc
果是rac:
SQL> ORADEBUG setmypid
SQL> ORADEBUG setinst all
SQL> ORADEBUG -g def hanganalyze 266
SQL> oradebug tracefile_name
对于应用hang,建议进行hanganalyze 分析即可 dump hanganalyze
SQL> oradebug setmypid
SQL> oradebug hanganalyze 3
Statement processed.
SQL> oradebug tracefile_name
/home/u01/app/oracle/diag/rdbms/ytzx/ytzx/trace/ytzx_ora_8611.trc
对于rac
SQLPLUS> oradebug setmypid
SQLPLUS>oradebug setinst all
SQLPLUS>oradebug -g def hanganalyze 3
如果sqlplus无法登陆,那么建议进行os层面的数据收集。例如如下:
dbx -a PID (where PID = any oracle
shadow process) ---通过ps -ef|grep xxx查看
dbx() print ksudss(10)
...return value printed here
dbx() detach
hanganalyze有如下几种level:
10 Dump all processes (IGN state)
5 Level 4 + Dump all processes
involved in wait chains (NLEAF state)
4 Level 3 + Dump leaf nodes (blockers) in wait
chains (LEAF,LEAF_NW,IGN_DMP state)
3 Level 2 + Dump only processes
thought to be in a hang (IN_HANG state)
1-2 Only HANGANALYZE output, no process
dump at all
很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据。
所幸的是Oracle 10g推出了sqlplus -prelim选项,在Oracle挂起时依然能使用sqlplus,从而能获得数据库状态。
使用方法如下
[oracle@HadoopNameNode ~]$ sqlplus -prelim / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue
Aug 25 11:06:14 2015
Copyright (c) 1982, 2011, Oracle. All rights
reserved.
SQL>
在prelim模式下,不可以查询数据字典,但可以关闭数据库
SQL> select status from v$instance;
select status from v$instance
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0
关闭数据库
SQL> shutdown abort
ORACLE instance shut down.
对于实例级别hang,通常建议收集如下信息:
[oracle@HadoopNameNode ~]$ sqlplus -prelim / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Tue
Aug 25 11:19:49 2015
Copyright (c) 1982, 2011, Oracle. All rights
reserved.
SQL> oradebug setmypid
Statement processed.
SQL> oradebug dump systemstate 10;
Statement processed.
SQL> oradebug tracefile_name
/home/u01/app/oracle/diag/rdbms/ytzx/ytzx/trace/ytzx_ora_8611.trc
果是rac:
SQL> ORADEBUG setmypid
SQL> ORADEBUG setinst all
SQL> ORADEBUG -g def hanganalyze 266
SQL> oradebug tracefile_name
对于应用hang,建议进行hanganalyze 分析即可 dump hanganalyze
SQL> oradebug setmypid
SQL> oradebug hanganalyze 3
Statement processed.
SQL> oradebug tracefile_name
/home/u01/app/oracle/diag/rdbms/ytzx/ytzx/trace/ytzx_ora_8611.trc
对于rac
SQLPLUS> oradebug setmypid
SQLPLUS>oradebug setinst all
SQLPLUS>oradebug -g def hanganalyze 3
如果sqlplus无法登陆,那么建议进行os层面的数据收集。例如如下:
dbx -a PID (where PID = any oracle
shadow process) ---通过ps -ef|grep xxx查看
dbx() print ksudss(10)
...return value printed here
dbx() detach
hanganalyze有如下几种level:
10 Dump all processes (IGN state)
5 Level 4 + Dump all processes
involved in wait chains (NLEAF state)
4 Level 3 + Dump leaf nodes (blockers) in wait
chains (LEAF,LEAF_NW,IGN_DMP state)
3 Level 2 + Dump only processes
thought to be in a hang (IN_HANG state)
1-2 Only HANGANALYZE output, no process
dump at all
相关文章推荐
- oracle11G手动建库
- Oracle学习之常见问题处理
- Oracle 序列 触发器的使用
- 更改Oracle数据库的编码格式,解决导入时ORA-12899错误
- Oracle建立表空间、建立用户、用户授权、指定表空间、激活用户、删除用户、删除表空间
- Oracle主键、唯一键与唯一索引的区别
- Oracle环境下的Hibernate方言配置
- 利用ORACLE实现数据抽样(sample block)
- oracle数据库实例启动与关闭
- oracle 表空间不足处理
- Kettle 5.4 SQL2Oracle简单实例
- Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
- window、linux安装jdk,excel 导入oracle,WebService,window 端口查看,svn服务安装,oracle用户解锁
- Oracle临时表 和 插入多条语句 用法
- oracle海量数据中提升创建索引的速度
- Oracle或者PostgreSQL的row_number over 排名语法
- maven添加oracle jdbc依赖
- Oracle数据库批量插入使用Sequence.nextval报错ORA:02287问题解决
- Oracle 如何查询被锁定表及如何解锁释放session
- Oracle 实例几个function