2011-07-26 3 views
0

Oracle 백엔드를 사용하여 PHP 기반 웹 응용 프로그램을 유지 관리합니다. 앱은 여러 타사 앱과 상호 작용하므로 XML 파일, Microsoft Access 데이터베이스 및 HTML 양식의 조합으로 정보가 관리됩니다. 현재 BLOB가 많은 80 개의 테이블과 많은 양의 외래 키 관계가 있습니다. 모든 절차는 아무도 읽지 않는 문서에서 신중하게 설명됩니다. 고객은 자신의 데이터에 불안감을 느껴서 약간의 개선 (일부 작업에서는 미리보기 및 확인 추가 등)을 통해 예상치를 얻었습니다.PHP에서 전체 Oracle 백업

슬프게도 고객이 사양 중 하나를 잘못 해석했는데 (부분적인 내보내기는 12 시간으로 작성 됨) 전체 백업 및 복원 기능을 통해 웹 브라우저를 통해 전체 데이터베이스를 저장하고 복원 할 수 있습니다. DBA 개입없이

클라이언트와의 또 다른 인수가 있기 전에,이 기능을 적시에 실제로 구현할 수있는 옵션이 있는지, 어떤 상세 검색이 필요하지 않다고 생각하는지 알고 싶습니다 (예 : 필요 없음). 복원 할 항목 선택).

프로덕션 서버는 PHP/5.2.9를 실행하는 Windows Server 2003 상자입니다. Oracle 서버는 "Oracle9i Release 9.2.0.1.0 - 64bit Production"을 실행하는 원격 상자입니다.

(내가 잘 모르는 것 같아요 잘 알려진 해결책이있을 수있다, 그래서 내가 DBA 아니에요 유의하시기 바랍니다.)

답변

1

오라클은 괴물이다. you've read this을 사용하면 시스템을 백업하는 방법이 어떻게 구성되었는지에 달려 있다는 것을 알게 될 것입니다. 짧은 응답은 수동 프로세스를 자동화하는 것입니다. (MSWindows이므로 rman 명령에 'start'를 접두사로 사용합니다) 그런 다음 폴링을 사용하여 완료 시점을 감지합니다 (예 : DOS 배치 파일의 rman rman 시작 및 종료 시간 기록).

MSWindows 위에서 실행되는 오라클보다 포괄적 인 솔루션을 제공하는 것이 더 어려운 문제라고 생각하기가 힘듭니다. 후자는 사용자가 버튼을 클릭하는 것이 좋지만 을 자동화하면은 PITA입니다.

재밌게 :

+0

오 마이 ... 그것은 모두 클라이언트와 함께 아직 다른 인수를 가리 킵니다. 나는 단지''-P'를 읽고 12 시간을 사용하겠습니다. 뭐든지, 링크 해줘서 고마워. 필자가 찾을 수있는 공식 오라클 문서보다 훨씬 명확합니다. –

0

마지막으로, 나는 나중에 프로젝트에 PHP에서 전체 Oracle 백업을 구현하는 기회를 가졌습니다. 나는 Oracle Data Pump 커맨드 라인 유틸리티를 사용했다. 10g부터 사용 가능하다. 짧게는

  1. 키워드를 물리적 디렉토리에 매핑하고 app의 Oracle 사용자에게 쓰기 권한을 부여하기 위해 Oracle 디렉토리를 정의합니다.
  2. expdp을 적절한 인수와 함께 실행하고 단일 파일에서 전체 덤프를 가져옵니다.
  3. 백업을 복원하려면 impdp을 실행하십시오.

또한 경우 Windows에서 bypass_shell 당신이 할 수 있기 때문에 proc_open()보다는 system()와 명령을 실행하여 프로세스에 대한 세밀한 제어를하는 것이 바람직합니다.

이 질문의 경우, 10g 이전의 대안은 "exp"/ "imp"콤보입니다.