Views: 2877
データベースのデータ移動やデータ復元に用いられる事が多いDatapump
うちの職場でも環境間のデータ移送やデータバックアップ、リカバリに
に活用しています。
このDatapump、とても便利なツールなのですが、たまに暴走します。
StreamsPoolが不足したために、待機して動かなくなったり、
インデックス作成処理がLibraryCacheLockで終わらなくなったり、
振り回されることもしばしばなんですよね。
しかし、DataPumpを今すぐ止めたいというシチュエーションに遭遇した時の
止め方が特殊です。
Datapump停止手順
1.ジョブ名の確認
まずはDBA権限を持つユーザでDatapumpが動いているデータベースに
接続しましょう。
そこで以下のコマンドを実行します。
SELECT ✳︎ FROM DBA_DATAPUMP_JOBS;
このコマンドで接続先データベースにて実行中のDatapumpのジョブ一覧
が参照できます。
この時の検索結果にJOB_NAMEという項目があり、ここに
ジョブ名が表示されています。
一旦、ジョブ名をメモってください。
Windows前提でお話しします
2.データベースが稼働しているサーバにて、コマンドプロンプトを起動し、
以下のコマンドを実行します。
Impdp DBAユーザ名/パスワード attach=ジョブ所有ユーザ名.ジョブ名
このコマンドを実行すると、Datapumpジョブにattachされます
attachの概念がよくわかりませんが、ジョブの中に乗り込む、
でコントロールできる権限を取得する、みたいな感じ?
3.KILL_JOBでジョブの息の根を止める。
以上の操作で、平和的にDatapumpを停止する事ができます。
セッションをkillしただけで止めた気分になっていると、
あとでえらい目にあいますので、確実な停止をお願いします。
ちなみに、上記手順でも停止させることができないことが
たまにあります。
そういう場合は、Datapumpのマスター表というものがあるので
そいつをDropすれば後腐れなく停止させる事ができますのでご安心を。