Oracle数据库Redo故障恢复

Oracle数据库Redo故障恢复,第1张

一 丢失inactive日志文件组的恢复

由于inactive日志文件组表示已经完成了检查点(dirty数据已经被写入数据文件) 数据库本身不会发生数据库丢失 如果在这个时候相应的redo丢失/损坏 可以通过clear重建日志文件组恢复

通过命令:

alter database clear logfile group n

如果数据库模式是archived的 则需要强制清除

alter database clear unarchived logfile group n

二 丢失active或current日志文件组的恢复

丢失情况分两种:

一个是正常关闭数据库(如shutdown immediate)

另一个是异常关闭数据库(如shutdown abort)

在损失当前日志时 数据库是正常关闭状态

由于shutdown immediate会执行全面的checkpoint 所以当前日志在实例恢复时可以不需要redo

在Oracle i中我们完全可以通过alter database clear logfile group n来进行恢复

但是在Oracle i中 则可能无法对current的redo日志进行clear 需要通过recover database until cancel恢复后(必须要做的)

用resetlogs选项打开

比如

alter database clear logfile group n

recover database until cancel;

alter database open resetlogs;

在损失当前日志时 数据库是异常关闭的

这种情况下 由于没有在执行全面检查点时 数据库就已经关闭了 那么Oracle在进行实例恢复的时候必须要求当前的日志 否则Oracle数据库将无法open

这样的情况下 我们通常需要从备份中恢复数据文件 通过应用归档日志进行向前推演 直到最后一个完好的日志文件 然后可以通过resetlogs启动数据库完成恢复 那么丢失的数据则是被损坏的日志文件中的数据

lishixinzhi/Article/program/Oracle/201311/18418

解决方案(08001错误表明无法与应用程序服务器或其他服务器建立连接):

1、查看端口号有没有配置正确,配置参数svcename跟services文件中配置的db2端口号是否一致,windows一般用50000,unix/linux一般用60000。

2、查看服务器ip 和端口是否正确。ip如果没错就要查看服务器的db2服务端口。服务器检查的配置情况如下:

(1)验证存在的DB2数据库的代码:db2 list db directory;db2 list db directory show detail。

(2)验证实例使用的通讯协议,查看DB2COMM变量:db2set -all。

(3)查看数据库管理器的配置,查看SVCENAME(特指tcpip协议):db2 get dbm cfg。

(4)查看/etc/services中,有无与上面对应SVCENAME的端口,例如:db2cDB2 50000/tcp。

(5)要确认服务器是否在监听,可以用netstat -an 来查看端口是否处于LISTEN状态。

扩展资料:

SQLSTATE=08001的原因和典型示例:

一、这种问题一般的原因。

1、DB2COMM=TCPIP。

2、数据库故障。

3、端口号被禁用。

二、典型示例。

1、客户机将新密码值发送给了不支持更改密码功能的服务器。

2、客户机将 SERVER_ENCRYPT 认证信息发送给了不支持密码加密的服务器。

3、客户机将用户标识但不带密码发送给了不支持仅通过用户标识认证的服务器。

4、客户机未指定认证类型,且服务器未用支持的类型响应。这会包括返回客户机无法从中选择的多种类型的服务器。

参考资料:

IBM文档中心--DB2 Connect 常见问题

IBM文档中心--数据访问(SQLSTATE=08001)

肯定是从报错提示入手,具体可以看看报错日志;openGauss也提供了一些视图来存其运行状态;还有就是收集core文件进行分析。具体参考官方的建议思路:

1、日志。数据库日志记录了数据库服务端启动、运行或停止时出现的问题,当数据库在启动、运行或停止的过程中出现问题时,数据库用户可以通过运行日志快速分析问题的产生原因,并根据不同的原因采取相应的处理方法,尽可能地解决问题。

2、视图。数据库提供了许多视图,用于展示数据库的内部状态,在定位故障时,经常使用的视图如下:

pg_stat_activity,用于查询当前实例上各个session的状态。

pg_thread_wait_status,用于查询该实例上各个线程的等待事件。

pg_locks,用于查询当前实例上的锁状态。

3、CORE文件。数据库相关进程在运行过程中可能会因为各种意外情况导致数据库崩溃 (Coredump),而崩溃时产生的core文件对于迅速定位程序崩溃的原因及位置非常重要。如果进程运行时出现Coredump现象,建议立即收集core文件便于分析、定位故障。

对性能有一定的影响,尤其是进程频繁异常时对性能的影响更大。

core文件会占用磁盘空间。因此,当检查到core文件产生后,应及时解决以避免对 *** 作系统带来更严重的影响。 *** 作系统自带core dump机制。开启后,系统中所有出现Coredump问题时都会生成core文件,对 *** 作系统带来性能和磁盘占用的影响

设置core文件生成路径。修改/proc/sys/kernel/core_pattern内容。

[root@openeuler123 mnt]# cat /proc/sys/kernel/core_pattern

/data/jenkins/workspace/openGaussInstall/dbinstall/cluster/corefile/core-%e-%p-%t

修复MYSQL数据库因断电造成的数据损坏

在使用MySQL数据库的时候,都碰到过因断电造成数据库损坏的情况,大家都知道,断电或非正常关机是导致MySQL数据库出现错误最常见的原因,如何恢复MySQL数据库是大家都非常头痛的问题。目前有方法可以帮助大家恢复损坏的MySQL数据库吗?

当用户出现断电造成的MySQL数据库丢失损坏时,如果能进入MySQL软件,但是提示错误信息,用户可以通过“系统维护”—“数据库压缩修复”,压缩下数据库(有些软件在“系统设置”—“系统维护”—“数据库备份\恢复”中),这种方法只适合一小部分的数据库故障修复,功能性并不高。

现在网络上有两种比较推荐使用的MySQL数据库恢复方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check

table和repair

table

的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk,

isamchk数据检测恢复工具。在很多用户看来,这两个方法都比较复杂,并不适合大多数的用户使用。另外,这两种方法并不能有效的恢复MySQL数据库,可能还会造成数据库被进一步损坏,造成大家无法挽回的损失。根据以上几个原因,这两种MySQL数据库恢复方法并不建议大家使用。

数据库被损坏分以下几种情况:

1、严重损坏

2、轻度损坏

3、有些表被损坏或有些表的部分记录被损坏

以上就是关于Oracle数据库Redo故障恢复全部的内容,包括:Oracle数据库Redo故障恢复、连接数据库失败,SQLSTATE=08001怎么解决、openGauss数据库故障定位思路等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9318134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存