Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> http://www.orsweb.com ... ? robocopy ? Perl ? VB ? / Re: ORACLE-L Digest -- Volume 2002, Number 095
( http://www.orsweb.com/master-list/ )
-
http://www.orsweb.com/downloads/source/418.html
rem Script Description: This script deletes the old archivelog files that
rem fill up disk space. The old archivelogs are deleted automatically rem once a week. This script contains a stored procedure script, rem the command to submit a batch job, and the AT scheduler command. rem It is designed to work with Windows NT and Oracle 7.x. rem Modifications need to be to the Stored Procedure to make it run rem under Oracle8. rem rem This procedure creates a command file in C:\DBBACKUPS called rem 'archlog_del.cmd' which can be scheduled to execute by using the rem AT command in Windows NT. The procedure is submitted as rem a batch job which is scheduled once a week and deletes old rem archives. rem rem Oracle8 Implementation - rem The following changes are necessary: rem rem check trunc(time) < trunc(sysdate)-10, where time is in the DATE rem field and the table name is V$ARCHIVED_LOG. In version 7.x, rem time is VARCHAR2. The procedure uses a pre-defined package rem called UTL_FILE. The init.ora should be modified to include rem a parameter called UTL_FILE_DIR=C:\DBBACKUPS so that it can rem write in that destination directory.rem
CREATE OR REPLACE PROCEDURE archive_delete AS
archive_name UTL_FILE.FILE_TYPE;
archive_file varchar2(100); BEGIN
DECLARE CURSOR c1 IS
SELECT 'del '||name name
FROM V_$ARCHIVED_LOG WHERE trunc(COMPLETION_TIME) < trunc(sysdate)-10 AND trunc(COMPLETION_TIME) >=trunc(sysdate)-20;
BEGIN
archive_name := UTL_FILE.FOPEN('C:\DBBACKUPS','archlog_del.cmd','w');
FOR rec IN c1
LOOP
archive_file := rec.name;
UTL_FILE.PUT_LINE(archive_name,archive_file);
END LOOP;
UTL_FILE.FCLOSE(archive_name);
END;
END;
/
SVRMGR> VARIABLE jobno number; SVRMGR> begin 2> EXECUTE DBMS_JOB.SUBMIT(:jobno, 3> 'archive_delete;',trunc(sysdate)+2/24,'(trunc(sysdate+2/24)+7'); 4> end; 5> / ***************************************************************************************Rem The following AT command executes C:\DBBACKUPS\archlog_del.cmd every Rem Monday Morning at 3:00 a.m and creates a log file at C:\DBBACKUPS\arch_delete.log.
more:
http://www.google.com/search?hl=en&q=script+delete+old+files+nt
(several solutions shown at the above require Perl or VB)
In case someone else hasn't mentioned it:
(for Robocopy, you need the M$ Re$ource Kit)
http://www.win2000mag.com/Files/7045/7045.zip
:: LISTING 2: Script to Delete Old Files
@ECHO OFF
@title MOVING FILES OLDER THAN 120 DAYS...
GOTO :NEXT
:: You can use the Net Use commands to run this script
:: with the scheduler/WINAT service:
:: net use \\Your_Server \IPC$ "" /User:""
:: net use \\Your_Server \IPC$ Password /User:Domain\Username
:NEXT
SETLOCAL
:: Get date for use in filename.
for /F "tokens=1,2,3 delims=/ " %%i in ('date /T') do set date1=%%j-%%k
:: Clear old files and empty directories for Robocopy file move operation.
del /f /q /s D:\OldFiles\*.*
rmdir /q /q D:\OldFiles
:: Robocopy the files.
Robocopy.exe D:\AllFiles D:\OldFiles /minage:120 /sec /mov /s /np /eta /r:1 /w:1
/log:D:\DeletionLogs\%date1%_robo_log.txt
ENDLOCAL
CLS
EXIT
http://www.win2000mag.com/Articles/Index.cfm?ArticleID=7045
...
Q: How can I create an NT shell script that deletes files with a date older than MMDDYY from a directory?
To delete files by date, you need to install the Microsoft Windows NT Server 4.0 Resource Kit's Robocopy utility. Robocopy has a switch that lets you specify whether you want to copy or move files that are older than a certain age. You then take these steps:
Set up a directory in which to put the old files that you want to delete. Name the directory OldFiles or a similar intuitive name. Robocopy will move users' old files into this OldFiles destination folder. Write a script that first deletes all the files and folders in the OldFiles folder and then calls Robocopy. Listing 2 contains a script that you can adapt. In your script, have Robocopy move all the files that are older than a specified number of days (e.g., 120 days) or a specified date (e.g., 070199) from the source directory to the OldFiles folder. Robocopy automatically clears the source area of any old files, and you can use the /move switch instead of the /mov switch to clear any empty directories. Schedule the script to run at a specified interval with the Net Use command.
Keeping users' old files in the OldFiles folder until the next scheduled deletion run rather than immediately deleting them can save you work down the road. If users need a file that Robocopy removed, you can restore the file from the OldFiles folder rather than from the backup tape.
---end---
ORACLE-L Digest -- Volume 2002, Number 095
> --- Mark Leith <mark_at_cool-tools.co.uk> wrote: > Hi > All, > > > > To save me re-inventing the wheel: > > > > Does anybody have a batch script (that runs on NT) > > that deletes archive log > > files that are older than X days old? I've looked at > > the DEL command, but > > this doesn't have a date/time based attribute > > parameter.. > > > > Has anybody been through this already? >
-- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Eric D. Pierce INET: PierceED_at_csus.edu Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).Received on Fri Apr 05 2002 - 16:58:19 CST
![]() |
![]() |