データベースの起動に時間がかかる(起動トラブル):SQL Serverトラブルシューティング(12)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「データベースの起動に時間がかかる場合の対処方法」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
トラブル 07(カテゴリー:起動):データベースの起動に時間がかかる
「Windows Server 2012」上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します。
トラブルの原因を探る
SQL Serverのエラーログを見ると、「エラー18456」が記録されていました。
エラー18456は、ユーザーがログインに失敗したときに発生するエラーです。その下に、Applicationデータベースのリカバリーが「12%まで完了」した旨のメッセージを確認できることから、「データベースの復旧処理が完了していない」ために発生しているようです(図7-2)。
つまりこのトラブルは、データベースの復旧に時間がかかっており、その時点では復旧処理が完了していないために、「ユーザーからのアプリケーション接続が許可されなかった」ということになります。なお、データベースシステムの仕組み上、前回仕掛かり中のトランザクションが残っていたならば、それらが正常にロールバックされるまで新規ユーザーセッションの受け入れは開始されません。
トランザクションのロールバックを実施する方法
- トランザクションログをスキャンして、対象のトランザクションを特定する
- 前回のチェックポイントからデータベース停止までの処理を再実行(ロールフォワード)する
- 停止時点でCommitしていないトランザクションをロールバックする
解決方法
起動時のデータベースの復旧処理は、データベースシステムとしてデータの整合性を保つために必要なので、省略はできません。最も簡単な対処方法は、SQL Serverの復旧処理が終わるまで待つことです。
このトラブルは、バッチ処理など大量のデータ処理を1つのトランザクションで実行している最中に、何らかの原因でデータベースが止まってしまった場合によく発生します。これを防ぐには、「バッチ処理の単位を適宜分割して、長時間のトランザクションにならないようにする」ことです。
この他に、SQL Server 2012以降に実装されている「間接チェックポイント(Indirect Checkpoint)」(*1)の機能を使うことで復旧処理時間を短くできることもあります。ただし、間接チェックポイントを構成すると、通常実行されているトランザクションの性能が落ちる場合があるので少し注意が必要です。「間接チェックポイントを構成してもパフォーマンステストに問題のないことを確認できた場合」、あるいは「再起動時のデータベース復旧処理時間をトランザクション性能より優先したい場合」に利用を検討してください(図7-3)。
「データベースの起動に時間がかかる」場合の解決手順
- エラーログを確認し、接続するデータベースの「復旧処理の状態を確認」する
- データベースの復旧処理が完了するのを待つ
- 事後対策として、長いトランザクションの特定/バッチ処理の単位を適宜分割する
- 「間接チェックポイント」の導入を検討する
筆者紹介
内ヶ島 暢之(うちがしま のぶゆき)
ユニアデックス株式会社所属。Microsoft MVP Data Platform(2011〜 )。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を行っていた。2016年4月よりIoTビジネス開発の担当となり、新しい仕事に奮闘中。ストレッチをして柔らかい身体を手に入れるのが当面の目標。
椎名 武史(しいな たけし)
ユニアデックス株式会社所属。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- マイクロソフト、「SQL Server 2016」正式版を2016年6月1日リリース
マイクロソフトは、データベースソフトウェアの最新版「SQL Server 2016」を6月1日より一般向けに出荷開始すると発表した。 - 「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
パブリックプレビューが公開されているマイクロソフトのRDB次期版「SQL Server 2016」。特徴の1つとするセキュリティ対策機能のポイントと目指すところをキーパーソンに聞いた。 - クエリストアって何だ? SQL Server 2016のパフォーマンス向上に注目
2015年6月に開催されたイベント「DB tech showcase」の講演の中から、2016年にも正式版がリリースされる次期SQL Serverの目玉機能をウオッチ。 - Oracleから「SQL Server 2016」へ、マイクロソフトが移行支援策を展開
日本マイクロソフトが「SQL Server 2016」の導入支援策を発表。Oracle Databaseからの乗り換えで、ライセンスを特別価格で提供する。