星空 发表于 2014-7-8 21:38:57

ORACLE日志错误信息

大家好:
      今天在对用户的ORACLE日志进行分析时发现了以下错误信息,请大家帮忙看下是什么情况。谢谢!
1.ORA-07445: 出现异常错误: 核心转储 [] []
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
2.WARNING: inbound connection timed out (ORA-3136)
3.ORA-01555 caused by SQL statement below (SQL ID: 29djdd9fdfx50, Query Duration=16680 sec,
SCN: 0x0b98.92aea7ee):
ORA-01555: 快照过旧: 回退段号 2 (名称为 "_SYSSMU2$") 过小
4.ORA-01476: divisor is equal to zero
5.ORA-00603: ORACLE 服务器会话因致命错误而终止
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
6.ORA-959 signalled during: ALTER TABLESPACE MW_SYS ADD DATAFILE '/dev/rlvdata5_21_30g' SIZE 30000M...
7.ORA-1652: unable to extend temp segment by 128 in tablespace                 TEMP
ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段
ORA-27042: 原始分区中没有足够空间来完成请求
8.ORA-1516 signalled during: ALTER DATABASE DATAFILE '/dev/rtemp03_5g' AUTOEXTEND OFF...

Maclean Liu(刘相兵 发表于 2014-7-8 21:57:47

我想核心问题比较清楚

ORA-01000: 超出打开游标的最大数==》
http://www.askmaclean.com/archives/script-diagnostic-ora-01000-maximum-open-cursors-exceeded.html

ORA-27042


在本论坛提问至少说明数据库版本 OS版本,

请学习 论坛礼仪需知及学习oracle的方法论 http://t.askmaclean.com/thread-714-1-1.html

星空 发表于 2014-7-9 21:43:45

AIX系统,数据库版本10.2.0.4.0

星空 发表于 2014-7-9 21:49:19

您好,对于昨天的问题。经过查找做了以下解决方案,不知是否合适。烦请指点:

1.ORA-07445: 出现异常错误: 核心转储 [] [](很大程度属于ORACLE的BUG,但是不知打哪个补丁)
ORA-00604: 递归 SQL 级别 1 出现错误(暂未明确如何处理)
ORA-01000: 超出打开游标的最大数
系统运行了一段时间报错
处理办法(ORA-01000):
step 1:
    查看数据库当前的游标数配置slqplus:show parameter open_cursors;
step 2:
    查看游标使用情况:
select o.sid, osuser, machine, count(*) num_curs
from v$open_cursor o, v$session s
where user_name = 'user' and o.sid=s.sid
group by o.sid, osuser, machine
order by  num_curs desc;
此处的user_name='user'中,user代表占用数据库资源的数据库用户名.
step 3:
    查看游标执行的sql情况:
select o.sid q.sql_text
from v$open_cursor o, v$sql q
where q.hash_value=o.hash_value and o.sid = 123;
step 4:
    根据游标占用情况分析访问数据库的程序在资源释放上是否正常,如果程序释放资源没有问题,则加
大游标数。
    alter system set open_cursors=2000 scope=both;
2.WARNING: inbound connection timed out (ORA-3136)
可能的原因:
1.网络攻击,例如半开连接攻击
Server gets a connection request from a malicious client which is not supposed to connect to the database ,
in which case the error thrown is the correct behavior. You can get the client address for which the error was thrown via sqlnet log file.
2.Client在default 60秒内没有完成认证
The server receives a valid client connection request but the client takes a long time to authenticate more than the default 60 seconds.

3.DB负载太高
The DB server is heavily loaded due to which it cannot finish the client logon within the timeout specified.
处理方法(ORA-3136):
一、查看数据库中listener.ora中的inbound_connect_timeout参数值
1、进入lsnrctl,
LHXXDBS01:oraoms> lsnrctl
2、查看inbound_connect_timeout参数:
LSNRCTL> show inbound_connect_time
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LHXXDBS)(PORT=1568)))
LISTENER parameter "inbound_connect_timeout" set to 0
The command completed successfully
如果inbound_connect_timeout参数值不为0,则可以修改为0
修改:
LSNRCTL> set inbound_connect_time 0
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LHXXDBS)(PORT=1568)))
LISTENER parameter "inbound_connect_timeout" set to 0
The command completed successfully
二、修改/oracle/oms/102_64/network/admin/sqlnet.ora
SQLNET.INBOUND_CONNECT_TIMEOUT = 0
三、重新载入listener
LSNRCTL> reload
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LHXXDBS)(PORT=1568)))
The command completed successfully
3.ORA-01555 caused by SQL statement below (SQL ID: 29djdd9fdfx50, Query Duration=16680 sec,
SCN: 0x0b98.92aea7ee):
ORA-01555: 快照过旧: 回退段号 2 (名称为 "_SYSSMU2$") 过小
由于回滚段是循环使用的,当事务提交以后,该事务占用的回滚段事务会被标记为非活动,回滚段空间可以被覆盖重用。那么一个问题就出现了,如果一个查询需要使用被覆盖的回滚段构造前镜像实现一致性读,那么此时就会出现Oracle著名的ORA-01555错误。
ORA-01555错误的另外一个原因是因为延迟块清除(Delayed Block Cleanout)。当一个查询触发延迟块清除时,Oracle需要去查询回滚段获得该事务的提交SCN,如果事务的前镜像信息已经被覆盖,并且查询SCN也小于回滚段中记录的最小提交SCN,那么Oracle将无从判断查询SCN和事务提交SCN的大小,此时出现延迟块清除导致的ORA-01555错误。
另外一种导致ORA-01555错误的情况出现在使用sqlldr直接方式加载(direct=true)数据时。当通过sqlldr direct=true 方式加载数据时,由于不产生重做和回滚信息,Oracle直接指定Cached Commit SCN 给加载数据,在访问这些数据时,有时会产生ORA-01555错误。
处理方法(ORA-01555)
Oracle提供了一个内部事件(10203事件)可以用来跟踪数据库的块清除操作,10203事件可以通过以下命令设置,设置后需要重新启动数据库该参数方能生效:
alter system set event="10203 trace name context forever" scope=spfile;
4.ORA-01476: divisor is equal to zero(该错误不影响系统应用,暂忽略)
sql语句中存在除数为0
5.ORA-00603: ORACLE 服务器会话因致命错误而终止
连接ORACLE数据库的过程中突然出现连接不上的情况
处理办法(ORA-00603):
  The solution is (as proposed on this thread):
