如何利用DBMS_FILE_TRANSFER复制Oracle ASM文件

开发者在线 Builder.com.cn 更新时间:2007-07-30作者:开发者在线 来源:开发者在线

Listing B

set serverout on

DECLARE

   v_archivedir         VARCHAR2(30)    := 'ARCHDIR';
   v_tempdir            VARCHAR2(30)    := 'TEMPDIR';

   v_asm_logname        VARCHAR2(100);
   v_win_logname        VARCHAR2(100);

   v_first_log_seq      NUMBER          := 12;
   v_last_log_seq       NUMBER          := 14;
   v_log_seq            VARCHAR2(5);

   CURSOR c_logs IS
      SELECT name
      FROM v$archived_log
      WHERE sequence# BETWEEN v_first_log_seq AND v_last_log_seq
      ORDER BY sequence#;

BEGIN
     FOR i IN c_logs LOOP
        v_asm_logname := SUBSTR(i.name, 16);
        v_log_seq     := SUBSTR(v_asm_logname,4,5);
        v_win_logname := 'orcl_arc'||v_log_seq||'.log';

        DBMS_FILE_TRANSFER.COPY_FILE(v_archivedir,
                                     v_asm_logname,
                                     v_tempdir,
                                     v_win_logname);

        DBMS_OUTPUT.PUT_LINE(v_asm_logname||' copied to '||
             v_win_logname||'.');

     END LOOP;
END;
/

SQL> @copyasm_b
arc00012_0578762891.001 copied to orcl_arc00012.log.                            
arc00013_0578762891.001 copied to orcl_arc00013.log.                            
arc00014_0578762891.001 copied to orcl_arc00014.log.                            

PL/SQL procedure successfully completed.

SQL>

用户评论

  • 用户名
  • 评论内容