对于我们的 10g Oracle 数据库,我有一个脚本,它会定期创建批处理文件以在我们所有的数据文件上运行 DBVerify。这样,如果我需要检查损坏情况,我只需要运行批处理文件。升级到 Oracle 11g 后,我的批处理文件不起作用。我将问题追溯到 dbv 本身。这是脚本生成的命令:
dbv FILE=F:\ORACLE\ORADATA\CD\CAMPUSCHURCH1.DBF BLOCKSIZE=4096
LOGFILE='c:\DBVerify_COREDEV\CAMPUSCHURCH1_55.txt'
当我运行它时,它会给出 DBV-00100: Specified FILE (C:\Windows\system32/F:\ORACLE\ORADATA\CD\CAMPUSCHURCH1.DBF) 无法访问。 注意:我所在的文件夹是 C:\Windows\system32。 我可以通过切换到 F:\ 并从我的 dbv 调用中删除 F:\ 来让它工作,但我不喜欢这样,因为我必须在每次 dbv 调用之前更改我的脚本以切换到正确的驱动器。
任何人都可以验证我的发现和/或提供解决方案吗?
这似乎是一个错误,从 10g 回归...在 metalink 中快速查找并没有找到任何东西...打开一个带有 10g 与 11g 测试用例的 SR 怎么样?如果这是一个已知问题,您可能会得到一个补丁。如果不是,他们希望(最终)修复它。
在一些相关的注释中,您可以考虑使用 RMAN 检查数据库中的物理和逻辑损坏。我相信这是更好,更全面的检查。例如,运行 rman VALIDATE CHECK LOGICAL DATABASE 检查此处的文档。如果 rman 发现块损坏,它会填充 v$database_block_corruption,然后您可以使用 rman 来恢复特定的损坏块。您可以通过打开多个通道来并行化 RMAN VALIDATE...
我在 Windows 2008 x64 上的 11gR1 上得到了同样的结果!!