alter system set events '10046 trace name context off';
alter system set timed_statistics=false;

ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
6.ORA-959 signalled during: ALTER TABLESPACE MW_SYS ADD DATAFILE '/dev/rlvdata5_21_30g'
SIZE 30000M...
分析:表空间不存在
7.ORA-1652: unable to extend temp segment by 128 in tablespace                 TEMP
ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段
ORA-27042: 原始分区中没有足够空间来完成请求
解决方案(ORA-1652)
(1)重启实例,7*24  重启实例 smon进程可以释放sort段,但我们的库是不能down的
(2)增加数据文件,我的空间很紧张,不可以
(3)配置合理sort_area大小  已经配置完毕了,现PGA 4G  sort_area_size 208M
(4)sql optimization   最佳方案
(5)总结哪些操作会导致临时表空间暴涨呢
什么操作在使用temp
- 索引创建或重建.
- ORDER BY or GROUP BY
- DISTINCT 操作.
- UNION & INTERSECT & MINUS
- Sort-Merge joins.
- Analyze 操作
- 有些异常将会引起temp暴涨
当处理以上操作时候呢,dba需要加倍关注temp使用情况?我们现在来看看谁使用这些临时段。
(5)临时表空间使用情况
select tablespace_name,current_users,total_blocks,used_blocks,free_blocks from v$sort_segment;
TABLESPACE_NAME     CURRENT_USERS TOTAL_BLOCKS USED_BLOCKS FREE_BLOCKS
------------------- ------------- ------------ ----------- -----------
TEMP                            1      3157760         128     3157632
MDSTEMP                        24      2559872     2337152      222720      已经使用了92%
(6)谁在使用这些sort段
select username,session_addr,sqladdr,sqlhash from v$sort_usage;

Maclean Liu(刘相兵 发表于 2014-7-10 20:20:31

星空 发表于 2014-7-9 21:49 static/image/common/back.gif
您好,对于昨天的问题。经过查找做了以下解决方案,不知是否合适。烦请指点:

1.ORA-07445: 出现异常错误: ...

这个结论基本还是可以的
页: [1]
查看完整版本: ORACLE日志错误信息