Oracle数据库常见异常的诊断方法

合集下载

Oracle数据库操作常见错误及解决方案

Oracle数据库操作常见错误及解决方案

Oracle数据库操作常见错误及解决方案 ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME产生原因:上述ORACLE错误为回滚段表空间不足引起的,这也是ORACLE数据管理员最常见的ORACLE错误信息。

当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。

解决方式:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。

当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意的增加回滚段表空间的大小,可使用下列的语句先查询一下剩余的tablespace空间有多少:Select user_name,sql_text fromV$open_cursor where user_name=’<user_name>’;如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。

你也可以用以下语句来检测一下rollback segment的竞争状况:Select class,count from V$waitstat where calss in(‘system undo header’,’system undo block’,’undo header’,’undo block’);和Select sum(value) from V$sysstat where name in(‘db_block_gets’,’consistents gets’);如果任何一个class in count/sum(value)大于1%,就应该考虑增加rollback segment。

oracle常见故障处理手册

oracle常见故障处理手册

oracle常见故障处理手册一、数据库启动与关闭故障1.数据库启动失败原因:可能是由于Oracle数据库配置不正确、系统环境变量设置不正确、初始化参数设置不正确等原因导致。

解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。

2.数据库关闭失败原因:可能是由于数据库事务未完成、数据库锁未释放等原因导致。

解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。

二、连接故障1.连接不成功原因:可能是由于网络连接问题、数据库用户名或密码错误、数据库实例名错误等原因导致。

解决方法:检查网络连接是否正常,检查数据库用户名和密码是否正确,检查数据库实例名是否正确。

2.连接断开原因:可能是由于网络不稳定、数据库服务器异常等原因导致。

解决方法:检查网络连接是否正常,检查数据库服务器是否正常。

三、数据恢复故障1.数据丢失原因:可能是由于数据库损坏、磁盘故障等原因导致。

解决方法:根据数据丢失的原因,选择相应的恢复方法,如使用备份恢复数据或使用日志文件恢复数据。

2.数据不一致原因:可能是由于数据修改不一致、数据复制不一致等原因导致。

解决方法:检查数据修改和复制的日志文件,找到不一致的数据并修复。

四、性能优化故障1.性能下降原因:可能是由于CPU占用过高、内存占用过高、磁盘IO过大等原因导致。

解决方法:优化数据库配置参数,如增加内存、优化磁盘IO等。

2.查询速度慢原因:可能是由于查询语句不优化、表没有建立索引等原因导致。

解决方法:优化查询语句,为表建立索引等。

五、存储管理故障1.存储空间不足原因:可能是由于磁盘空间不足、表空间不足等原因导致。

解决方法:清理磁盘空间,增加磁盘空间,调整表空间大小等。

2.数据文件丢失或损坏原因:可能是由于磁盘故障、人为误删除或修改等原因导致。

解决方法:使用备份恢复数据文件或修复损坏的数据文件。

六、网络连接故障1.网络连接中断原因:可能是由于网络设备故障、网络连接线故障等原因导致。

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案一、引言在使用ORACLE数据库的过程中,难免会遇到各种故障,这些故障可能导致数据库无法正常运行,影响业务的连续性和数据的完整性。

因此,本文将介绍一些常见的ORACLE数据库故障,并提供相应的解决方案,以帮助管理员和开发人员快速恢复数据库运行。

二、故障类型及解决方案1. 数据库无法启动故障现象:尝试启动数据库时,遇到错误提示,无法成功启动。

解决方案:1) 检查数据库实例是否正常关闭,如果没有正常关闭,使用SHUTDOWN命令关闭数据库实例。

2) 检查数据库参数文件是否正确配置,确保参数文件路径正确,参数设置正确。

3) 检查数据库控制文件是否损坏,如果损坏,可以尝试恢复备份的控制文件。

4) 检查数据库日志文件是否损坏,如果损坏,可以尝试恢复备份的日志文件。

5) 检查数据库文件是否损坏,如果损坏,可以尝试恢复备份的数据文件。

2. 数据库性能下降故障现象:数据库查询响应时间延长,业务处理变慢。

解决方案:1) 分析数据库性能指标,如CPU利用率、内存利用率、磁盘IO等,找出性能瓶颈。

