DB 2データベース還元物語—Ubuntu編

8142 ワード

背景
社内テスト用サーバCentOS、ローカル仮想マシンUbuntu 10。生産サーバーからバックアップを取って、現地でテストをするつもりです。この復元実験は長い間行われています。その後ずっと一つのdb 2 connect toにカードを入れています。接続するたびに次のエラーが表示されます。
db2 connect to our_database
-- SQL0901N  The SQL statement failed because of a non-severe system error. 
-- Subsequent SQL statements can be processed.  (Reason "Scan interface error".)  
-- SQLSTATE=58004
Googleはぐるぐる回って、条件に合う答えがないです。データベースを更新したら正常になるというスレッドがあります。でも、当時は気にしていませんでした。サーバのバージョンは:
DB21085I  Instance "db2inst1" uses "32" bits and DB2 code release "SQL09071"
with level identifier "08020107".
Informational tokens are "DB2 v9.7.0.1", "s091114", "IP23033", and Fix Pack "1".
Product is installed at "/opt/ibm/db2/V9.7".
ローカル仮想マシンUbuntuのアップロードバージョンは「DB 2 v 9.7.0.0」です。最後の端数だけ違っています。これが原因です。誤報が直接アップグレードできると教えてくれました。もう9.7です。このようなデータベースの復元の誤りを犯しました。本当にすごいです。
新しいバージョンのデータベースを再インストールしたら、正常になりました。このプロセスを記録します。
データベースをインストール
このステップは重要です。直接にデータベースの復元が成功するかどうかに影響します。最新のものは9.7 FixPack 3です。今後更新があれば、新しいものを使いましょう。このプロセスはすべて図形のインストールで、Oracleより簡単になりました。直接DB 2の解凍カタログでdb 2 setupを実行すればいいです。
$ ./db2setup 
DBI1190I  db2setup is preparing the DB2 Setup wizard which will guide
      you through the program setup process. Please wait.


DBI1160I  Non-root install is being performed.
赤い内容に注意!ロトに切りましょう。不要なトラブルを避けてください。
データベースをアンマウント
うっかりして何かを間違えたら、この手を使ってください。削除機能はかなり良いです。下のURLに沿って一歩ずつやってください。
http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.qb.server.doc/doc/t0007439.html
データベースの削除を忘れて、新しいデータベースが元に戻りませんでしたら、直接に/home/db 2 inst/db 2 inst/に入ればいいです。前に復元したデータベースや使ったデータベースを削除すればいいです。vdirはおなじみのデータベースを見ることができます。
データベースバージョンの情報を表示
$su - db2inst1

$ whoami
db2inst1

$ db2level
DB21085I  Instance "db2inst1" uses "32" bits and DB2 code release "SQL09073" 
with level identifier "08040107".
Informational tokens are "DB2 v9.7.0.3", "s101006", "IP23218", and Fix Pack 
"3a".
Product is installed at "/opt/ibm/db2/V9.7".
データベースを復元
インスタンスユーザIDで登録する
su - db2inst1
データベース復元コマンドを表示
db2 ? restore db
ROLLFOREWARD命令を確認します。
db2 ? rollforward db
ここで私はデータベースのバックアップファイルを/home/youbentou/share/Downloadsディレクトリの下に置いて、元に戻す時に具体的な状況によって修正します。
db2 restore db your_database from /home/youbentou/share/Downloads

DB20000I  The RESTORE DATABASE command completed successfully.

db2 rollforward db your_database to end of logs and stop

-------------------------
                                 Rollforward Status

 Input database alias                   = your_database
 Number of nodes have returned status   = 1

 Node number                            = 0
 Rollforward status                     = not pending
 Next log file to be read               =
 Log files processed                    =  -
 Last committed transaction             = 2010-04-20-21.08.17.000000 UTC
補足します。バックアップと復元のPATHが一致しない場合があります。この時は具体的なPATHを手動で指定する必要があります。ツールdb 2 kbpを利用して関連情報を見ることができます。
db2ckbkp -S /mnt/hgfs/Downloads/DB2PTT/YOUR_DB.0.db2inst1.NODE0000.CATN0000.20110409213807.001


	Automatic storage enabled: Yes

	  Number of storage paths: 1

	             storage path: /DB2YOURDB (id = 0, state = 0x0)

	          Header:

	                  flavour: 1
	                  version: 0

	          Storage Group:

	                  flavour: 3
	                  version: 1
	               stateFlags: 0x0
	                  lastLSN: 0000000000000000
	               initialLSN: 0000000000000000
	               nextPathID: 1
