DBLOG
» WTF
Toggle navigation
DBLOG
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
8、DG
9、集群相关
About Me
归档
标签
6、windos中 rman全备和归档分开
无
2025-08-29 00:07:55
2
0
0
admin
###全备 ```bat @echo off setlocal disabledelayedexpansion :: =============== 配置区域 =============== set ORACLE_SID=CATV set ORACLE_HOME=D:\Oracle\WINDOWS.X64_193000_db_home set BACKUP_DIR=E:\ExpdpOra\dumpdir set LOG_DIR=E:\ExpdpOra\log set FORMAT_DB=full_%%d_%%I_%%T_%%s_%%c.bak set FORMAT_CTRL=ctrl_%%T_%%s.bak set THREADS=10 :: 上传配置 set REMOTE_BASE=/home/gis/ set HOSTS=172.24.4.98:55112 172.24.4.99:55112 set USER=gis set PASSWORD=Lc_jcgx0 set WINSCP=E:\ExpdpOra\WinSCP-6.3.6-Portable\WinSCP.com :: ======================================= :: 主日志文件 set DATE_STR=%date:~0,4%%date:~5,2%%date:~8,2% set TIME_STR=%time:~0,2%%time:~3,2%%time:~6,2% set TIMESTAMP=%DATE_STR%_%TIME_STR% set MAIN_LOG=%LOG_DIR%\full_backup_%TIMESTAMP%.log call :main >> "%MAIN_LOG%" 2>&1 endlocal exit /b :main setlocal enabledelayedexpansion echo ===== 全量备份开始 [%DATE% %TIME%] ===== echo 备份开始时间: %DATE% %TIME% echo 备份目录: %BACKUP_DIR% echo 日志目录: %LOG_DIR% echo 线程数: %THREADS% echo. :: 创建目录 if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%" if not exist "%LOG_DIR%" mkdir "%LOG_DIR%" :: 设置Oracle环境 set PATH=%ORACLE_HOME%\bin;%PATH% echo Oracle Home: %ORACLE_HOME% :: 数据库备份日志 set LOG_DB=%LOG_DIR%\full_db_%TIMESTAMP%.log echo 数据库备份日志: %LOG_DB% :: ========== 执行数据库备份 ========== echo [步骤1/4] 正在创建数据库备份... ( echo run { for /L %%i in (1,1,%THREADS%) do ( echo allocate channel ch%%i device type disk format '%BACKUP_DIR%\%FORMAT_DB%'; ) echo backup as compressed backupset database; for /L %%i in (1,1,%THREADS%) do ( echo release channel ch%%i; ) echo } ) > %BACKUP_DIR%\full_backup_db.rman echo 执行RMAN数据库备份... rman target / nocatalog cmdfile="%BACKUP_DIR%\full_backup_db.rman" log="%LOG_DB%" if %errorlevel% neq 0 ( echo [错误] 数据库备份失败! 错误码: %errorlevel% exit /b %errorlevel% ) else ( echo 数据库备份成功完成 ) del "%BACKUP_DIR%\full_backup_db.rman" >nul 2>&1 :: 控制文件备份日志 set LOG_CTRL=%LOG_DIR%\full_ctrl_%TIMESTAMP%.log echo 控制文件备份日志: %LOG_CTRL% :: ========== 执行控制文件备份 ========== echo [步骤2/4] 正在创建控制文件备份... ( echo run { echo allocate channel ch1 device type disk format '%BACKUP_DIR%\%FORMAT_CTRL%'; echo backup as compressed backupset current controlfile spfile; echo release channel ch1; echo } ) > %BACKUP_DIR%\full_backup_ctrl.rman echo 执行RMAN控制文件备份... rman target / nocatalog cmdfile="%BACKUP_DIR%\full_backup_ctrl.rman" log="%LOG_CTRL%" if %errorlevel% neq 0 ( echo [错误] 控制文件备份失败! 错误码: %errorlevel% exit /b %errorlevel% ) else ( echo 控制文件备份成功完成 ) del "%BACKUP_DIR%\full_backup_ctrl.rman" >nul 2>&1 :: ========== 上传到远程服务器 ========== echo [步骤3/4] 正在上传备份文件到远程服务器... set UPLOAD_SUCCESS=0 set TOTAL_HOSTS=0 set REMOTE_DIR=%REMOTE_BASE%fullback_%DATE_STR% :: 禁用延迟扩展以避免特殊字符问题 setlocal disabledelayedexpansion for %%H in (%HOSTS%) do ( set /a TOTAL_HOSTS+=1 echo 正在上传到 %%H (目录: %REMOTE_DIR%)... "%WINSCP%" /command ^ "open sftp://%USER%:%PASSWORD%@%%H" ^ "mkdir ""%REMOTE_DIR%""" ^ "cd ""%REMOTE_DIR%""" ^ "put ""%BACKUP_DIR%\full_*.bak""" ^ "put ""%BACKUP_DIR%\ctrl_*.bak""" ^ "put ""%LOG_DB%""" ^ "put ""%LOG_CTRL%""" ^ "put ""%MAIN_LOG%""" ^ "exit" if !errorlevel! equ 0 ( echo 成功上传到 %%H set /a UPLOAD_SUCCESS+=1 ) else ( echo [警告] 上传到 %%H 失败,错误码: !errorlevel! ) ) endlocal :: ========== 清理本地文件 ========== echo [步骤4/4] 清理本地临时备份文件... del /Q "%BACKUP_DIR%\*.bak" >nul 2>&1 echo ===== 全量备份完成 [%DATE% %TIME%] ===== echo 备份耗时: %TIME% echo 备份文件已上传到 %UPLOAD_SUCCESS%/%TOTAL_HOSTS% 台服务器 echo 远程目录: %REMOTE_DIR% echo 本地日志文件保留在: echo - 主日志: %MAIN_LOG% echo - 数据库备份日志: %LOG_DB% echo - 控制文件备份日志: %LOG_CTRL% echo 全量备份流程完成! endlocal exit /b ``` ###归档备份 ```bat @echo off setlocal disabledelayedexpansion :: =============== 配置区域 =============== set ORACLE_SID=CATV set ORACLE_HOME=D:\Oracle\WINDOWS.X64_193000_db_home set BACKUP_DIR=E:\ExpdpOra\dumpdir\archive set LOG_DIR=E:\ExpdpOra\log set FORMAT_STR=arch_%%d_%%T_%%s.arc set THREADS=10 :: 上传配置 set REMOTE_BASE=/home/gis/ set HOSTS=172.24.4.98:55112 172.24.4.99:55112 set USER=gis set PASSWORD=Lc_jcgx0 set WINSCP=E:\ExpdpOra\WinSCP-6.3.6-Portable\WinSCP.com :: ======================================= :: 主日志文件 set DATE_STR=%date:~0,4%%date:~5,2%%date:~8,2% set TIME_STR=%time:~0,2%%time:~3,2%%time:~6,2% set TIMESTAMP=%DATE_STR%_%TIME_STR% set MAIN_LOG=%LOG_DIR%\arch_backup_%TIMESTAMP%.log call :main >> "%MAIN_LOG%" 2>&1 endlocal exit /b :main setlocal enabledelayedexpansion echo ===== 归档备份开始 [%DATE% %TIME%] ===== echo 备份开始时间: %DATE% %TIME% echo 备份目录: %BACKUP_DIR% echo 日志目录: %LOG_DIR% echo 线程数: %THREADS% echo. :: 创建目录 if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%" if not exist "%LOG_DIR%" mkdir "%LOG_DIR%" :: 设置Oracle环境 set PATH=%ORACLE_HOME%\bin;%PATH% echo Oracle Home: %ORACLE_HOME% :: 备份日志文件 set LOG_FILE=%LOG_DIR%\arch_%TIMESTAMP%.log echo 备份日志文件: %LOG_FILE% :: ========== 执行归档备份 ========== echo [步骤1/4] 正在创建归档备份... set RMAN_SCRIPT=%BACKUP_DIR%\arch_backup_%TIMESTAMP%.rman ( echo run { for /L %%i in (1,1,%THREADS%) do ( echo allocate channel ch%%i device type disk format '%BACKUP_DIR%\%FORMAT_STR%'; ) echo backup as compressed backupset archivelog all; for /L %%i in (1,1,%THREADS%) do ( echo release channel ch%%i; ) echo } ) > %RMAN_SCRIPT% echo 执行RMAN归档备份... rman target / nocatalog cmdfile="%RMAN_SCRIPT%" log="%LOG_FILE%" if %errorlevel% neq 0 ( echo [错误] 归档备份失败! 错误码: %errorlevel% exit /b %errorlevel% ) else ( echo 归档备份成功完成 ) del "%RMAN_SCRIPT%" >nul 2>&1 :: ========== 上传到远程服务器 ========== echo [步骤2/4] 正在上传备份文件到远程服务器... set UPLOAD_SUCCESS=0 set TOTAL_HOSTS=0 set REMOTE_DIR=%REMOTE_BASE%archive_%DATE_STR% :: 禁用延迟扩展以避免特殊字符问题 setlocal disabledelayedexpansion for %%H in (%HOSTS%) do ( set /a TOTAL_HOSTS+=1 echo 正在上传到 %%H (目录: %REMOTE_DIR%)... "%WINSCP%" /command ^ "open sftp://%USER%:%PASSWORD%@%%H" ^ "mkdir ""%REMOTE_DIR%""" ^ "cd ""%REMOTE_DIR%""" ^ "put ""%BACKUP_DIR%\*.arc""" ^ "put ""%LOG_FILE%""" ^ "put ""%MAIN_LOG%""" ^ "exit" if !errorlevel! equ 0 ( echo 成功上传到 %%H set /a UPLOAD_SUCCESS+=1 ) else ( echo [警告] 上传到 %%H 失败,错误码: !errorlevel! ) ) endlocal :: ========== 清理本地文件 ========== echo [步骤3/4] 清理本地临时文件... del /Q "%BACKUP_DIR%\*.arc" >nul 2>&1 echo ===== 归档备份完成 [%DATE% %TIME%] ===== echo 备份耗时: %TIME% echo 备份文件已上传到 %UPLOAD_SUCCESS%/%TOTAL_HOSTS% 台服务器 echo 远程目录: %REMOTE_DIR% echo 本地日志文件保留在: echo - 主日志: %MAIN_LOG% echo - 备份日志: %LOG_FILE% echo 归档备份流程完成! endlocal exit /b ```
上一篇:
6、ADG常见故障
下一篇:
6、各种空间查询
0
赞
2 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网