2) 优化SQL语句,如添加索引、重写查询语句等,提高查询效率。

3) 调整数据库参数,如增加SGA大小、调整PGA大小等,优化内存使用。

4) 分析数据库锁等待情况,解决锁冲突问题,提高并发处理能力。

5) 定期收集数据库统计信息,重新生成优化器统计信息,提高查询计划的准确性。

3. 数据库备份恢复故障现象:数据库数据丢失或损坏,需要进行数据恢复。

解决方案:1) 检查数据库备份情况,如果有可用的备份,可以尝试进行恢复操作。

2) 使用RMAN工具进行数据库备份和恢复操作,可以选择完全恢复或部分恢复。

3) 如果没有备份,可以尝试使用闪回技术进行数据恢复,还原到历史状态。

4) 如果数据文件损坏,可以尝试使用数据文件的备份进行恢复,或者使用RMAN进行数据文件的恢复。

5) 恢复完成后,进行数据一致性检查,确保数据库的完整性。

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案一、引言在进行数据库管理和维护过程中,不可避免地会遇到各种故障和问题。

本文将介绍针对ORACLE数据库常见故障的解决方案,包括数据库无法启动、数据丢失、性能下降等问题的解决方法。

二、数据库无法启动的解决方案1. 检查数据库实例是否正常运行。

可以使用SQL*Plus或者Oracle Enterprise Manager来连接数据库实例,确认实例是否处于正常运行状态。

如果实例没有启动,可以使用启动命令来启动实例。

2. 检查数据库监听器是否正常运行。

监听器负责接收客户端的连接请求并将其转发给数据库实例。

如果监听器没有启动,可以使用监听器启动命令来启动监听器。

3. 检查数据库参数设置是否正确。

可以通过查看数据库参数文件或者使用SQL*Plus连接数据库实例并执行"show parameter"命令来查看数据库参数设置。

如果参数设置不正确,可以使用ALTER SYSTEM命令来修改参数设置。

4. 检查数据库日志文件。

数据库日志文件中记录了数据库的运行状态和错误信息。

可以通过查看数据库日志文件来了解数据库启动失败的原因,并根据错误信息采取相应的解决措施。

三、数据丢失的解决方案1. 恢复备份数据。

如果数据库存在备份,可以使用备份数据来恢复丢失的数据。

可以使用Oracle Recovery Manager(RMAN)工具来进行备份和恢复操作。

2. 使用闪回技术。

ORACLE数据库提供了闪回技术,可以将数据库恢复到指定的时间点或者指定的事务之前的状态。

可以使用闪回查询(Flashback Query)或者闪回表(Flashback Table)来恢复丢失的数据。

3. 使用日志文件进行恢复。

ORACLE数据库的日志文件中记录了数据库的所有操作,可以使用日志文件进行数据恢复。

可以使用日志文件恢复(Redo Log Recovery)或者逻辑恢复(Logical Recovery)来恢复丢失的数据。

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案故障解决方案是指在出现故障时,为了恢复系统正常运行,采取的一系列措施和方法。

针对ORACLE数据库故障,我们可以提供以下解决方案:1. 故障现象描述:描述故障的具体现象,如数据库无法启动、访问速度变慢等。

2. 故障排查:2.1 检查日志文件:查看ORACLE数据库的日志文件,如alert日志、trace文件,以了解故障的具体信息和错误提示。

2.2 检查数据库状态:使用SQL*Plus或其他管理工具连接到数据库,执行`SELECT STATUS FROM V$INSTANCE;`命令,检查数据库的状态是否正常。

2.3 检查系统资源:查看服务器的CPU、内存、磁盘等资源使用情况,确认是否存在资源瓶颈导致数据库故障。

2.4 检查网络连接:检查数据库服务器与客户端之间的网络连接是否正常,确认是否存在网络故障导致数据库无法访问。

3. 故障解决:3.1 数据库无法启动:3.1.1 检查数据库参数文件是否正确配置。

3.1.2 检查数据库控制文件是否损坏,如损坏则恢复备份的控制文件。

3.1.3 检查数据库日志文件是否损坏,如损坏则恢复备份的日志文件。

3.1.4 检查数据库是否处于ARCHIVELOG模式,如果是,则尝试进行日志应用恢复。

