概要
Q&A:DSMデータベーススキーマアップグレード方法でご案内させていただいている、
データベーススキーマアップグレードツールをご利用ください。
Q&A:DSMデータベーススキーマアップグレード方法のツールが使用できない場合に、
本Q&Aでご案内させていただいているSQLスクリプトをご利用ください。
注意事項
- 本製品 Q&A に記載している手順は、SQL Server 2005 や Oracle データベースではサポートしていません。
- 概要にも記載しているとおり、スキーマの手動アップグレードはデータベースに SQL Server を使用している環境で必要となります。Oracle データベース環境の場合は不要です (また、上記のとおりサポートもしていません)。
- 複数 DSM ノード環境の場合、マイグレーション (スキーマアップグレード) 後の DSM のアップグレードはすべてのノードで実施する必要があります。
- マルチテナント環境の場合、すべてのテナントにおいてマイグレーション (スキーマアップグレード) が完了してから、DSM のアップグレードを実施する必要があります。
- マイグレーションをする前に必ずDBのバックアップを取得してください。
また、SQLサーバのデータベース 復旧方法は事前にご確認ください。 - 本Q&Aでご案内するスクリプトではDSM9.6SP1(Build9.6.3177)またはDSM9.6SP1P1(Build9.6.3400)に
対応したスキーマにアップグレードされます。
手順
スクリプトのダウンロード
手順で使用する SQL スクリプトをアップグレード後のDSMバージョンに合わせてダウンロードしてください。(zip ファイルの中に複数のファイルがあります)。
データベースの整合性チェックスクリプトの実行
- Microsoft SQL Server Management Studio を使用し、DSM のデータベースにアクセスします。
- DSM のデータベースを右クリックし、[新しいクエリ(Q)] を選択します。
- ダウンロードした zip ファイル内にある「DeepSecurityDatabaseBigintMigrationScriptTableRecoveryCommand.sql」をテキストエディタで開き、クエリフィールドにコピー & ペーストします。その際、上から三行目の「use [dsm]」の「dsm」を、利用している環境のデータベース名に変更します (データベース名が dsm の場合は変更不要です)。
- 「解析」ボタンをクリックします。コマンドが正常に完了することを確認します。
- クエリを実行します。zip ファイルに含まれる「DeepSecurityDatabaseBigintMigrationScriptTableRecoveryCommandSampleOutput.log」のような出力が記録されることを確認します。
事前準備
- DSM のデータベースのバックアップを採取します。
- zip ファイル内の「DeepSecurityDatabaseBigintMigrationScriptTableSpaceUsageSummary.sql」を使用し、アップグレードに必要なディスク容量の確認を行います (クエリの実行方法については、「データベースの整合性チェックスクリプトの実行」欄で解説しております)。以下のような出力が記録されます。
Total Disk Usage for Migration Tables in KB : 103915072 KB
Total Disk Usage for Migration Tables in MB : 101479 MB
Total Disk Usage for Migration Tables in GB : 99 GBヒント
出力されたサイズの約 1.5 倍のディスク空き容量がデータベースサーバにあることを確認してください。上記例の場合、約 150 GB の空き容量が必要になります。
- SQL Server のプロパティの [接続] 画面より、「リモート クエリのタイムアウト」の値を 0 に設定します。
- (オプション) データベースのサイズが非常に大きい場合などは、アップグレード (マイグレーション) に掛かる時間短縮や必要なディスク容量を減らすため、特定のテーブルにおいて行をすべて削除 (TRUNCATE) します。
- zip ファイル内の「DeepSecurityDatabaseBigintMigrationScriptTableTruncation.sql」をテキストエディタで開きます。
- データベース名が dsm でない場合は、使用している環境のデータベース名に変更します。
- デフォルトでは、マイグレーション対象のテーブルをすべて TRUNCATE します。必要に応じて、533行目をコメントアウトし、TRUNCATE 対象のテーブルのコメントを外してください (以下部分)。
533 : declare @altercolumnspec nvarchar(max) = 'systemevents.TargetID:bigint:null|antimalwareevents.AntiMalwareEventID:bigint|antimalwarequarantinedfile.AntiMalwareEventID:bigint|antimalwarespywareitems.AntiMalwareEventID:bigint:null|webreputationevents.WebReputationEventID:bigint|antimalwareeventhistory.AntiMalwareEventHistoryID:bigint|antimalwareeventhistory.AntiMalwareEventID:bigint:null|webreputationeventhistory.WebReputationEventHistoryID:bigint|webreputationeventhistory.WebReputationEventID:bigint:null|integrityevents.IntegrityEventID:bigint|integrityeventhistory.IntegrityEventHistoryID:bigint|integrityeventhistory.IntegrityEventID:bigint:null|loginspectionevents.LogInspectionEventID:bigint|loginspectioneventhistory.LogInspectionEventHistoryID:bigint|loginspectioneventhistory.LogInspectionEventID:bigint:null|packetlogs.PacketLogID:bigint|packetlogdatas.PacketLogDataID:bigint|payloadlogs.PayloadLogID:bigint|payloadlogdatas.PayloadLogDataID:bigint|packetloghistory.PacketLogHistoryID:bigint|packetloghistory.PacketLogID:bigint:null|payloadloghistory.PayloadLogHistoryID:bigint|payloadloghistory.PayloadLogID:bigint:null|entitys.EntityID:bigint|attribute2s.EntityID:bigint|supersededentitys.WasEntityID:bigint';
534 : --declare @altercolumnspec nvarchar(max) = 'systemevents.TargetID:bigint:null';
535 : --declare @altercolumnspec nvarchar(max) = 'antimalwareevents.AntiMalwareEventID:bigint|antimalwarequarantinedfile.AntiMalwareEventID:bigint|antimalwarespywareitems.AntiMalwareEventID:bigint:null|antimalwareeventhistory.AntiMalwareEventHistoryID:bigint|antimalwareeventhistory.AntiMalwareEventID:bigint:null';
536 : --declare @altercolumnspec nvarchar(max) = 'webreputationevents.WebReputationEventID:bigint|webreputationeventhistory.WebReputationEventHistoryID:bigint|webreputationeventhistory.WebReputationEventID:bigint:null';
537 : --declare @altercolumnspec nvarchar(max) = 'integrityevents.IntegrityEventID:bigint|integrityeventhistory.IntegrityEventHistoryID:bigint|integrityeventhistory.IntegrityEventID:bigint:null';
538 : --declare @altercolumnspec nvarchar(max) = 'loginspectionevents.LogInspectionEventID:bigint|loginspectioneventhistory.LogInspectionEventHistoryID:bigint|loginspectioneventhistory.LogInspectionEventID:bigint:null';
539 : --declare @altercolumnspec nvarchar(max) = 'packetlogs.PacketLogID:bigint|packetlogdatas.PacketLogDataID:bigint|packetloghistory.PacketLogHistoryID:bigint|packetloghistory.PacketLogID:bigint:null';
540 : --declare @altercolumnspec nvarchar(max) = 'payloadlogs.PayloadLogID:bigint|payloadlogdatas.PayloadLogDataID:bigint|payloadloghistory.PayloadLogHistoryID:bigint|payloadloghistory.PayloadLogID:bigint:null';
541 : --declare @altercolumnspec nvarchar(max) = 'entitys.EntityID:bigint|attribute2s.EntityID:bigint|supersededentitys.WasEntityID:bigint';
533行目~541行目における、変数「altercolumnspec」の定義と、それによって削除される情報の相関図は以下のとおりです。
変数の定義行 | 削除される情報 |
---|---|
533 (初期状態) | 以下の全て |
534 | システムイベント |
535 | 不正プログラム対策イベント |
536 | Webレピュテーションイベント |
537 | 変更監視イベント |
538 | セキュリティログ監視イベント |
539 | ファイアウォールイベント |
540 | 侵入防御イベント |
541 | 変更監視機能のベースライン情報 |
マイグレーション (スキーマアップグレード) の実施
- Deep Security Manager サービスを停止します。複数の DSM ノードがある場合は、すべてのノードで停止してください。
- Microsoft SQL Server Management Studio を使用し、DSM のデータベースにアクセスします。
- DSM のデータベースを右クリックし、[新しいクエリ(Q)] を選択します。
- ダウンロードした zip ファイル内にある「DeepSecurityDatabaseBigintMigrationScript.sql」をテキストエディタで開き、クエリフィールドにコピー & ペーストします。その際、上から三行目の「use [dsm]」の「dsm」を、利用している環境のデータベース名に変更します (データベース名が dsm の場合は変更不要です)。
- クエリを実行し、完了するまで待ちます。zip ファイルに含まれる「DeepSecurityDatabaseBigintMigrationScriptSampleOutput.log」のような出力が記録されることを確認します。なお、クエリの完了可否問わず、出力内容は保存してください。
- (オプション) マルチテナント環境の場合は、すべてのテナントにおける処理が完了するまで、再度手順 3.~5. を実施してください (スクリプト内のデータベース名はテナントにあわせて都度変更してください)。
- すべての処理が完了したら、DSM のアップグレードを実施します。
その他
※サイレントインストールでアップグレードを行う場合には、事前に必ずデータベーススキーマの手動アップグレードを実行してください。