June 28, 2016

Notes/Dominoの64GBの限界値を超えてしまったDBの復活?

テーマ:Technique
一時期、IBMがNotes/Dominoの容量は論理的無制限(OSの限界値に依存する)と発表して、その後、上限値は64GBと訂正したのが今では懐かしく思えます。

しかし、世の中では、この上限値である64GBを超えるDBになってしまうこともあるかも知れません。

通常、Userが利用しているDBなら、文書保存時にErrorしたりするのですが、Mail Journalなどは普段は見ないDBですし、Mail Ruleに従い、勝手に容量が膨れ上がっている訳です。
通常のDBでも上限に近くなっていて、滅多に使わないViewを開いた途端に、View Indexが作成されて上限値を超え、View IndexのB-Treeが壊れてしまい開かなくなってしまうこともあるでしょう。

さて、こんな状態になってしまったDBを復活させて、文書を取り出すことは出来るのでしょうか?

それが、何とかなるようなのです。

詳細は解析できていませんが、64GBの上限値を超えたDBをRepliicaすると、何とReplicaが作成できてしまいます。
もしかしたら、Copyでも良いのかも知れませんが、試せていません。

作成したReplicaをNotes Clientで開いてしまうと、Default ViewのIndexが作成されてしまい、View作成中に上限値を超えてしまい、B-Tree Errorが再発すると思われますが、これも、試せてはいません。

とにかく、無事Replicaが作成されたことが確認できれば、そのDBは絶対にNotes Clientから開かないことが重要です。

Replicaの作成とかは通常Notes Clientから開いた場合のようにViewを使ったりしないことから(System側で持っているIndexを使ってCopyしていると思われます)、ViewのB-Tree Errorをすり抜けているように思います。

ここで、全く別の空のDBを作成し、Action Menuから実行できるLotusScriptのAgentを作成し対象文書は無しにして以下のようなCodeを書きます。

Dim ss As New NotesSession
Dim db As NotesDatbase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

Set db = ss.GetDatabase("Server_Name","File_Path",False)
Set dc = db.AllDocuments

Print dc.Count

Set doc = dc.GetFirstDocument()

Print doc."Field_Name"(0)

作成後、LotusScript Debuggerを有効にして、このAgentをAction Menuから実行し、Step By Stepで実行して行くと、Document Collectionが正常に取得でき、CollectionのCount値も取れていることが分かりますし、Documentも正常に読めていることが確認できるのです。

ということは、この時点ではDBは壊れていないということです。

ここまで確認が出来たら、DBのDataは復帰可能ということです。

後は、Codeは省略しますが、上記のCodeの後に、While Not(doc Is Nothing)で文書を順番に取得して、別のDBに文書をCopyしてしまえば良いわけです。
勿論、1個のDBにCopyしたのでは、同じことの繰り返しですので、2つのDBに分けてCopyすれば問題はありません。

実際に実験した結果(こういうDBがある環境でしか試せない訳ですが)、問題なくNotes ClientからDBが開け、文書が参照可能な状態になりました。

皆さんも、DBが容量制限を超えてB-Tree Errorで開けなくなった場合、お試しください。

うまく復活できればラッキーというレベルですが、試してみる価値はあるのではないでしょうか?

 
いいね!した人  |  コメント(0)  |  リブログ(0)

いわまんさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

最近の画像つき記事
 もっと見る >>

コメント

[コメントをする]

コメント投稿

AD

Ameba人気のブログ

Amebaトピックス

      ランキング

      • 総合
      • 新登場
      • 急上昇
      • トレンド

      ブログをはじめる

      たくさんの芸能人・有名人が
      書いているAmebaブログを
      無料で簡単にはじめることができます。

      公式トップブロガーへ応募

      多くの方にご紹介したいブログを
      執筆する方を「公式トップブロガー」
      として認定しております。

      芸能人・有名人ブログを開設

      Amebaブログでは、芸能人・有名人ブログを
      ご希望される著名人の方/事務所様を
      随時募集しております。