前回(DB2のインストール )新しくDB2をインストールしましたので、早速バックアップとリカバリコマンドを使ってみたいと思います。
まずは現状の確認を。データベース全体を見ていくと大変なので、"staff"テーブルを対象としていきます。
テーブルの設計については"DESCRIBE TABLE table_name"で確認することができます。
中身については全件選択してみましょう。"SELECT * FROM STAFF"
35レコードあります。
では、データベースのバックアップです。"BACKUP DATABASE SAMPLE TO backup_directory"
バックアップファイルはコマンドに指定したフォルダーに作成されます。
今回は下記のファイル名で作成されました。
"SAMPLE.0.DB2.NODE0000.CATN0000.20090923183402.001"
ファイル名の意味は下記の通りになります。
Alias.Type.Instance.Node.Catalogue.YYYYMMDDHHMMSS.Sequence
<IBM Developer Worksの「IBM DB2 UDBとOracleのバックアップおよびリカバリーの比較: 第 1 回」を参照>
それでは、どきどきしながらも、サクッとテーブルを消します。
"DROP TABLE STAFF"
ちゃんと消えてます。
消えました・・・
でも、バックアップをとっているので安心です。すかさずテーブルを復旧してみましょう。
"RECOVERY DATABASE SAMPLE TO END OF LOGS"
SQLエラーが出たのでInformation Centerを見てみた。
「
SQL1260N
データベース name は、ノード node-list でのロールフォワード・リカバリー用に構成されていません。
説明
指定されたデータベースは指定されたノードで、ロールフォワード・リカバリー用に構成されません。 ",..." がノード・リストの終わりに表示されている場合、ノードの完全なリストを見るには管理通知ログを調べてください。
データベースは指定のノードでロールフォワードされません。
(注: パーティション・データベース・サーバーを使用している場合、 ノード番号は、エラーの発生しているノードを示しています。 そうでない場合、これは関係のないものなので無視してください。)
ユーザーの処置
指定ノードでリカバリーが必要か確認して、 次にこのノードでデータベースの最新のバックアップ・バージョンをリストアしてください。
」
RECOVERYコマンドは"RESTORE DATABASE + ROLLFORWARD"なので、ROLLFORWARDしてくれようとしたんだと思います。次回確認しようと思います。
テーブルとデータは以前の通りに戻っているでしょうか?
戻っていますね。よかった。
BACKUPコマンドは、バックアップした場所の物理的な場所を覚えているため、RECOVERYコマンドを実行するときにバックアップファイルを指定する必要がありません。
ただ、バックアップファイルを移動したりしてコマンドを実行したときと違う場所に移動した場合にはRECOVERYコマンドが失敗します。
Information Centerを見てみた。
「
SQL2542N
指定されたソース・データベースの別名 database-alias とタイム・スタンプ timestamp に一致する、データベース・イメージ・ファイルがありません。
説明
バックアップ・イメージ・ファイルのファイル名は、データベース別名とタイム・スタンプのコンポーネントで構成されています。ファイル名は、ソース・データベース別名と、Database Restore 呼び出しに指定されたタイム・スタンプ・パラメーターから作成されます。 指定されたソース・データベースの別名とタイム・スタンプに一致する ファイル名が、ソース・ディレクトリーに存在しません。
以下の状態が適用される可能性があります。
1.バックアップへのパスがリストア・コマンドで誤って指定された。
2.バックアップ・イメージ、またはバックアップ・イメージがあるディレクトリーにアクセスする許可がない。
3.自動増分リストア操作を実行しており、データベース履歴内のタイム・スタンプとロケーションに基づいて必要イメージが見つからなかった。
4.パーティション・データベース環境でデータベースをリストアしており、そのデータベースがもう存在せず、さらにリストアされる最初のデータベース・パーティションがカタログ・パーティションではない。
5.TSM メディアからリストアしようとしており、現在のインスタンスにより使用される TSM API クライアント構成はバックアップ・イメージにアクセスできない。
ユーザーの処置
上記の状態に対する適切な応答は以下のとおりです。
1.データベース・バックアップ・イメージが、メディア・ソースに 存在することを確認してください。 結果的に一致するバックアップ・イメージへの正しいパスおよび正しいタイム・スタンプを指定して、操作を 再サブミットしてください。 リストア・コマンドの使用についての詳細は、DB2 インフォメーション・センターで、"using restore database utility" などの語句を使用して検索してください。
2.バックアップ・イメージ、およびバックアップ・イメージがあるディレクトリーにアクセスする許可があることを確認してください。
3.データベース履歴を調べて対応するバックアップ項目を確かめてから、 リストされているロケーションがバックアップ・イメージの実際のロケーションに一致することを確認してください。 データベース履歴を更新して、結果が一致するように操作をやり直すか、 または RESTORE INCREMENTAL ABORT コマンドを発行して、処理中に作成されたリソースをすべてクリーンアップしてください。
4.パーティション・データベースをリストアするときには、常にカタログ・パーティションを最初にリストアしてください。パーティション・データベース環境でのリストアについての詳細は、DB2 インフォメーション・センターで、"restore utility partitioned database" などの語句を使用して検索してください。
5.イメージを TSM から取得できるかを検査するには、db2adutl ユーティリティーに QUERY オプションを付けて使用します。別のサーバー上の別のインスタンスから取得したバックアップ・イメージをリストアする場合、オプション NODENAME、OWNER を必ず使用してください。またオプションで、バックアップ・イメージが最初にとられた TSM ノードの TSM 設定に対応する PASSWORD を使用してください。イメージを取得できることの確認が完了すると、同じオプションを RESTORE コマンドのオプション・ストリングに渡すことができます。db2adutl ユーティリティーについての詳細は、DB2 インフォメーション・センターで、"db2adutl" などの語句を使用して検索してください。
」
フォルダーへの定期バックアップであればバックアップファイルが見あたらないと言うことはないのでしょうが、テープから戻す場合には出やすいのかもしれませんね。
ログファイル・ヒストリーファイルを指定する項目があるので指定間違いの際にも出るでしょう。ログファイル・ヒストリーファイルをいじったパターンも試してみることにします。
まずは現状の確認を。データベース全体を見ていくと大変なので、"staff"テーブルを対象としていきます。
テーブルの設計については"DESCRIBE TABLE table_name"で確認することができます。
中身については全件選択してみましょう。"SELECT * FROM STAFF"
35レコードあります。
では、データベースのバックアップです。"BACKUP DATABASE SAMPLE TO backup_directory"
バックアップファイルはコマンドに指定したフォルダーに作成されます。
今回は下記のファイル名で作成されました。
"SAMPLE.0.DB2.NODE0000.CATN0000.20090923183402.001"
ファイル名の意味は下記の通りになります。
Alias.Type.Instance.Node.Catalogue.YYYYMMDDHHMMSS.Sequence
<IBM Developer Worksの「IBM DB2 UDBとOracleのバックアップおよびリカバリーの比較: 第 1 回」を参照>
それでは、どきどきしながらも、サクッとテーブルを消します。
"DROP TABLE STAFF"
ちゃんと消えてます。
消えました・・・
でも、バックアップをとっているので安心です。すかさずテーブルを復旧してみましょう。
"RECOVERY DATABASE SAMPLE TO END OF LOGS"
SQLエラーが出たのでInformation Centerを見てみた。
「
SQL1260N
データベース name は、ノード node-list でのロールフォワード・リカバリー用に構成されていません。
説明
指定されたデータベースは指定されたノードで、ロールフォワード・リカバリー用に構成されません。 ",..." がノード・リストの終わりに表示されている場合、ノードの完全なリストを見るには管理通知ログを調べてください。
データベースは指定のノードでロールフォワードされません。
(注: パーティション・データベース・サーバーを使用している場合、 ノード番号は、エラーの発生しているノードを示しています。 そうでない場合、これは関係のないものなので無視してください。)
ユーザーの処置
指定ノードでリカバリーが必要か確認して、 次にこのノードでデータベースの最新のバックアップ・バージョンをリストアしてください。
」
RECOVERYコマンドは"RESTORE DATABASE + ROLLFORWARD"なので、ROLLFORWARDしてくれようとしたんだと思います。次回確認しようと思います。
テーブルとデータは以前の通りに戻っているでしょうか?
戻っていますね。よかった。
BACKUPコマンドは、バックアップした場所の物理的な場所を覚えているため、RECOVERYコマンドを実行するときにバックアップファイルを指定する必要がありません。
ただ、バックアップファイルを移動したりしてコマンドを実行したときと違う場所に移動した場合にはRECOVERYコマンドが失敗します。
Information Centerを見てみた。
「
SQL2542N
指定されたソース・データベースの別名 database-alias とタイム・スタンプ timestamp に一致する、データベース・イメージ・ファイルがありません。
説明
バックアップ・イメージ・ファイルのファイル名は、データベース別名とタイム・スタンプのコンポーネントで構成されています。ファイル名は、ソース・データベース別名と、Database Restore 呼び出しに指定されたタイム・スタンプ・パラメーターから作成されます。 指定されたソース・データベースの別名とタイム・スタンプに一致する ファイル名が、ソース・ディレクトリーに存在しません。
以下の状態が適用される可能性があります。
1.バックアップへのパスがリストア・コマンドで誤って指定された。
2.バックアップ・イメージ、またはバックアップ・イメージがあるディレクトリーにアクセスする許可がない。
3.自動増分リストア操作を実行しており、データベース履歴内のタイム・スタンプとロケーションに基づいて必要イメージが見つからなかった。
4.パーティション・データベース環境でデータベースをリストアしており、そのデータベースがもう存在せず、さらにリストアされる最初のデータベース・パーティションがカタログ・パーティションではない。
5.TSM メディアからリストアしようとしており、現在のインスタンスにより使用される TSM API クライアント構成はバックアップ・イメージにアクセスできない。
ユーザーの処置
上記の状態に対する適切な応答は以下のとおりです。
1.データベース・バックアップ・イメージが、メディア・ソースに 存在することを確認してください。 結果的に一致するバックアップ・イメージへの正しいパスおよび正しいタイム・スタンプを指定して、操作を 再サブミットしてください。 リストア・コマンドの使用についての詳細は、DB2 インフォメーション・センターで、"using restore database utility" などの語句を使用して検索してください。
2.バックアップ・イメージ、およびバックアップ・イメージがあるディレクトリーにアクセスする許可があることを確認してください。
3.データベース履歴を調べて対応するバックアップ項目を確かめてから、 リストされているロケーションがバックアップ・イメージの実際のロケーションに一致することを確認してください。 データベース履歴を更新して、結果が一致するように操作をやり直すか、 または RESTORE INCREMENTAL ABORT コマンドを発行して、処理中に作成されたリソースをすべてクリーンアップしてください。
4.パーティション・データベースをリストアするときには、常にカタログ・パーティションを最初にリストアしてください。パーティション・データベース環境でのリストアについての詳細は、DB2 インフォメーション・センターで、"restore utility partitioned database" などの語句を使用して検索してください。
5.イメージを TSM から取得できるかを検査するには、db2adutl ユーティリティーに QUERY オプションを付けて使用します。別のサーバー上の別のインスタンスから取得したバックアップ・イメージをリストアする場合、オプション NODENAME、OWNER を必ず使用してください。またオプションで、バックアップ・イメージが最初にとられた TSM ノードの TSM 設定に対応する PASSWORD を使用してください。イメージを取得できることの確認が完了すると、同じオプションを RESTORE コマンドのオプション・ストリングに渡すことができます。db2adutl ユーティリティーについての詳細は、DB2 インフォメーション・センターで、"db2adutl" などの語句を使用して検索してください。
」
フォルダーへの定期バックアップであればバックアップファイルが見あたらないと言うことはないのでしょうが、テープから戻す場合には出やすいのかもしれませんね。
ログファイル・ヒストリーファイルを指定する項目があるので指定間違いの際にも出るでしょう。ログファイル・ヒストリーファイルをいじったパターンも試してみることにします。
本で5種類に分類された金融機関。三つ目は保険会社。保険会社は大きく生命保険会社と損害保険会社の二つに分けることができます。
どちらの会社も内閣総理大臣の免許を受けなければいけません。
●生命保険会社
・大手生命保険会社
・中堅/新規参入保険会社
・外資系生命保険会社
・損保系生命保険会社
●損害保険会社
・大手損害保険会社
・ダイレクト販売系保険会社
・外資系損害保険会社
・生保系損害保険会社
●大手生命保険会社は「保険レディー」と呼ばれる販売員での対面販売が中心となります。彼女らをよくエレベーターホールで見かけます。死亡保険が中心となっていますが、多種取りそろえています。
●中堅/新規参入保険会社は対面販売もしているけれども、ネットにも進出しています。
●外資系生命保険会社は外国の会社だけあって、「カタカナ生保」と呼ばれます。がん保険など傷害疾病定額保険に特化していましたが、最近は一般的な生命保険も取り扱うようになっています。
●損保系生命保険会社はその名の通り、損害保険会社が生命保険も一緒に販売しています。会社名にひらがながつくので「ひらがな生保」とも呼ばれます。
96年4月に保険業法が改正されたことにより、生損保の相互参入が認められて誕生しました。
●大手損害保険会社は多岐にわたる損害についての保険を取り扱っており、代理店経由での契約が主となっています。
●ダイレクト販売系保険会社はインターネットや電話を使って販売しています。
●外資系損害保険会社はその多くが自動車保険を取り扱っています。
●生保系損害保険会社は損保系生命保険会社の逆で、生命保険会社が損害保険も一緒に販売している形です。
保険会社は、顧客から集めた保険金から支払いを行い、経費に充てるが、残りは車内で眠らせておくのではなく、マーケットで運用しています。このため、保険会社はマーケットにおいて有力な機関投資家となっています。
各種保険の料金を決めるのにアクチュアリーという専門職があります。統計等の巣ペ死リストで、日本アクチュアリー会の会員とならなければ名乗ることができないようです。だいたい正会員となるまでに10年弱かかる難関資格だそうです。
どちらの会社も内閣総理大臣の免許を受けなければいけません。
●生命保険会社
・大手生命保険会社
・中堅/新規参入保険会社
・外資系生命保険会社
・損保系生命保険会社
●損害保険会社
・大手損害保険会社
・ダイレクト販売系保険会社
・外資系損害保険会社
・生保系損害保険会社
●大手生命保険会社は「保険レディー」と呼ばれる販売員での対面販売が中心となります。彼女らをよくエレベーターホールで見かけます。死亡保険が中心となっていますが、多種取りそろえています。
●中堅/新規参入保険会社は対面販売もしているけれども、ネットにも進出しています。
●外資系生命保険会社は外国の会社だけあって、「カタカナ生保」と呼ばれます。がん保険など傷害疾病定額保険に特化していましたが、最近は一般的な生命保険も取り扱うようになっています。
●損保系生命保険会社はその名の通り、損害保険会社が生命保険も一緒に販売しています。会社名にひらがながつくので「ひらがな生保」とも呼ばれます。
96年4月に保険業法が改正されたことにより、生損保の相互参入が認められて誕生しました。
●大手損害保険会社は多岐にわたる損害についての保険を取り扱っており、代理店経由での契約が主となっています。
●ダイレクト販売系保険会社はインターネットや電話を使って販売しています。
●外資系損害保険会社はその多くが自動車保険を取り扱っています。
●生保系損害保険会社は損保系生命保険会社の逆で、生命保険会社が損害保険も一緒に販売している形です。
保険会社は、顧客から集めた保険金から支払いを行い、経費に充てるが、残りは車内で眠らせておくのではなく、マーケットで運用しています。このため、保険会社はマーケットにおいて有力な機関投資家となっています。
各種保険の料金を決めるのにアクチュアリーという専門職があります。統計等の巣ペ死リストで、日本アクチュアリー会の会員とならなければ名乗ることができないようです。だいたい正会員となるまでに10年弱かかる難関資格だそうです。
先日勉強したDB2の管理コマンドを勉強するためにまずDB2をインストールした。
IBMのサイトからDB2-Expressをダウンロードし、任意のフォルダーに解凍。念のため、インストール前提条件を満たしているかを確認。
imageフォルダーにあるdb2prereqcheck.batをコマンドウィンドウで実行します(ダブルクリックでも動きますが、結果表示をした瞬間にウィンドウが閉じてしまいます・・・)。
"Installation Prereq is OK."
と表示されればシステム要件を満たしています。
それではsetup.exeを実行します。まずはランチパッド(LaunchPad)が起動しますが、ここではDB2の情報を教えてくれているだけなのでいきなり「製品のインストール」をクリックし、「新規インストール」ボタンをクリックしてしまいます。
やっとインストールのメニューが始まります。
ライセンス条項にはもちろん同意しましょう。
特にインストールにこだわりはないのでとりあえずは標準インストールをします。
何がインストールされるのかを確認するには「フィーチャーの表示(V)...」をクリックします。なぜかここだけテキストベースです。
応答ファイルを作成するかを選択できます。もし、この後何台にもインストールする必要があるのであれば、応答ファイルを作って、サイレントインストールするのが良いでしょう。
インストールフォルダーの選択。
DB2 Administration Server(DAS)のアカウント設定。
インスタンスの設定。
ポート番号や起動について設定できます。
インストール内容の確認。
インストールが終わりました。
Visual Studio用のアドインが用意されていました。今回は必要ないのでスルーします。
インストールが終了すると、ファースト・ステップが起動します。ローカルにインフォメーション・センターがインストールされず、インターネットにもつながらないのでエラーが出ましたが問題ないです。
自分で一からデータベースを作るのは大変なので、「SAMPLEデータベースの作成」ボタンを押して用意されているサンプルを使います。
SAMPLEデータベースの詳細設定を決めます。
1分半で終了です。
これでひとまずテスト環境ができました。
IBMのサイトからDB2-Expressをダウンロードし、任意のフォルダーに解凍。念のため、インストール前提条件を満たしているかを確認。
imageフォルダーにあるdb2prereqcheck.batをコマンドウィンドウで実行します(ダブルクリックでも動きますが、結果表示をした瞬間にウィンドウが閉じてしまいます・・・)。
"Installation Prereq is OK."
と表示されればシステム要件を満たしています。
それではsetup.exeを実行します。まずはランチパッド(LaunchPad)が起動しますが、ここではDB2の情報を教えてくれているだけなのでいきなり「製品のインストール」をクリックし、「新規インストール」ボタンをクリックしてしまいます。
やっとインストールのメニューが始まります。
ライセンス条項にはもちろん同意しましょう。
特にインストールにこだわりはないのでとりあえずは標準インストールをします。
何がインストールされるのかを確認するには「フィーチャーの表示(V)...」をクリックします。なぜかここだけテキストベースです。
応答ファイルを作成するかを選択できます。もし、この後何台にもインストールする必要があるのであれば、応答ファイルを作って、サイレントインストールするのが良いでしょう。
インストールフォルダーの選択。
DB2 Administration Server(DAS)のアカウント設定。
インスタンスの設定。
ポート番号や起動について設定できます。
インストール内容の確認。
インストールが終わりました。
Visual Studio用のアドインが用意されていました。今回は必要ないのでスルーします。
インストールが終了すると、ファースト・ステップが起動します。ローカルにインフォメーション・センターがインストールされず、インターネットにもつながらないのでエラーが出ましたが問題ないです。
自分で一からデータベースを作るのは大変なので、「SAMPLEデータベースの作成」ボタンを押して用意されているサンプルを使います。
SAMPLEデータベースの詳細設定を決めます。
1分半で終了です。
これでひとまずテスト環境ができました。