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>
用户评论