2013년 11월 26일 화요일

Oracle Procedure소스를 파일로 백업받기(오라클 프로시져별로), 오라클백업교육

Oracle Procedure소스를 파일로 백업받기(오라클 프로시져별로), 오라클백업교육

프러시져 이름을 읽어 루프 돌면서 소스를 SELECT후 SPOOL 파일로 만드는 겁니다.

현재 디렉토리 아래 procedures 라는 디렉토리를 만든 후 export_procedure.sql을 실행하시면

Procedure이름.PRC 파일이 procedures 폴더에 만들어 집니다...
 
참고하세요~~~

[export_procedure.sql]

SET SERVEROUTPUT ON SIZE 1000000
SET ECHO OFF VERIFY OFF FEEDBACK OFF TRIMSPOOL ON PAGES 0 LINES 512


SET TERMOUT OFF
/*

-------------------------------------
--
--  SCRIPT:        export_procedure.sql
--
--  AUTHOR:        Jong-Chul, Lee

-------------------------------------
*/

SET TERMOUT ON
PROMPT
PROMPT PROCEDURES export utility
PROMPT
PROMPT This utilty exports all of the current schema's procedures code into
PROMPT a subdirectory called procedures.
PROMPT

SET TERMOUT OFF

SPOOL temp_procedure_extract.sql
PROMPT SET ECHO OFF VERIFY OFF FEEDBACK OFF TRIMSPOOL ON TERMOUT OFF PAGES 0
LINES 512

DECLARE

    /*
    || This cursor extracts each procedure from user_procedures table
    */
    CURSOR cur_procedure_code
    IS
      SELECT    distinct up.object_name,
                up.object_name || '.PRC' spool_file
      FROM      user_procedures up
      ORDER BY  up.object_name;

BEGIN

  FOR cur_procedure_code_row IN cur_procedure_code
  LOOP
      dbms_output.put_line('spool procedures/' || user || '_' ||
    cur_procedure_code_row.spool_file);
      dbms_output.put_line('@extract_procedure ' ||
cur_procedure_code_row.object_name );
      dbms_output.put_line('spool off');

  END LOOP;

END;
/

SPOOL OFF
@temp_procedure_extract




----------------------------------
[extract_procedure.sql]
----------------------------------
-- Procedure 명을 인자로 받아 소스를 SELECT 합니다.

SET HEAD OFF VERIFY OFF
SET LONG 1000000

/*
---------------------------------------
--
--  SCRIPT:        extract_procedure.sql
--
--  AUTHOR:        Jong-Chul, Lee

---------------------------------------
*/

SELECT        b.text
        FROM    user_procedures a,user_source b
          WHERE    a.object_name = '&1'
            AND    a.object_name = b.name;

PROMPT /
PROMPT




[윤창호]
좋은 방법이네요...
좀 더 간단한 방법이 있어서 소개 드립니다.
이건 프로시져 뿐 아니라 모든 OBJECT의 소스를 받아 볼 수 있구요.
소스를 받아내는 SQL을 만들어 주는 SQL입니다.

SELECT OWNER,'SELECT DBMS_METADATA.GET_DDL('||''''||OBJECT_TYPE||''''||','||''''||OBJECT_NAME||''''||')'||'||'||''''||';'||''''||' FROM DUAL ;'
FROM DBA_OBJECTS
WHERE OWNER = 'USER_NAME'

[출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=oracleTip&wr_id=666



[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [12/02]안드로이드개발자과정
  [12/02]iPhone 하이브리드 앱 개발 실무과정
  [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
  [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
  [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
  [12/23][기업100%환급]SQL기초에서 Schema Object까지

[평일야간]
  [12/03]웹퍼블리싱 마스터
  [12/03]iPhone하이브리드앱개발실무과정
  [12/04]SQL초보에서실전전문가까지
  [12/05]Spring3.X, MyBatis, Hibernate실무과정
  [12/09]C#,ASP.NET마스터
  [12/09]JAVA&WEB프레임워크실무과정
  [12/12]자바초보에서안드로이드까지

[주말]
  [11/30]SQL초보에서전문가까지
  [11/30]C#,ASP.NET마스터
  [12/07]Spring3.X,MyBatis,Hibernate실무과정
  [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
  [12/14]자바초보에서안드로이드까지
  [12/14]웹퍼블리싱 마스터


댓글 없음:

댓글 쓰기