---
title: OpenLM SLM データベースを小さく保つ
description: OpenLM Version 26 のデータベースで容量を使っているテーブルを特定し、滞留した永続メッセージを削除し、古い使用履歴をパージし、不要になったワークステーションをリタイアします。
product: OpenLM Version 26 (legacy)
---

> **OpenLM Version 26（レガシー）。** このページは OpenLM Platform ではなくレガシー製品について説明しています。

OpenLM SLM のデータベースの空き容量が不足したら、何かを削除する前に、どのテーブルが増えているかを特定します。使用履歴は設計上増え続けるもので、Cleanup Manager で削減します。永続メッセージのテーブルは小さいままのはずです。このテーブルが大きくなっている場合は、OpenLM SLM が一部のメッセージを処理していないため、それらを削除できます。

## 容量を使っているテーブルを特定する

変更を加える前にデータベースをバックアップします。次に、サイズの大きいテーブルを一覧表示します。

Microsoft SQL Server の場合:

```sql
SELECT t.name AS table_name, SUM(a.total_pages) * 8 / 1024 AS size_mb
FROM sys.tables t
JOIN sys.indexes i ON t.object_id = i.object_id
JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
GROUP BY t.name
ORDER BY size_mb DESC;
```

MySQL または MariaDB の場合は、`<openlm_database>` を OpenLM SLM データベースの名前に置き換えます。

```sql
SELECT table_name, ROUND((data_length + index_length) / 1024 / 1024) AS size_mb
FROM information_schema.tables
WHERE table_schema = '<openlm_database>'
ORDER BY size_mb DESC;
```

特に重要なテーブルは次の 2 つです。

- `OLM_USED_LICENSES_HS` には使用履歴が格納されます。通常は最も大きいテーブルです。縮小するには、[Cleanup Manager](https://www.openlm.com/documentation/ja/legacy/openlm-slm/openlm-easyadmin-user-interface-administration/cleanup-manager-module) で古い履歴をパージします。
- `OLM_PERSISTED_MESSAGE` には、Broker が送信し、OpenLM SLM がまだ処理していないメッセージが格納されます。小さいか空のはずです。大きい場合は、次のセクションを参照してください。

## 滞留した永続メッセージを削除する

OpenLM SLM は、監視対象の各ライセンスサーバーの Broker メッセージを処理し、処理が済んだメッセージを削除します。削除、無効化、または名前を変更したライセンスサーバーのメッセージは OpenLM SLM が処理しないため、`OLM_PERSISTED_MESSAGE` に残り、テーブルが大きくなり続けます。

1. メッセージがどのライセンスサーバーのものかを特定します。

   Microsoft SQL Server の場合:

   ```sql
      SELECT [LM_SERVER], [PORT], MIN([INSERT_TIME_UTC]) AS MIN_TIME, MAX([INSERT_TIME_UTC]) AS MAX_TIME, COUNT(*) AS NR
      FROM [OLM_PERSISTED_MESSAGE]
      GROUP BY [LM_SERVER], [PORT]
      ORDER BY COUNT(*) DESC;
      ```

   MySQL または MariaDB の場合:

   ```sql
      SELECT LM_SERVER, PORT, MIN(INSERT_TIME_UTC) AS MIN_TIME, MAX(INSERT_TIME_UTC) AS MAX_TIME, COUNT(*) AS NR
      FROM olm_persisted_message
      GROUP BY LM_SERVER, PORT
      ORDER BY COUNT(*) DESC;
      ```

2. 一覧の上位にある各ライセンスサーバーを EasyAdmin で確認します。
   - 監視しなくなったサーバーの場合、OpenLM SLM はそのメッセージを処理しません。手順 3 に進みます。
   - 引き続き監視しているサーバーのメッセージが増え続けている場合、OpenLM SLM はそれらを処理できていません。削除する前に、EasyAdmin でサーバーのデータエラーを確認し、Broker の設定を確認してください。
3. 監視しなくなったライセンスサーバーのメッセージを削除します。`<host>` と `<port>` を手順 1 の値に置き換えます。

   ```sql
      DELETE FROM OLM_PERSISTED_MESSAGE WHERE LM_SERVER = '<host>' AND PORT = <port>;
      ```

   すべてのメッセージが監視しなくなったライセンスサーバーのものである場合は、代わりに `TRUNCATE TABLE OLM_PERSISTED_MESSAGE;` でテーブルを空にできます。引き続き監視しているサーバーのメッセージは削除しないでください。それらは OpenLM がまだ記録していない使用状況です。
4. その後の数日間、テーブルが再び大きくならないことを確認します。

新しいバージョンの OpenLM SLM では、このテーブルに保持されるメッセージが少なくなるため、[OpenLM SLM のアップグレード](https://www.openlm.com/documentation/ja/legacy/openlm-slm/index#既存の-openlm-slm-インストールのアップグレード) も効果があります。テーブルが再び大きくなる前に警告を受け取るには、[アラート](https://www.openlm.com/documentation/ja/legacy/openlm-slm-features/openlm-alerts-configuration) で **Persistence queue overflow** アラートを有効にします。

## 不要になったワークステーションをリタイアする

Cleanup Manager は履歴、グループ、ユーザーを削除しますが、ワークステーションは削除しません。たとえば Workstation Agent を誤って多数のマシンにインストールした後など、ワークステーションを削除するには、次の手順を実行します。

1. EasyAdmin で **Start → Users & Groups → Workstations** に移動します。
2. 削除するワークステーションを選択し、**Retire** を選択します。

Workstation Agent がまだ OpenLM SLM に報告しているワークステーションはリタイアできません。先にそのマシンからエージェントをアンインストールしてください。

Workstation Agent が作成し、使用状況のないユーザーも削除するには、作成元を **Agent** にして **Users** に対して Cleanup Manager を実行します。[Cleanup Manager モジュール](https://www.openlm.com/documentation/ja/legacy/openlm-slm/openlm-easyadmin-user-interface-administration/cleanup-manager-module) を参照してください。
