通过oak-run运行数据存储一致性检查

了解如何在AEM 6.4和Oak中通过oak-run运行数据存储一致性检查。

描述 description

环境

  • Adobe Experience Manager (AEM) 6.4
  • Oak 1.8.8及更高版本

问题/症状

当您观察到如下错误时,oak-run工具会很有帮助:

09.11.2017 13:42:17.512 *WARN* [ async-index-update-async]  org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore Error occurred while loading bytes from steam while fetching for id «record ID»
    java.util.concurrent.ExecutionException: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record «record ID» does not exist
    Caused by: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record «record ID» does not exist

 /system/console/repositorycheck UI不同,除了其余内容路径之外,oak-run工具还会检查/oak:索引下隐藏的Lucene索引文件。  此工具使您可以选择将索引文件还原到数据存储区,或者仅重建损坏的索引,而不是重新索引所有索引。 这记录在使用oak-run.jar管理AEM FoundationTutorials中的索引中。

分辨率 resolution

  1. 下载 oak-run jar 1.8.8 或更高版本到您的 AEM 服务器。

  2. 运行以下命令(但交换段存储和数据存储的路径以匹配您的环境):

    java -jar oak-run-*.jar datastorecheck --consistency --ref --id --fds crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config --repoHome crx-quickstart/repository --store crx-quickstart/repository/segmentstore --dump temp --verbose --track

  3. 该命令输出数据存储一致性检查。

  4. 使用输出还原或修复任何缺失的文件。 有关详细信息,请参阅在AEM FoundationTutorials中使用oak-run.jar管理索引

数据存储的一致性检查器还可以列出节点存储中的所有blob引用以及数据存储中所有可用的blob id。 使用以下命令:

$ java -jar oak-run-*.jar datastorecheck [ --id] [ --ref] [ --consistency] \

[ --store |] \

[ --s3ds |--fds] \

[ --dump] \

[ --track]

提供以下一个或多个可用选项:

  • —id — 列出数据存储中的所有id。
  • —ref — 列出节点存储中的所有blob引用。
  • —consistency — 通过执行一致性检查列出所有缺失的Blob。

以下选项可选:

  • —store - mongo uri段存储的路径(上述 — ref和 — consistency选项必需)。
  • —dump — 转储文件的路径(可选)。 否则,文件将转储到用户 tmp 目录中。
  • —s3ds - S3DataStore配置文件的路径。
  • —fds - FileDataStore配置文件的路径('path'属性是必需的)。
  • —track — 本地存储库主文件夹的路径(可选)。 它放置要跟踪的已下载 blob id 的副本。

更多此类内容

Oak DataStore 检查

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f