如何进行oracle数据库一致性检查?

如何进行oracle数据库一致性检查?

我正在寻找类似 fschek 的命令或类似 oracle 的命令来确保索引正确。我正在安装 HP UX 服务器,安装某些软件仓库时出现一些错误,现在我强制删除了这些软件仓库,但我想进行一致性检查,然后继续安装。

基本上,我想检查我的数据库的完整性并寻找一个像 fscheck 这样的简单命令!

答案1

简要说明:Oracle 在内部冗余中工作的方式是,如果数据库可以启动(从 nomount 到 mount 到 open)而没有问题,并且所有文件都出现在 v$datafile 中(没有一个标记为“MISSING”),那么就应该没问题。

脚步:我发现“全面扫描”数据库以查找损坏对象(坏扇区/块等)的最简单方法是完全导出(甚至更进一步完全导入到空 shell 实例中)。以 SYS 身份运行带有 FULL=Y 标志的 expdp 或 exp 应该会告诉 Oracle 将数据库中的所有内容提取到平面转储文件中。如果您的范围(表、索引等)有问题,那么它应该会显示出来。

当然,所有这一切都假设你已经完成了:select * from dba_objects where status = 'INVALID';确保你没有发现任何已经知道不正确的事情。

更多信息:通过在线重做日志、撤消管理、多路复用控制文件和数据文件头本身,Oracle 数据库能够很好地确保其一致性。

答案2

Oracle 将持续验证索引 - 您无需执行此操作。如果您想查看哪些索引处于无效/不可用状态,以下查询可能会有所帮助:

SELECT owner, index_name, status from all_indexes WHERE status <> 'VALID';

任何被列为 UNUSABLE 的索引都需要重建。

正如@REW 所述,Oracle 非常擅长自我检查自身的一致性,并且如果存在严重问题,它几乎会拒绝启动。

Oracle 的主要卖点之一是,如果没有硬件问题,数据库很难被破坏。

相关内容