3.2 数据库访问速度变慢:3.2.1 检查数据库的索引是否正常,如有需要,重新构建索引。

3.2.2 检查数据库的统计信息是否准确,如有需要,重新收集统计信息。

3.2.3 检查数据库的SQL语句性能,如有需要,进行SQL调优。

3.2.4 检查数据库的表空间是否过度使用,如有需要,进行表空间的优化和扩容。

4. 故障预防:4.1 定期备份数据库:按照业务需求和数据变更频率,制定合理的数据库备份策略,并定期执行数据库备份操作。

4.2 监控数据库性能:使用数据库性能监控工具,实时监测数据库的性能指标,如CPU、内存、磁盘、网络等,及时发现潜在的故障风险。

4.3 定期维护数据库:定期执行数据库的维护操作,如索引重建、统计信息收集、日志清理等,保持数据库的良好状态。

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案故障描述:在使用ORACLE数据库的过程中,可能会遇到各种各样的故障,例如数据库无法启动、数据库连接失败、数据丢失等问题。

本文将针对这些故障提供解决方案。

1. 数据库无法启动的解决方案:- 检查数据库实例是否正常启动,可以使用`lsnrctl status`命令来查看监听器的状态。

- 检查数据库的日志文件,例如alert.log,查看是否有任何错误信息。

- 检查数据库的参数文件,确保参数设置正确。

- 尝试重启数据库实例,可以使用`shutdown immediate`和`startup`命令来重启数据库。

2. 数据库连接失败的解决方案:- 检查网络连接是否正常,可以使用ping命令来测试数据库服务器的连通性。

- 检查数据库监听器是否正常运行,可以使用`lsnrctl status`命令来查看监听器的状态。

- 检查数据库的监听器配置文件,确保监听器监听的端口和服务名设置正确。

- 检查数据库的用户和密码是否正确,可以尝试使用sqlplus工具来连接数据库。

3. 数据丢失的解决方案:- 检查数据库的备份情况,如果有备份文件,可以尝试恢复数据。

- 如果没有备份文件,可以尝试使用数据库的日志文件进行恢复,可以使用`recover database`命令来进行恢复操作。

- 如果以上方法都无法恢复数据,可以尝试使用第三方工具来进行数据恢复。

4. 数据库性能问题的解决方案:- 检查数据库的性能参数设置,例如SGA和PGA的大小,可以根据实际情况进行调整。

- 检查数据库的索引情况,如果索引过多或者索引失效,可以进行重新建立或者优化。

- 检查数据库的SQL语句,如果有性能较差的SQL语句,可以进行优化或者重写。

- 检查数据库的硬件资源使用情况,例如CPU和内存的使用情况,可以根据实际情况进行调整。

5. 数据库安全问题的解决方案:- 检查数据库的用户和权限设置,确保只有授权的用户能够访问数据库。

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案引言概述:ORACLE 数据库是目前企业常用的一种数据库管理系统,但在使用过程中难免会遇到各种故障。

本文将介绍一些常见的 ORACLE 数据库故障,并提供相应的解决方案,帮助读者更好地应对数据库故障。

一、数据库连接问题1.1 连接超时:当数据库连接超时时,可以通过增加连接超时时间的方式解决。

在 ORACLE 数据库中,可以通过修改 sqlnet.ora 文件中的SQLNET.INBOUND_CONNECT_TIMEOUT 参数来设置连接超时时间。

1.2 连接被拒绝:如果数据库连接被拒绝,可能是由于数据库实例未启动、监听器未启动或者网络故障等原因导致。

解决方案包括启动数据库实例、启动监听器以及检查网络连接是否正常。

1.3 连接池问题:当数据库连接池达到最大连接数时,新的连接请求会被拒绝。

解决方案包括增加连接池的最大连接数、释放闲置连接以及优化数据库连接的使用。

二、数据丢失问题2.1 意外删除数据:当数据被意外删除时,可以通过数据库备份和恢复的方式解决。

可以使用RMAN 工具进行数据库备份,并在需要时使用备份进行恢复操作。

2.2 数据库文件损坏:当数据库文件损坏时,可以使用 RMAN 工具进行数据库文件的修复。

RMAN 提供了诊断和修复数据库文件的功能,可以帮助解决数据库文件损坏的问题。

