我正在寻找一个类似于fschek的命令或类似的东西,以确保索引是正确的。 我正在做一个HP UX服务器安装,并且在安装一些软件仓库时出现了一些错误,现在我强制删除了这个软件,但是我想做一致性检查,然后继续安装。
基本上我想检查我的数据库的数据库完整性,并寻找一个简单的命令,如fscheck!
SHORT解释: Oracle工作在内部冗余的方式,如果数据库可以毫无问题地启动(从nomount到mount到open),并且所有的文件都出现在v $ datafile中(没有被标记为“MISSING”),那么你应该没问题。
步骤:我已经find了最简单的方法来“完全扫描”数据库中的破损对象(坏扇区/块等)将完全导出(甚至进一步完全导入到一个空的壳体实例)。 带有FULL = Y标志的expdp或exp,作为SYS运行,应该告诉Oracle将EVERYTHING从数据库中提取到一个平坦的转储文件中。 如果你的扩展区(表,索引等)有问题,那么它应该显示出来。
当然,所有这一切都假设你已经完成了: select * from dba_objects where status = 'INVALID'; 确保你没有任何事情已经知道是不对的。
更多信息:使用联机重做日志,撤消pipe理,复用控制文件和数据文件头本身,Oracle数据库在确保一致性方面非常出色。
甲骨文将不断validation索引 – 你不需要这样做。 如果您想查看哪些索引处于无效/不可用状态,则可以使用以下查询:
SELECT owner, index_name, status from all_indexes WHERE status <> 'VALID';
任何列为UNUSABLE的索引都需要重build。
正如@REW所述,Oracle非常善于自我检查自身的一致性,如果存在严重的问题,几乎不会启动。
Oracle的主要卖点之一是在没有硬件问题的情况下很难破坏数据库。