錯誤消息 :
2021-01-15 16:23:06,604+0800 ERROR [event-6-thread-1396 <command>sql.select from browse_node where asset_id=:asset_id limit 1</command>] yw com.orientechnologies.orient.core.storage.cache.local.OWOWCache - $ANSI{grean {db=security}}checksum verification failed for page '2' of 'browse_node_3.pcl'.
2021-01-15 16:23:06,627+0800 WARN [qtp1067566931-4517] yw org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Failure servicing: PUT /repository/maven-deploy/org/bouncycastle/bcprov-jdk15on/1.64/bcprov-jdk15on-1.64.jar.md5 com.orientechnologies.orient.core.exception.OPageIsBrokenException: Following files and pages are detected to be broken ['browse_node_3.pc]' :2;], storage is switched to 'read only' mode. Any modifycation operations are prohibited. To restore database and make it fully operational you may export and import database to and from JSON.
DB name="security"
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.CheckLowDiskSpaceRequestsAndReadOnlyConditions(OAbstractpaginatedStorage.java:5144)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.commit(OAbstractPaginatedStorage.java:1729)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:541)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:99)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2908)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2870)
at org.sonatype.nexus.repository.storage.StorageTxImpl.commit(StorageTxImpl.java:179)
...
解決步驟:
-
停止nexus進程
./nexus stop
-
備份變成只讀模式的數據庫 ,我這里是 security 數據庫
cp -rv /opt/nexus/sonatype-work/nexus3/db/security /backup/
-
運行OrientDB 數據庫客戶端
java -jar /opt/nexus-3.12.1-01/lib/support/nexus-orient-console.jar
-
連接出錯數據庫
orientdb> connect PLOCAL:/opt/sonatype-work/nexus3/db/security admin admin
-
導出數據庫
orientdb {db=security}> EXPORT DATABASE /backup/orientdb-security.export
-
斷開與數據庫security 的連接
orientdb {db=security}> DISCONNECT
-
刪除出問題的庫
orientdb> DROP DATABASE PLOCAL:/opt/sonatype-work/nexus3/db/security admin admin
-
重新創建出問題的庫
orientdb> CREATE DATABASE PLOCAL:/opt/sonatype-work/nexus3/db/security admin admin
-
導入之前的備份
orientdb {db=security}> IMPORT DATABASE /backup/orientdb-security.export.gz
-
關閉數據庫連接
orientdb {db=security}> DISCONNECT
-
退出數據庫客戶端
orientdb> EXIT