透過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. 使用輸出來還原或修復任何遺失的檔案。 如需詳細資訊,請參閱使用oak-run.jar管理AEM FoundationTutorials中的索引

DataStore的一致性檢查器還可以列出節點存放區中的所有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