2.3 数据库坏块:当数据库出现坏块时,可以使用 RMAN 工具进行坏块的修复。

RMAN 提供了坏块检测和修复的功能,可以帮助解决数据库坏块问题。

三、性能问题3.1 慢查询:当数据库查询变慢时,可以通过优化查询语句、创建索引、增加硬件资源等方式解决。

可以使用 Explain Plan 工具来分析查询语句的执行计划,找出慢查询的原因,并进行相应的优化。

3.2 死锁:当数据库出现死锁时,可以通过锁等待超时、死锁检测和解锁等方式解决。

可以使用 V$LOCK 和 V$SESSION 视图来查看当前的锁信息,并根据情况进行相应的解锁操作。

Oracle数据库常见异常的诊断方法

Oracle数据库常见异常的诊断方法

Oracle数据库常见异常的诊断方法对于系统级异常,可以采取以下诊断方法:1. 检查日志文件:Oracle数据库记录了大量的日志信息,包括错误日志(alert log)、故障诊断日志(trace files)等。

通过查看这些日志文件,可以了解系统执行过程中的异常情况,定位问题发生的时间和位置。

2. 查看系统表和视图:Oracle数据库提供了一系列用于监控系统的表和视图,包括v$session、v$session_event、v$session_wait等。

通过查询这些系统表和视图,可以获取当前会话的状态和等待事件,从而确定系统出现异常的原因。

3. 检查系统资源使用情况:Oracle数据库提供了一系列用于监控系统资源使用情况的视图,包括v$sysstat、v$sesstat、v$system_event 等。

通过查询这些视图,可以了解数据库的活动会话数、CPU利用率、I/O等待等情况,从而评估系统资源的使用情况。

对于SQL级异常,可以采取以下诊断方法:1. 分析执行计划:Oracle数据库可以生成SQL执行计划,用于指导优化器选择最优的执行方案。

通过分析执行计划,可以了解SQL查询的执行顺序、操作方式和数据访问路径等信息,进而确定是否存在性能问题。

2. 使用SQL Trace:Oracle数据库提供了SQL Trace功能,可以详细记录SQL语句的执行过程,包括SQL的执行时间、CPU消耗、I/O操作等。

通过分析SQL Trace文件,可以找到SQL执行过程中的异常情况,如高CPU使用率、大量的物理读写等。

3. 检查索引使用情况:索引是提高SQL查询性能的重要手段,但是过多或者过少的索引都可能引起性能问题。

通过查询v$segment_statistics视图,可以了解各个表和索引的物理I/O操作次数和等待次数,从而判断是否存在索引使用不当的问题。

4. 检查锁定和等待:Oracle数据库提供了一系列用于监控数据库锁定和等待的视图,包括v$lock、v$lock_wait、v$session等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录第1章 Oracle数据库常见问题诊断方法 (1)1.1 常见错误篇 (1)1.1.1 ORA-12571、ORA-03113、ORA-03114、ORA-01041 (1)1.1.2 ORA-01000 (1)1.1.3 ORA-01545 (2)1.1.4 ORA-0165x (2)1.1.5 ORA-01555 (3)1.1.6 ORA-04031 (3)1.1.7 ORA-04091 (3)1.1.8 ORA-01242、ORA-01113 (4)1.2 内部错误篇 (4)1.2.1 ORA-00600【12330】错误 (4)1.2.2 ORA-00604【xxx】错误 (5)1.2.3 ORA-00600【3339】错误 (5)1.2.4 ORA-00600【13004】错误 (5)1.3 分布式事务篇 (6)1.3.1 诊断分布式事务 (6)1.3.2 检查其它节点的事务(DBA_2PC_NEIGHBORS) (6)1.3.3 通过DBA_2PC_PENDING字典表检查事务的状态 (6)1.3.4 检查处理结果 (7)1.3.5 COMMIT FORCE或ROLLBACK FORCE命令 (7)1.4 OPS或RAC篇 (8)1.4.1 准备工作 (8)1.4.2 紧急情况下的状态备份 (8)1.4.3 OPS设计、配置准则 (9)1.4.4 OPS常见问题 (9)1.4.5 诊断分析步骤 (9)1.5 非OPS篇 (18)1.5.1 ORACLE数据库系统常见问题:空间方面问题 (18)1.5.2 ORACLE数据库系统常见问题:性能方面问题 (18)1.5.3 ORACLE数据库系统常见问题:锁争用方面问题 (19)1.5.4 ORACLE数据库系统常见问题:内存方面问题 (20)1.5.5 ORACLE问题分析脚本 (20)1.5.6 SQL*NET篇 (24)1.5.7 TNS-12154 Error 或ORA-12154 (24)1.5.8 NL-00462 Error 或ORA-00462 (25)1.5.9 NL-00405 Error 或ORA-00405 (26)1.5.10 TNS-01155 Error 或ORA-01155 (26)1.5.11 TNS-12537 、TNS-12560、TNS-00507 Error (26)1.5.12 TNS-12203 Error (27)1.5.13 TNS-12533 Error (27)1.6 备份与恢复篇 (27)1.6.1 EXP-00942 或ORA-00942、ORA-00904错误 (28)1.6.2 EXP-00037 或 ORA-00037 (28)1.6.3 IMP-00009 或ORA-00009 (28)1.6.4 EXP-00041或ORA-00041 (29)1.6.5 IMP-00016 、IMP-00036 、IMP-00037 、IMP-00038 (29)第1章 Oracle数据库常见问题诊断方法1.1 常见错误篇ORACLE的这类错误在ORALCE的文档中有详细说明,但原因及措施说明不详细,本文当着重说明如何解决这类错误。

