Sybaseのロード 〜いわゆるリストア〜
Sybaseのロード
〜いわゆるリストア〜
0.更新履歴
1.はじめに
このドキュメントでは,Sybaseでテーブルに割り当てられた領域の表示方法と,集計するためのVBScriptを掲載する.
2.手順
ここでは,実際にデータベースのダンプから,データベースのロードまでを,データの復元内容も検証しながら実行してみる.
2.1.データをインサートしながらダンプしてみる
- user_db内に,dump_testテーブルを作成する.
- 作成した直後のテーブル内容を表示してみる.
1> use user_db
2> go
1> create table dump_test(dump_no integer)
2> go
1> select * from dump_test
2> go
dump_no
-----------
1>
|
- テーブルに何も無いことがわかる.
- データベース全体のダンプを行う.
1> dump database user_db to "e:\sybase_dev\dump\phase1.dmp"
2> go
Backup Server のセッション ID は、53 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストア
ド・プロシージャを実行する際に、この値を使用します。
Backup Server: 4.41.1.1: 新しいディスク・ファイル e:\sybase_dev\dump\phase1.dmp
を作成します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620CE4A' セクション番号 00
01 はディスク・ファイル 'e:\sybase_dev\dump\phase1.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:316 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:486 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:658 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:828 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:1000 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:1170 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:1342 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:1512 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:1684 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:1854 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:2038 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:2208 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:2380 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:2550 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:2698 キロバイトが DUMP されました。
Backup Server: 3.43.1.1: ダンプ・フェーズ番号 1 は完了しました。
Backup Server: 3.43.1.1: ダンプ・フェーズ番号 2 は完了しました。
Backup Server: 3.43.1.1: ダンプ・フェーズ番号 3 は完了しました。
Backup Server: 4.58.1.1: データベース user_db:2706 キロバイトが DUMP されました。
Backup Server: 3.42.1.1: DUMP は完了しました。(データベース user_db)
1>
|
- 次に,先ほどのテーブルにデータを入れてみる.
- 入れたデータを表示してみる.
1> insert into dump_test (dump_no) values(1)
2> go
1> select * from dump_test
2> go
dump_no
-----------
1
|
1> dump transaction user_db to "e:\sybase_dev\dump\phase2.dmp"
2> go
Backup Server のセッション ID は、57 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストア
ド・プロシージャを実行する際に、この値を使用します。
Backup Server: 4.41.1.1: 新しいディスク・ファイル e:\sybase_dev\dump\phase2.dmp
を作成します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620CF6F' セクション番号
0001 はディスク・ファイル 'e:\sybase_dev\dump\phase2.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:10 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:16 キロバイトが DUMP されました。
Backup Server: 3.43.1.1: ダンプ・フェーズ番号 3 は完了しました。
Backup Server: 4.58.1.1: データベース user_db:20 キロバイトが DUMP されました。
Backup Server: 3.42.1.1: DUMP は完了しました。(データベース user_db)
1>
|
- 同じように,もう1回データをINSERTして中身を確認する.
1> insert into dump_test (dump_no) values(2)
2> go
1> select * from dump_test
2> go
dump_no
-----------
1
2
|
1> dump transaction user_db to "e:\sybase_dev\dump\phase3.dmp"
2> go
Backup Server のセッション ID は、60 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストアド・プ
ロシージャを実行する際に、この値を使用します。
Backup Server: 4.41.1.1: 新しいディスク・ファイル e:\sybase_dev\dump\phase3.dmp を作成し
ます。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620D007' セクション番号 0001 は
ディスク・ファイル 'e:\sybase_dev\dump\phase3.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:6 キロバイトが DUMP されました。
Backup Server: 4.58.1.1: データベース user_db:10 キロバイトが DUMP されました。
Backup Server: 3.43.1.1: ダンプ・フェーズ番号 3 は完了しました。
Backup Server: 4.58.1.1: データベース user_db:14 キロバイトが DUMP されました。
Backup Server: 3.42.1.1: DUMP は完了しました。(データベース user_db)
1>
|
2.2.おさらい
- ここまでのデータベース内のデータ遷移と,ダンプファイル名を図式化したのが次のとおりである.
- つまり,ダンプデータをロード(リカバリ)すると,データは次のようになる.
- Phase1.dmpをロードすると,データ無しのdump_testテーブルが復元.
- Phase2.dmpをロードすると,データ1が含まれるテーブルが復元.
- Phase3.dmpをロードすると,データ1とデータ2が含まれるテーブルが復元.
2.3.データをロードしながら確認する
1> load database user_db from "e:\sybase_dev\dump\phase1.dmp"
2> go
Msg 3101, Level 16, State 1:
Line 1:
データベースが使用中です。システム管理者 (SA)
権限を持つユーザは、データベースをロードする際に、データベースの使用を
制限させなければなりません。
1>
|
- シングルユーザに設定しないとロードが実行できない.
- シングルユーザに設定する.
1> sp_dboption "user_db","single user",true
2> go
Msg 17428, Level 16, State 1:
Procedure 'sp_dboption', Line 356:
データベース・オプションを変更するためには、‘master’データベースの中にいなければなりません。
(return status = 1)
1> use master
2> go
1> sp_dboption "user_db","single user",true
2> go
'user_db' データベースに対してデータベース・オプション 'single user' が ON になりました。
変更されたデータベースで CHECKPOINT コマンドを実行してください。
(return status = 0)
1> checkpoint
2> go
1>
|
1> load database user_db from "e:\sybase_dev\dump\phase1.dmp"
2> go
Backup Server のセッション ID は、64 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストアド・プロ
シージャを実行する際に、この値を使用します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620CE4A' セクション番号 0001 は
ディスク・ファイル 'e:\sybase_dev\dump\phase1.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:14854 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:58374 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:101386 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:144906 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:187918 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:231438 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:274450 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:317970 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:360982 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:404502 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:447002 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:490522 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:533534 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:577054 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:614432 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:614440 キロバイトが LOAD されました。
Backup Server: 3.42.1.1: LOAD は完了しました。(データベース user_db)
ONLINE DATABASE コマンドを使用して、このデータベースをオンラインにしてください。SQL Server
はデータベースを自動的にオンラインにはしません。
1>
|
1> online database user_db
2> go
データベース 'user_db' はオンラインになりました。
1>
|
1> use user_db
2> go
1> select * from dump_test
2> go
dump_no
-----------
1>
|
- テーブルが作成された時点に戻っていることがわかる.
- 次に,1つ目のトランザクションログをロードする.
1> load transaction user_db from "e:\sybase_dev\dump\phase2.dmp"
2> go
Msg 4301, Level 16, State 2:
Line 1:
データベースが使用中です。システム管理者 (SA) 権限を持つユーザは、
データベースを排他的に使用してLOAD TRANSACTION を実行しなければな
りません。
1>
|
- 先ほどデータベースをオンラインにしたので,再度シングルユーザモードに変更する.
1> use master
2> go
1> sp_dboption "user_db","single user",true
2> go
'user_db' データベースに対してデータベース・オプション 'single user' が ON になりま
した。 変更されたデータベースで CHECKPOINT コマンドを実行してください。
(return status = 0)
1> checkpoint
2> go
1> load transaction user_db from "e:\sybase_dev\dump\phase2.dmp"
2> go
Backup Server のセッション ID は、69 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストアド
・プロシージャを実行する際に、この値を使用します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620CF6F' セクション番号 0001
はディスク・ファイル 'e:\sybase_dev\dump\phase2.dmp' 上にマウントされています。
Msg 4306, Level 16, State 1:
Line 1:
最後のロード以来、データベースに変更があったため、ロードはできません。続行するには
LOAD DATABASEでロード処理をもう一度開始する必要があります。
1>
|
- 先ほどデータベースをオンラインにしてしまったため,フルダンプをロードした時点と異なるとエラーがでている.
- よって,Phase1.dmpとPhase2.dmpを続けてロードする.
1> load database user_db from "e:\sybase_dev\dump\phase1.dmp"
2> go
Backup Server のセッション ID は、72 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストアド・
プロシージャを実行する際に、この値を使用します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620CE4A' セクション番号 0001
はディスク・ファイル 'e:\sybase_dev\dump\phase1.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:14854 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:58374 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:101386 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:144906 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:187918 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:231438 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:274450 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:317970 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:360982 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:404502 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:447002 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:490522 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:533534 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:577054 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:614432 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:614440 キロバイトが LOAD されました。
Backup Server: 3.42.1.1: LOAD は完了しました。(データベース user_db)
ONLINE DATABASE コマンドを使用して、このデータベースをオンラインにしてください。SQL
Serverはデータベースを自動的にオンラインにはしません。
1> load transaction user_db from "e:\sybase_dev\dump\phase2.dmp"
2> go
Backup Server のセッション ID は、75 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストアド・
プロシージャを実行する際に、この値を使用します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620CF6F' セクション番号 0001
はディスク・ファイル 'e:\sybase_dev\dump\phase2.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:20 キロバイトが LOAD されました。
Backup Server: 3.42.1.1: LOAD は完了しました。(データベース user_db)
Redo pass of recovery has processed 1 committed and 0 aborted transactions.
ONLINE DATABASE コマンドを使用して、このデータベースをオンラインにしてください。SQL
Serverはデータベースを自動的にオンラインにはしません。
1>
|
- 再度データベースをオンラインにし,Phase2まで修復されているか確認する.
1> online database user_db
2> go
Undo pass of recovery has processed 1 incomplete transactions.
データベース 'user_db' はオンラインになりました。
1> use user_db
2> go
1> select * from dump_test
2> go
dump_no
-----------
1
1>
|
- テーブルの内容を見る限り,Phase2まで修復されている.
- 続いてPhase3まで確認している.
1> use master
2> go
1> sp_dboption "user_db","single user",true
2> go
'user_db' データベースに対してデータベース・オプション 'single user' が ON になりました。
変更されたデータベースで CHECKPOINT コマンドを実行してください。
(return status = 0)
1> checkpoint
2> go
1> load database user_db from "e:\sybase_dev\dump\phase1.dmp"
2> go
Backup Server のセッション ID は、78 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストアド・プロ
シージャを実行する際に、この値を使用します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620CE4A' セクション番号 0001 は
ディスク・ファイル 'e:\sybase_dev\dump\phase1.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:14854 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:58374 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:101386 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:144906 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:187918 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:231438 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:274450 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:317970 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:360982 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:404502 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:447002 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:490522 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:533534 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:577054 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:614432 キロバイトが LOAD されました。
Backup Server: 4.58.1.1: データベース user_db:614440 キロバイトが LOAD されました。
Backup Server: 3.42.1.1: LOAD は完了しました。(データベース user_db)
ONLINE DATABASE コマンドを使用して、このデータベースをオンラインにしてください。SQL Server
はデータベースを自動的にオンラインにはしません。
1> load transaction user_db from "e:\sybase_dev\dump\phase2.dmp"
2> go
Backup Server のセッション ID は、80 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストアド・プロ
シージャを実行する際に、この値を使用します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620CF6F' セクション番号 0001 は
ディスク・ファイル 'e:\sybase_dev\dump\phase2.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:20 キロバイトが LOAD されました。
Backup Server: 3.42.1.1: LOAD は完了しました。(データベース user_db)
Redo pass of recovery has processed 1 committed and 0 aborted transactions.
ONLINE DATABASE コマンドを使用して、このデータベースをオンラインにしてください。SQL Server
はデータベースを自動的にオンラインにはしません。
1> load transaction user_db from "e:\sybase_dev\dump\phase3.dmp"
2> go
Backup Server のセッション ID は、82 です。Backup Server
からの何らかのボリューム変更の要求を実行したあと、'sp_volchanged'システム・ストアド・プロ
シージャを実行する際に、この値を使用します。
Backup Server: 6.28.1.1: ダンプ・ファイル名 'user_db011620D007' セクション番号 0001 は
ディスク・ファイル 'e:\sybase_dev\dump\phase3.dmp' 上にマウントされています。
Backup Server: 4.58.1.1: データベース user_db:14 キロバイトが LOAD されました。
Backup Server: 3.42.1.1: LOAD は完了しました。(データベース user_db)
Redo pass of recovery has processed 4 committed and 0 aborted transactions.
ONLINE DATABASE コマンドを使用して、このデータベースをオンラインにしてください。SQL Server
はデータベースを自動的にオンラインにはしません。
1> online database user_db
2> go
Undo pass of recovery has processed 1 incomplete transactions.
データベース 'user_db' はオンラインになりました。
1> use user_db
2> go
1> select * from dump_test
2> go
dump_no
-----------
1
2
1>
|
- これで最後のダンプ時点までの修復ができたことが確認できた.