2012-09-06 3 views
1

테이블에 .sql 스크립트 출력을 스풀링 할 수있는 방법이 있습니까?테이블에 오라클 스풀 스크립트 출력

필자가 생각할 수있는 한 가지 해결 방법은 피드백을 사용하여 insert-statements 스크립트를 동적으로 작성한 다음 파일 시스템을 스풀링 한 다음 스키마에 대해이를 실행하는 것입니다.

그러나 이미 존재하는 테이블을 시스템 테이블에 직접 스풀링하는 더 좋은 해결책이 있는지 알고 싶습니다 (예 : 스크립트 파일 경로, 실행 날짜, 실행 결과, 1 row inserted, commit 등). ..

감사

+0

왜 PL/SQL을 사용하지 않습니까? –

+0

예를 들어 Audit를 켜서 서버를 통해 모든 활동을 감사하는 더 좋은 방법입니다. SQL * Plus 메시지를 테이블에 직접 스풀링 할 수있는 방법은 없습니다. –

+0

@ user1651063이 데이터를 보존 할 기간은 얼마이며, 그 후에는 어떻게 처리 할 예정입니까? 로버트가 언급했듯이, PLSQL이 더 나은 해결책 일 수 있습니다. 아니면 임시 테이블을 사용하는 것이 좋습니다. 코드에 대한 링크는 –

답변

1

은 파일 이름과 입력으로 디렉토리 이름을 사용하는 프로 시저를 작성합니다. 을 당신이 오라클 디렉토리를 정의 디렉토리에 스풀 파일을 작성하고이에 CLOB로 파일을 기록 표.

spool test.txt 

your code 

spool off 

exec write_spool_file_to_database_proc('test.txt','YOURDIR'); 

파일을 테이블 CLOB 열에 쓰는 방법에 대해 살펴보십시오.

http://www.roeptoeter.nl/?p=254

+0

+1입니다. 생각한 실험으로 데이터베이스가 다운되었다고 가정합니다. 어떻게 그리고 어디에서 결과 연결 오류가 기록됩니까? –

+0

여전히 파일 시스템에 있습니다 .-) –

+0

일부는 내보기를 공유하지 않을 수도 있지만 이것이 데이터베이스에 로그하는 대신 플랫 파일 로깅을 선호하는 이유 중 하나입니다. 비정상적인 상황이나 비정상적인 상황에서 로그 기록이 필요한 주요 이유 중 하나인데, 어쨌든 적절한 파일을 찾아야합니다 (후속 조치 등으로 덮어 쓰지 않았 으면 좋겠다). 플랫 파일에 텍스트를 추가하는 것이 더 간단하다는 것을 알았습니다. –