 |
|
Oracle exports from Windows Scripts
Oracle Database Tips by Donald Burleson |
Scheduling tasks such as Oracle
export backups can be challenging in a Windows environment
without a third-party approach such as JavaScript or Visual
Basic. It's tricky, but you can write old-fashioned DOS
bat files, a string of DOS prompt commands, to create an execute
an Oracle export on Windows.
Once tested, the bat file is
invoked with the Windows AT scheduling command.
For working examples of Oracle
exports in Windows scripts,
Jeff Hunter, author of "Conducting
the Java Job Interview" has a working
export_backup_online_full_9i.bat
DOS command script to invoke the Oracle export (the exp
command):
Lets examine
Hunter's export___.bat Oracle Windows script. Note that he
builds the exp parfile arguments into a DOS variable called
%PARFILE%, just like you can invoke Oracle directly from the DOS
prompt: e.g.
c:> exp=%PARFILE%:
REM
+--------------------------------------------------------------------------+
REM | VALIDATE COMMAND-LINE
PARAMETERS |
REM
+--------------------------------------------------------------------------+
if (%1)==() goto USAGE
if (%2)==() goto USAGE
if (%3)==() goto USAGE
REM
+--------------------------------------------------------------------------+
REM | VALIDATE ENVIRONMENT
VARIABLES |
REM
+--------------------------------------------------------------------------+
REM set ORABACKUP=C:\oracle\orabackup\JEFFDB\export
REM set ORALOG=C:\oracle\custom\oracle\log
REM set ORATMP=C:\oracle\custom\oracle\temp
if (%ORALOG%)==() goto ENV_VARIABLES
if (%ORATMP%)==() goto ENV_VARIABLES
if (%ORABACKUP%)==() goto ENV_VARIABLES
REM
+--------------------------------------------------------------------------+
REM | DECLARE ALL GLOBAL
VARIABLES. |
REM
+--------------------------------------------------------------------------+
set FILENAME=export_backup_online_full_9i
set DB_USERNAME=%1%
set DB_PASSWORD=%2%
set TNS_ALIAS=%3%
set PARFILE=%ORATMP%\%FILENAME%_%TNS_ALIAS%.parfile
set LOGFILE=%ORALOG%\%FILENAME%_%TNS_ALIAS%.log
set DUMPFILE=%ORABACKUP%\exp_full_%TNS_ALIAS%.dmp
REM
+--------------------------------------------------------------------------+
REM | REMOVE OLD LOG AND PARAMETER FILE(S).
|
REM
+--------------------------------------------------------------------------+
del /q %PARFILE%
del /q %LOGFILE%
REM
+--------------------------------------------------------------------------+
REM | WRITE EXPORT PARAMETER
FILE. |
REM
+--------------------------------------------------------------------------+
echo userid=%DB_USERNAME%/%DB_PASSWORD%@%TNS_ALIAS% > %PARFILE%
echo buffer=50000000 >> %PARFILE%
echo file=%DUMPFILE% >> %PARFILE%
echo compress=n >> %PARFILE%
echo grants=y >> %PARFILE%
echo indexes=y >> %PARFILE%
echo direct=no >> %PARFILE%
echo log=%LOGFILE% >> %PARFILE%
echo rows=y >> %PARFILE%
echo consistent=y >> %PARFILE%
echo full=y >> %PARFILE%
REM echo owner=(SCOTT) >> %PARFILE%
REM echo tables=(EMP, DEPT) >> %PARFILE%
echo triggers=y >> %PARFILE%
echo statistics=none >> %PARFILE%
echo constraints=y >> %PARFILE%
REM
+--------------------------------------------------------------------------+
REM | MOVE OLD EXPORT (DUMP)
FILE. |
REM
+--------------------------------------------------------------------------+
del /q %DUMPFILE%.backup
move %DUMPFILE% %DUMPFILE%.backup
REM
+--------------------------------------------------------------------------+
REM | PERFORM
EXPORT.
|
REM
+--------------------------------------------------------------------------+
exp parfile=%PARFILE%
REM
+--------------------------------------------------------------------------+
REM | SCAN THE EXPORT LOGFILE FOR
ERRORS. |
REM
+--------------------------------------------------------------------------+
echo ...
echo Analyzing log file for EXP- errors...
findstr /I /C:"EXP-" %LOGFILE%
if errorlevel 0 if not errorlevel 1 echo EXP- Errors:
%FILENAME% %TNS_ALIAS% %COMPUTERNAME% %DATE% %TIME% %LOGFILE%
echo ...
echo Analyzing log file for ORA- errors...
findstr /I /C:"ORA-" %LOGFILE%
if errorlevel 0 if not errorlevel 1 echo ORA- Errors:
%FILENAME% %TNS_ALIAS% %COMPUTERNAME% %DATE% %TIME% %LOGFILE%
echo ...
echo Analyzing log file for warnings...
findstr /I /C:"Export terminated successfully with warnings"
%LOGFILE%
if errorlevel 0 if not errorlevel 1 echo WARNING: %FILENAME% %TNS_ALIAS%
%COMPUTERNAME% %DATE% %TIME% %LOGFILE%
echo ...
echo Analyzing log file for errors...
findstr /I /C:"Export terminated unsuccessfully" %LOGFILE%
if errorlevel 0 if not errorlevel 1 echo ERROR: %FILENAME% %TNS_ALIAS%
%COMPUTERNAME% %DATE% %TIME% %LOGFILE%
echo ...
echo END OF FILE REPORT
echo Filename : %FILENAME%
echo Database : %TNS_ALIAS%
echo Hostname : %COMPUTERNAME%
echo Date : %DATE%
echo Time : %TIME%
echo EXP Log File : %LOGFILE%