1.1.1 ORA-12571、ORA-03113、ORA-03114、ORA-010411. 特征客户端(代理或应用服务器)有时报这类断连错误2. 原因如果偶尔出现一次,则可能为网络原因或用户异常中止,如果经常出现则为客户端与服务端的字符集不一致。

3. 措施如果偶尔出现,可在服务端的协议配置文件PROTOCOL.ORA中增加一行TCP.NODELAY=YES;如果经常出现,则为客户端与服务端字符集不一致或网络原因。

客户端的字符集在注册表里定义:HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG在客户端注册表中的TCP参数项中设置TCPMAXDATARETRANSMITIONS=20。

1.1.2 ORA-010001. 特征达到会话允许的最大游标数2. 原因达到会话允许的最大游标数3. 措施有两种解决方法:在初始化文件INIT<SID>.ORA文件中增加OPEN_CURSORS的数量,一般要求大于200。

在应用级,与开发工具有关,例如设置MAXOPEN_CURSORS等。

1.1.3 ORA-015451. 特征某个回滚段不可用2. 原因(1) 当使回滚段ONLINE时,但回滚段不可用,例如回滚段所在表空间OFFLINE;(2) 当使回滚段ONLINE时,但回滚段已ONLINE,例如回滚段被使用两次,典型的案例如OPS方式时,回滚段不能公有;(3) 删除回滚段时,回滚段中有活动的事务;3. 措施(1) 确保回滚段可用(2) 从初始化文件INIT<SID>.ORA的参数ROLLBACK)SEGMENTS中删除指定的回滚段。

(3) 可以将回滚段所在表空间删除,取消UNDO事务1.1.4 ORA-0165x1. 特征表空间没有足够的空间供分配2. 原因表空间已满;存储参数不合理,NEXT太小;没有连续的区间3. 措施如果表空间已满,则需为表空间增加文件;如果存储参数不合理,则需增加INITIAL和NEXT;如果没有连续的区间,需要合并空闲的表空间。

查看空间碎片用DBA_FREE_SPACE1.1.5 ORA-015551. 特征当前会话无法读到以前版本的数据2. 原因原因很多,主要原因有下列:回滚段太小、太少;回滚段冲突;交叉提交(FETCH_ACROSS)3. 措施增加回滚段数量;1.1.6 ORA-040311. 特征共享池内存区内存不够,或产生内存碎片2. 原因当试图装载一个大包时或执行一个较大的存储过程时,而共享池没有连续的内存空间。

3. 措施如果是内存不够,则增加SHARE)POOL_SIZE;如果是内存碎片,执行alter system flush share_pool1.1.7 ORA-040911. 特征触发器工作不正常2. 原因一个行触发读取或修改变化的表(正在修改、插入)时,产生这种错误。

3. 措施检查触发器脚本,保证引用完整性1.1.8 ORA-01242、ORA-011131. 特征介质故障导致数据库宕机2. 原因介质故障。

