使用Windows指令碼進行邏輯備份

壹頁書發表於2013-11-11
開發、測試和演示的資料庫可以使用邏輯備份。
首先,得到所有非系統使用者,然後進行邏輯備份,最後刪除過期的資料。
配合Windows任務排程,可以實現定期備份。

backup.bat
  1. rem 設定備份路徑
  2. set backupdir=c:\tmp\

  3. rem 獲取所有使用者的列表
  4. @echo off
  5. @echo set echo off         >getUsers.sql
  6. @echo set feedback off    >>getUsers.sql
  7. @echo set newpage none    >>getUsers.sql
  8. @echo set pagesize 5000   >>getUsers.sql
  9. @echo set linesize 500    >>getUsers.sql
  10. @echo set verify off      >>getUsers.sql
  11. @echo set pagesize 0      >>getUsers.sql
  12. @echo set term off        >>getUsers.sql
  13. @echo set trims on        >>getUsers.sql
  14. @echo set linesize 600    >>getUsers.sql
  15. @echo set heading off     >>getUsers.sql
  16. @echo set timing off      >>getUsers.sql
  17. @echo set verify off      >>getUsers.sql
  18. @echo set numwidth 38     >>getUsers.sql
  19. @echo spool users.txt     >>getUsers.sql
  20. @echo select username from dba_users where account_status='OPEN' and username not in('SYSMAN','DBSNMP','SYSTEM','SYS','MGMT_VIEW'); >>getUsers.sql
  21. @echo spool off           >>getUsers.sql
  22. @echo exit                >>getUsers.sql
  23. sqlplus / as sysdba @getUsers.sql

  24. rem 備份
  25. for /f %%i in (users.txt) do (
  26.     exp userid='/ as sysdba' owner=%%i file=%backupdir%%%i_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=%backupdir%%%i_%date:~0,4%%date:~5,2%%date:~8,2%.log
  27. )

  28. rem 刪除7天之前的備份
  29. forfiles /P %backupdir% /D -7 /S /M * /C "cmd /c if @isdir==FALSE echo deleting @file>>%backupdir%log.txt && del /q @file"

  30. rem 清理
  31. del getUsers.sql
  32. del users.txt

  33. @echo on


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-776338/,如需轉載,請註明出處,否則將追究法律責任。

相關文章