0

Oracle バックエンドを使用して PHP 駆動の Web アプリケーションを管理しています。アプリは多数のサードパーティ アプリとやり取りするため、情報は XML ファイル、Microsoft Access データベース、および HTML フォームの組み合わせで管理されます。現在、多くの BLOB を含む 80 のテーブルと、非常に優れた外部キー関係があります。すべての手順は、(もちろん) 誰も読んだことのない文書で注意深く説明されています。顧客は自分のデータに不安を感じていたため、いくつかの改善点 (プレビューの追加や一部の操作での確認など) を含めた見積もりを提示されました。

悲しいことに、顧客は仕様の 1 つ (12 工数で作成される部分的なエクスポート) を誤解しており、DBA の介入なしに Web ブラウザーを介して完全なデータベースを保存および復元できる完全なバックアップおよび復元機能を期待しています。 .

クライアントと別の議論をする前に、この機能をタイムリーに実際に実装するオプションがあるかどうかを知りたいです。戻す)。

運用サーバーは、PHP/5.2.9 を実行する Windows Server 2003 ボックスです。Oracle サーバーは、「Oracle9i Release 9.2.0.1.0 - 64bit Production」を実行するリモート ボックスです。

(私は DBA ではないので、私が知らないよく知られた解決策があるかもしれないことに注意してください。)

4

2 に答える 2

1

オラクルは怪物です。これを読むと、システムをバックアップする方法は、システムがどのように構成されているかに完全に依存していることがわかります。簡単な答えは、手動プロセスを自動化することです-長時間実行されるプロセスとして呼び出し(これはMSWindowsであるため、rmanコマンドの前に「start」を付けます)、ポーリングを使用して終了を検出します(たとえば、rmanをDOSバッチファイルにラップします。ログの開始時刻と終了時刻)。

MSWindows上で実行されているOracleよりも一般的なソリューションを提供するためのより難しい問題を考えるのは難しいでしょう。後者はユーザーがボタンをクリックするのに便利かもしれませんが、何でも自動化することはPITAです。

楽しむ :)

于 2011-07-26T10:54:36.693 に答える
0

最後に、後のプロジェクトで PHP からの完全な Oracle バックアップを実装する機会がありました。10g 以降で利用可能なOracle Data Pumpコマンドライン ユーティリティを使用しました。要するに:

  1. Oracle ディレクトリを定義して、キーワードを物理ディレクトリにマップし、アプリの Oracle ユーザーに書き込み権限を付与します。
  2. 適切な引数を指定して実行するexpdpと、完全なダンプが 1 つのファイルに取得されます。
  3. バックアップを復元するには、 を実行しますimpdp

また、 system( )ではなくproc_open()を使用してコマンドを実行することをお勧めします。これは、Windows 上でプロセスをきめ細かく制御できるためです。bypass_shell

この質問に関しては、10g より前の代替案は「exp」/「imp」の組み合わせです。

于 2012-08-27T11:01:15.023 に答える