3. 措施检查硬件故障;修改dbshut脚本,将其中的STARTUP命令修改为:Startup open recoverAlter database open1.2 内部错误篇ORACLE的错误各种各样,包括应用错误、一般错误、内部错误等,前面两类错误在ORALCE的文档中有说明,但内部错误没有相应的文档说明,只是请求报告ORACLE技术支持,本文档主要讨论ORACLE的内部错误,且这些内部错误在ICD中经常出现,仅供参考。

内部错误一般为格式为ORA-00600或ORA-006XX,其中前者最普遍,后者较少见,ORA-600中的第一个变量用于标记代码中错误的位置,第二个到第五个变量显示附加信息,例如文件号、函数号等具体信息。

1.2.1 ORA-00600【12330】错误1. 特征数据库告警日志中经常有这个错误及相应的trace文件2. 原因用户异常中断操作或客户端字符集与SERVER端字符集不一致3. 措施如果偶尔出现,则为用户异常中止,例如代理或应用服务器的断连,有时会产生这个错误;如果经常出现,则为客户端与服务端字符集不一致。

客户端的字符集在注册表里定义:HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG1.2.2 ORA-00604【xxx】错误1. 特征在分析SQL语句时,查询数据字典表发生错误2. 原因这类错误一般与内存管理有关,有可能是由于内存泄漏导致该错误3. 措施如果偶尔出现,适当加大SHARE_POOL_SIZE;如果经常出现,则需要打相应的补丁。

1.2.3 ORA-00600【3339】错误1. 特征数据冲突,包括:块格式冲突、非法索引入口2. 原因oracle系统本身bug;操作系统或介质故障3. 措施ORACLE升级或打补丁;检查硬件故障1.2.4 ORA-00600【13004】错误1. 特征逻辑冲突,例如查询返回错误的数据等2. 原因oracle系统本身bug;3. 措施ORACLE升级或打补丁1.3 分布式事务篇对于数据库服务端到服务端的访问(如DBLINK、复制、快照等),由于网络等原因可能会产生一个节点的事务无法恢复,与之相关的另一个节点的数据库事务挂起,因而产生分布式数据库事务问题。

1.3.1 诊断分布式事务(1) 检查alert<sid>.log文件,发现相应的错误确保网络正常,并检查DBLINK是”valid”和可操作的(2) SELECT * FROM V$DBLINK 或GV$DBLINGK(3) 查找悬挂的事务( DBA_2PC_PENDING)SELECT LOCAL_TRAN_ID, GLOBAL_TRAN_ID, STATE, MIXED, HOST,COMMIT# FROM DBA_2PC_PENDINGLOCAL_TRAN_ID 是本机的事务号(报告错误的机器),如果LOCAL_TRAN_ID = GLOBAL_TRAN_ID, 即分布式事务来源于本机,也可以从本机的alert<sid>.log中得到 LOCAL_TRAN_ID 。

1.3.2 检查其它节点的事务(DBA_2PC_NEIGHBORS)(1) 执行下列命令:SELECT LOCAL_TRAN_ID, IN_OUT, DATABASE, INTERFACEFROM DBA_2PC_NEIGHBORS(2) 在init<sid>.ora中检查参数COMMIT_POINT_STRENGTH该参数应有较大值(最好最大值)1.3.3 通过DBA_2PC_PENDING字典表检查事务的状态(1) 如果状态是commit,则本地数据库提交成功,即不必在本数据库实施COMMIT FORCE或ROLLBACK FORCE。

(2) 如果状态是not commited(prepared),则必需在本数据库实施COMMITFORCE或ROLLBACK FORCE,SCN号可在DBA_2PC_PENDING字典表中找到。

(3) 比较个节点的GLOBAL_TRAN_ID及SCN号(DBA_2PC_PENDING)如果在其它节点没有这个GLOBAL_TRAN_ID及SCN,则RECO已经解决了这个问题,可以不作任何事情。

此时可在进程中看到RECO进程(通常看不到)(4) 如果节点存在没有提交事务如果事务的状态是prepared,则必需在本数据库实施COMMIT FORCE或ROLLBACK FORCE,SCN号可在DBA_2PC_PENDING字典表中找到。

相关文档
最新文档