tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルoracleのバックアップに関して
記事No15217
投稿日: 2011/06/08(Wed) 00:13
投稿者くわ3
お世話になります。

 現在、オラクル9iのバックアップをサービスをストップさせて
 バッチでxcopyで別のドライブにフォルダ毎コピーしております。
 
 先日上司から、オラクルのデータをテキストに出力してそれをコピーをする
 バックアップにしてと言われたのですが
(データベースが壊れた時に壊れたデータベースをコピーしても
 意味がないからと言う理由です)

 ここでご質問なのですが、
 1.VBからテキスト出力する事は可能でしょうか?
 2.上司の言うとおりなのでしょうか?
   また、データベースが壊れた場合でもテキスト出力は
   可能なのでしょうか?
   (壊れ方にもよるのでしょうが)

 アドバイスを頂ければ幸いです。

 

[ツリー表示へ]
タイトルRe: oracleのバックアップに関して
記事No15219
投稿日: 2011/06/08(Wed) 11:18
投稿者魔界の仮面弁士
VB の質問というよりも、Oracle の運用ベースの話になっているような。
Oracle 系のコミュニティで質問した方が良いのではありませんか?
OTN とか @IT とか くるくるおらくる会議室 とか…。


とりあえず、参考資料として。
[@IT - Oracleバックアップ/リカバリ講座]
http://www.atmarkit.co.jp/fdb/index/index-db.html#ora_backup

[ORACLE 障害回復手順]
http://8.pro.tok2.com/~coredump/tech/oracle/recovery/oracle_recovery_contents.html


>  現在、オラクル9iのバックアップをサービスをストップさせて
>  バッチでxcopyで別のドライブにフォルダ毎コピーしております。
自分のところでは、EXP / IMP コマンドでオンラインバックアップさせています。
(最近のバージョンなら expdp / impdp ですかね)

ただ、要件によっては、オフラインバックアップとオンラインバックアップを
併用する事もあります。OCOPY を使う手もありますね。


>  先日上司から、オラクルのデータをテキストに出力してそれをコピーをする
>  バックアップにしてと言われたのですが
テキスト化するとデータサイズも増加しますし、型変換のために保存と復元にも
時間がかかるようになります。何より、データ部以外のバックアップが課題となります。
たとえば、データ以外の情報(テーブル構造、シーケンス、ストアドパッケージ等)を
復元するための手段は持ち合わせていますか? また、テーブル内のデータに限定したと
仮定しても、BFILE や BLOB についてはどのようにテキスト化する予定でしょうか?

そうした細かい部分についても上司の方と相談してみてください。たとえば、
表領域の追加、削除、REDO ロググループの追加、削除等を行ったタイミングで
制御ファイルのバックアップ(もしくは、構築のための SQL)などを保持している場合、
データ部だけのバックアップでも復元できるでしょう。そうした点を解決できているなら、
テキストで保存するのも一つの手だと思います。テキスト化すれば、Oracle の無い環境でも
データを読み取れるというメリットが得られますから、選択肢の一つとなりえます。

ただしテキスト保存の場合、得られるのはバックアップ時点の静的コピーだけです。
Oracle がダウンした場合に、前回の続きまでロールフォワードするといった
復元操作には対応できませんので、その点は割り切りが必要です。


> (データベースが壊れた時に壊れたデータベースをコピーしても
>  意味がないからと言う理由です)
壊れる前のデータから復元できるようにするため、世代管理も必要ですね。
バックアップの世代管理が不十分だと、正常なバックアップが
壊れたバージョンで上書きされてしまっては意味がありませんから。

また、データの入力頻度に応じて、どの時点のバックアップまで戻して良いのかという
バックアップ頻度も考慮せねばなりませんし、データ量や更新頻度に応じて、
フルバックアップ/差分バックアップ/増分バックアップの選択も必要かと。


>  1.VBからテキスト出力する事は可能でしょうか?
CSV や TSV として保存するのか、INSERT INTO コマンドを列挙したファイルを
作成するつもりなのかは分かりませんが、出力自体は可能でしょう。

Oracle の内容を読み取って、画面に出力するアプリは作れますか?
それができるなら、画面に出力するのもテキストファイルとして出力するのも、
Oracle 側に対する手順は一緒ですよね(出力先は異なりますが)。

処理効率についても考慮するなら、SPOOL を使う手もあります。
これなら、VB を介する必要が無い上に高速に変換できます。
数値やテキスト以外(バイナリデータ等)の出力には向きませんが…。
http://oracle.se-free.com/utl/C1_csv.html
http://www.shift-the-oracle.com/sqlplus/command/spool.html


ところで、テキストを復元するための手段は用意できているのでしょうか?
バックアップだけして、リストアの方法を用意できていないのでは意味が無いですよ。
リストア作業は、バックアップ作業以上に迅速さが要求されますので、
実際にどの程度の時間がかかるのか、どのような破損状態に対応できるのかなど、
事前にリカバリーテストを十分に行っておくことを忘れないようにしましょう。


>  2.上司の言うとおりなのでしょうか?
それについては、その上司とよく相談してください。
その上司がどういう意図で仰ったのかは、掲示板を見ている側には分かりませんので。


>    また、データベースが壊れた場合でもテキスト出力は
>    可能なのでしょうか?
壊れたら出力できないのは、どの方法でも同じこと。
問題は、論理破損に対する対処の事を言っておられるのでは無いでしょうか。

XCOPY の場合、ファイルシステム上の問題(ディスク破損等)が起きただけならば
バックアップ失敗として検知できますが、Oracle 側の問題に起因する場合、
その事に気が付かない可能性もあります。サービスも止まっているわけですから、
正常性検知もできませんよね。サービス開始時に障害に気が付く事はありそうですが。

一方、EXP コマンドを使う場合や、SELECT 〜 FROM 〜 の結果を保存する場合、
サービス自体は生きているわけですから、Oracle 自体は正常だと思ってよいでしょう。
論理エラーが起きていれば、それらのコマンドが失敗するでしょうから。


あるいは、バックアップしたファイル自体の破損の事を仰っているのかも知れません。
バイナリファイルでは、一度破損すると復旧はほぼ不可能となりますが、
相手がテキストデータなら、目視チェックである程度は読み取れますよね。


……板違い & 長文になってしまったので、この辺で止めておきます。
# 私自身は DB 管理者や運用側の人間では無いので、
# より具体的な話になってしまうと回答できませんし。(^_^;)

[ツリー表示へ]
タイトル御礼
記事No15224
投稿日: 2011/06/08(Wed) 21:58
投稿者くわ3
魔界の仮面弁士様
 
 とても、ご丁寧で細かなご回答ありがとうございます。
 お恥ずかしいのですが、正直、魔界の仮面弁士様の
 ご回答を理解するまでのスキルが無く、まったく、
 情けない限りです。

 お教え頂きましたサイトを見て勉強をさせて頂きます。
 自分なりに調べて勉強いたします。

 この度は、誠にありがとうございました。
 また、サイトにそぐわない内容のご質問を書き込んでしまい
 申し訳ありませんでした。

[ツリー表示へ]