透過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
-
下載 Oak-run jar 1.8.8 或更高版本到您的 AEM 伺服器。
-
執行以下命令 (但交換區段存放區和資料存放區的路徑以和您的環境相符):
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
-
該命令會輸出資料存放區一致性檢查。
-
使用輸出來還原或修復任何遺失的檔案。 如需詳細資訊,請參閱使用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 的副本。
更多相關資訊