元に戻す時はON PATHパスを指定する必要があります。
データベースのインスタンスを作成
データベースはインスタンスdb 2 inst 1に還元されますが、別の例を挙げてこのデータベースにアクセスすることがあります。もちろん、このようなアクセスメカニズムが必要でない場合は、直接最後の経験をまとめてみましょう。)
まずLinuxローカルユーザーを作成します。
sudo adduser timetrac
データベースのインスタンスを作成します。このコマンドがどこにあるか分からない場合は、次の方法で検索できます。
find / -name db2icrt -type f 2>/dev/null
インスタンスの作成:
sudo /opt/ibm/db2/V9.7/instance/db2icrt -u db2fenc1 timetrac
-- DBI1070I  Program db2icrt completed successfully.
関連データベース
実例があると、次のステップは、訪問ノードを確立し、現在のインスタンスのユーザでターゲット・インスタンスに向けたノードを作成し、このノードが提供するデータベースを現在のインスタンスに保留することである。プロセスは以下の通りです
timetrac@ubuntu:/opt/ibm/db2/V9.7/bin$ db2 catalog local node dbnode instance db2inst1
DB20000I  The CATALOG LOCAL NODE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is 
refreshed.
timetrac@ubuntu:/opt/ibm/db2/V9.7/bin$ db2 catalog db your_database at node dbnode
DB20000I  The CATALOG DATABASE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is 
refreshed.
timetrac@ubuntu:/opt/ibm/db2/V9.7/bin$ db2 connect to your_database

   Database Connection Information

 Database server        = DB2/LINUX 9.7.3
 SQL authorization ID   = TIMETRAC
 Local database alias   = YOUR_DATABASE
経験のまとめ
db 2?--すべてのdb 2コマンドの一覧を表示します。
db 2ですかcommand--db 2コマンドリストを記述する文法
db 2ですかerror--エラーや情報を表示して、どのように対応するべきかをユーザーに教えます。この機能はとてもいいです。いつ問題があってもDB 2に問い合わせて、次のステップはどうすればいいですか?例えばdb 2 connect to sampleの場合、次のようなエラーが発生する可能性があります。
$ db2 connect to sample
SQL1013N  The database alias name or database name "SAMPLE" could not be 
found.  SQLSTATE=42705
この場合はdb 2を実行できますか?SQL 1013 N、どうすればいいですか?
$ db2 ? SQL1013N


SQL1013N  The database alias name or database name "<name>" could not be
      found.

Explanation: 

The database name or alias specified in the command is not an existing
database or the database could not be found in the (client or server)
database directories.

User response: 

Ensure that the specified database name exists in the system database
directory. If the database name does not exist in the system database
directory, then the database either does not exist or the database name
has not been cataloged.

If the database name appears in the system database directory and the
entry type is INDIRECT, ensure that the database exists in the specified
local database directory. If the entry type is REMOTE, then ensure that
the database exists and is cataloged on the database directories of the
server node.

For CREATE DATABASE with the AT NODE clause, ensure that the database
name is in the system database directory with an entry type of INDIRECT
and with a catalog node number that does not equal -1.

Federated system users: in addition to the above, verify that the
database names specified in SYSCAT.SERVERS are all valid. Correct any
SYSCAT.SERVERS entry for which the database specified in that entry does
not exist.

 sqlcode: -1013

 sqlstate: 42705
この機能はまあまあ親切です。確かにいいです。
コマンドの位置:/opt/ibm/db 2/V 9.7/install、/opt/ibm/db 2/V 9.7/instance、/opt/ibm/db 2/V 9.7/bin、installディレクトリのツールはインストールバックに関連しています。
Windows下のDB 2とLinux下のDB 2のデータベースバックアップファイルは通用しません。
通信について
どのようにこのマシンにアクセスするかは正常ですが、LANアクセスに問題がある場合は、ルートやファイアウォールの配置を確認する必要があります。具体的には関連するオペレーティングシステムのヘルプ情報を確認してください。前に会ったのはCentOSのファイアウォールです。アクセスできなくなりました。開けたら正常です。もう一つのポイントは、DB 2の通信方式に注意し、TCPIPかどうかです。どのように設定するかはアドレスを参照してください。http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/start/t0004727.htm
参照
http://it.toolbox.com/blogs/db2luw/db2-recovery-basics-part-1-22758