Oracle新人のRACインストール その19

投稿日: 2006年9月20日

<Oracle新人のRACインストール その19>
ペンネーム: world famous beagle

前回で、無事RACのインストールは終了しました。
ご愛読ありがとうございました。

が、しかし。
まだ印旛くんのRACとの戦いは終わっていませんでした。
もうしばし印旛くんを応援してあげてください。宜しくお願いします!

***RACインストール番外編***
「岸田さん、RACのインストールできました!」
「ずいぶん、時間かかったね」
「はい・・・。すみません」
「まあ、いいや。じゃあ、次はバックアップの手順を確立して」
「バックアップ?」
「DataPumpとRMANっていうのがあるから、調べてスクリプトを作っといて」
「でーたぽんぷ?と、あーるまん?で、すくりぷと?」
「・・・・・・・」
「えっと、とにかく調べます」
「早くね」
「はい」

やっとインストールが終わったのに、もう次か。
しかもさっぱり意味がわかんないな。
バックアップを取るっていってたけど、でーたぽんぷとなんとかマンだったな。
データポンプは、名前的にはデータをポンプみたいに押し出すのかな?
イメージわかないなぁ。とにかく調べよう。

—–DataPumpについて————————————————-
1.DataPumpとは
Oracle 10gのバックアップ取得の新機能に、DataPumpというものがあります。
これは、expdpコマンドで実行します。
DataPumpは、データを高速にロードする為の機能で、データの高速な
インポートやエクスポートを可能にします。

2.DataPumpの主な特徴
■従来のexport/importコマンドに比べ、データのアンロード、ロードにかか
る時間が短縮されています。

■OSに依存しない為、異なるOS間でのデータファイルの移動が可能になってい
ます。

■DIRECTORYオブジェクトの作成・書き込み・読み込み権限が必要となり、
不特定多数のユーザーがエクスポートできない為、データベースの安全性を
向上させることができます。

■DataPumpが実行されると、Oracle Schedulerに登録される為、ジョブの一時
停止、再開などの制御、また監視が可能です。

3.データベース管理者にとってのDataPumpの利点
DataPumpを使うことにより、データベース管理者は、従来よりも作業時間を
軽減できる為、大規模データベースには最適な機能といえます。
また、従来よりも簡単にジョブの管理、監視が可能になったことから、長時間
のジョブの実行中、管理者は複数の場所からジョブを監視し、進捗状況、残り
時間、作業中のオブジェクトなどを確認することができます。
また、管理者が、ジョブの中断、停止、再開などの操作もすることができます。
———————————————————————-

うーーん。いつものごとくよくわかんないな。
やってみるしかないかな。

「富樫さん、DataPumpを使ってバックアップを取ろうとしてるんですけど、
スクリプトっていうのはどうやって作るんですかね?」
「また、難しいことやろうとしてるね」
「はい・・・」
「スクリプトっていっても最初から完璧にはできないだろうから、
テストしてみたら?」
「テスト?」
「うん。例えば・・・。そうだな、僕もやったことないから、
よくわかんないけどscottスキーマのEMP表のバックアップでもとってみたら?」
「じゃあ、そうしてみましょう」
「あ、僕もやるの?」
「いや、そうしてもらえると助かるかな、と」
「ま、いっか」
「ありがとうございます。expdpっていうコマンドを使うみたいなんですけど」
「よし、やってみよう」

「まずは、バックアップファイルを格納するディレクトリを作る」
$ mkdir test_datapump

「次に、ディレクトリオブジェクトを作って、権限を与える」
SQL> create directory test_bk_dp as
	'/opt/app/oracle/10.2.0/db/test_datapump/';
SQL> grant all on directory test_datapump to scott;

「そしたら実行すればいいんじゃないのかな」
$ expdp scott/tiger directory=test_backup schemas=scott
        dumpfile=scott_dpump`date +%y%m%d`.dump
        logfile=scott_dpump`date +%y%m%d`.log

「おーーーー。すごい!さすが富樫さん」
「印旛くんなんもしなかったね」
「はい・・・。自分でおさらいしてみます」

「岸田さん、DataPumpの方はなんとかできそうです」
「見せて」
「あ、はい。さっき富樫さんにやってもらったんですが、
このスクリプトでtest_backupっていうディレクトリにバックアップファイル
がはきだされるみたいです」
「ふーん。じゃあ、シェルにしといて。あと、これだと一日に1回バックアッ
プ取ったら、ずっと増え続けるね」
「そうですね」
「一週間経ったら消せるようにして」
「削除する、ってことですか?」
「そう」
「やってみます」

なんかどんどんハードルが上がってるぞ。
削除する、ってことはrmっていうコマンドを使うのかな。
7日間経ったファイルを削除するみたいにできればいいのか。
rmコマンドのオプションにそういうのがあればいいけど・・・・。

***印旛くん、奮闘中。
***失敗、失敗、失敗、失敗。
***ここをこうして、あーして・・・。
***お、できそうだぞ。
***よし、できた。手順完成!

-----DataPumpを使ったバックアップ取得手順-----
1.oracleユーザーでログインする
user: oracle
password: *****

2.環境変数の確認
$ env | grep ORA
ORA_CRS_HOME=/opt/app/oracle/10.2.0/crs
ORACLE_SID=RAC1
ORACLE_BASE=/opt/app/oracle
ORACLE_HOME=/opt/app/oracle/10.2.0/db

3.$ORACLE_HOME配下に、バックアップを格納するディレクトリを作成する
$ mkdir inba_bk_dp

4.バックアップの実行プログラム(シェルスクリプト)を組み込む
$ vi inba_backup.sh

1    expdp <ユーザ名>/<パスワード> directory=insight_bk
                schemas=<スキーマ名>
                dumpfile=insight_dpump`date +%y%m%d%H%M`.dump
                logfile=insight_dpump`date +%y%m%d%H%M`.log

2    find /opt/app/oracle/10.2.0/db/inba_bk_dp/
                -name '*.dump' -mtime +7 -exec rm {} ;

3    find /opt/app/oracle/10.2.0/db/inba_bk_dp/
                -name '*.log' -mtime +7 -exec rm {} ;

(解説)
DataPumpの実行
1行目   :expdpコマンドを使い、dumpfile、logfileを
          insight_bkディレクトリに格納
2~3行目:7日間経過したDataPumpで取得したダンプファイル、
          ログファイルを削除

5.シェルの実行権限の付与
$ chmod 500 inba_backup.sh


6.SQL*Plusにsystemユーザーでログインする
$ sqlplus
user: system
password: *****


7.ディレクトリオブジェクト作成と権限付与
SQL> create directory inba_dp as
        '/opt/app/oracle/10.2.0/db/inba_bk_dp/';
SQL> grant all on directory inba_dp to <ユーザ名>;

よし、完璧。
来週は、なんとかマンだ!

おまけ
—–impdpによるリカバリ———————————————-
expdpコマンドでエクスポートしたダンプファイルをデータベースに
インポートする事で、データベースをリカバリすることができます。
その際には、impdpコマンドを使います。

(例)
2月7日にバックアップを取った”inba_dpump060207.dump”という
ダンプファイルに格納されている”EMP”表をインポートしたい場合。

$ impdp <ユーザ名>/<パスワード> tables=EMP directory=inba_backup 
        dumpfile= inba_dpump060207.dump