AIXにて Linux のように一発でアーカイブ+圧縮(tar+compress)する方法。
tarとcompressを別に行うと中間ファイルができてしまい、ディスク容量を喰ってしまい嫌だという場合に有効
・アーカイブ+圧縮
# tar cf - <アーカイブするファイル/ディレクトリ> ... | compress -c > xxxxxx.tar.Z
参考:linuxの場合
# tar zcf xxxxxx.tar.gz <アーカイブするファイル/ディレクトリ> ...
・解凍+アーカイブ展開
# zcat xxxxxx.tar.Z | tar xf -
または
# compress -dc xxxxxx.tar.Z | tar xf -
参考:linuxの場合
# tar zxf xxxxxx.tar.gz
DB2 SMSテーブルスペースチューニング
DB2のテーブルスペースのコンテナでSMSを使用する場合、Direct I/Oを使用するようにする。
理由は、Linuxカーネル(2.6)のファイルキャッシュとDB2のバッファプールが同じ働きをするから。
→要するに同じことを2回やっているので、処理時間とメモリ容量が無駄!
db2 “ALTER TABLESPACE <テーブルスペース名> NO FILE SYSTEM CACHING”
メモリーチューニング(AIX)
・現在の状態を確認
# vmstat -v 524288 memory pages ←実メモリページ数 494223 lruable pages 4115 free pages 2 memory pools 176832 pinned pages ←ページアウトされない使用メモリ 80.0 maxpin percentage 20.0 minperm percentage ←ファイルキャッシュの最低保持割合 80.0 maxperm percentage ←ファイルキャッシュの最大保持割合 15.5 numperm percentage ←実メモリに対するファイルキャッシュの占める割合 76722 file pages ←ファイルキャッシュのページ数 0.0 compressed percentage 0 compressed pages 16.4 numclient percentage ←現在のバッファキャッシュの実メモリに対する割合 80.0 maxclient percentage ←バッファキャッシュの最大保持割合 81069 client pages ←現在のバッファキャッシュのページ数 0 remote pageouts scheduled 9203 pending disk I/Os blocked with no pbuf 8718 paging space I/Os blocked with no psbuf 2740 filesystem I/Os blocked with no fsbuf 30 client filesystem I/Os blocked with no fsbuf 0 external pager filesystem I/Os blocked with no fsbuf
・メモリ関連のパラメータ確認
# vmo -a
・ファイルキャッシュを減らす
明らかに、大量のファイルが何度も読み取られるがない場合 有効
maxperm の値を減らす。
( maxperm > numpermの場合、ファイルキャッシュを取りにいこうとする。実メモリから移動できない実行中のメモリが大きいほど、使われてないメモリがスワップされてしまう)
# vmo -o maxperm=60 [-p]
strict_maxperm を 1 にすると maxperm がファイルキャッシュのハード制限になる
# vmo -o strict_maxperm=1 [-p]
・バッファキャッシュを減らす
大量ファイル読み取りによってメモリを逼迫している場合に有効
当然、ディスクI/Oパフォーマンスは落ちる
maxclient の値を減らす
# vmo -o maxclient=30 [-p]
・空きメモリ確保
大きく空けるとプロセス生成時にページアウトしにくくなる。
前もってページアウトして局所的に遅くなるのを防ぐ
minfree ページアウト開始トリガー
maxfree ページアウト終了
# vmo -o minfree=1000 [-p]
・プロセスごとの使用メモリ量取得
# svmon -P
DB2 ユーザデータの格納場所の移動
DB2 ユーザデータの格納場所の移動
DB2 ユーザデータの格納場所(コンテナ)の移動する方法。
DB2のリダイレクトリストア(RESTORE コマンド)機能を利用する
1.テーブルスペース・コンテナ情報取得
テーブルスペース名とテーブルスペースIDの確認
$ db2 “LIST TABLESPACES”
テーブルスペースIDごとに現在のコンテナパスの確認
$ db2 “LIST TABLESPACE CONTAINERS FOR <テーブルスペースID>“
2.バックアップ取得
$ db2 “BACKUP DATABASE <DB名> ~(以下省略)“
3.リダイレクトオプションを使用して、リストアを実行。
※リストアはペンディング状態になる
$ db2 “RESTORE DATABASE <DB名> FROM <バックアップイメージディレクトリパス> TAKEN AT <使用データのタイムスタンプ(YYYYMMDDhhmmss)> REDIRECT“
4.リストアするデータ格納場所(コンテナパス)の変更
$ db2 “SET TABLESPACE CONTAINERS FOR <テーブルスペースID> USING (path ‘<新しいコンテナのパス>‘)”
5.リストアを再開する
$ db2 “RESTORE DATABASE <DB名> CONTINUE“