Oracle数据库备份恢复

原创文章5年前 (2019)发布 fdadmin
2,935 0 0

@echo off
echo ======================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 使用当前日期命名备份log。
echo ======================================================
::————————————————————-::
::设置用户名、密码和要导入数据库。
::导入时使用的用户,管理员用户名和密码,用于创建导入
set USER=system
::导入时用户密码
set PASSWORD=system
::修改部分—————————————————–
::原始数据库用户名,导入时使用
set FUSER=EFMIS_150018
::导入或导出数据库的用户名
set ORACLEUSER=EFMIS_1500_TEST_20180228
::数据库IP 地址 本机可用127.0.0.1或 实地址
set IP=192.168.1.222
::数据库实例,默认orcl
set ODBC=orcl
::parallel 同时使用的线程 4 表示 4线程,如果服务器配置高,则可用多几个线程
set expPARALLEL=8
set uu=%%U
::数据库文件,多个文件用,(英文逗号)隔开————————–必须修改
set IMPDATADIR=EFMIS_150018_wwd20180228.dmp

::数据泵导入时存放数据库备份文件的路径,如果使用普通导入,改为你的数据库存放路径即可 如E:db
set local_tnsname=DATA_PUMP_DIR_DB
::————————————————————-::
::以“YYYYMMDD”格式取出当前时间。
::取年月日
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::取值到秒
::需要导入到那个数据库
set DATABASE=%IP%/%ODBC%
::数据库导出文件
set expdmp=%ORACLEUSER%
::生成的数据库导入日志文件
set LOGDIR=imp_%ORACLEUSER%
::导出日志文件,一般获取当前导出用户名为日志名称
set expLOG=%ORACLEUSER%
::原始数据库名称
set fromuser=%FUSER%
::导入到那个用户
set TOUSER=%ORACLEUSER%
::排除统计信息
::导出
set exppp=STATISTICS
::导入
::过滤掉,不包括OBJECT_GRANT 对象权限
set imppp=OBJECT_GRANT
::用于压缩和去掉无效空格
:: compression=all

expdp USER/PASSWORD@orcl directory=%local_tnsname% dumpfile=%expdmp%_%BACKUPDATE%_%uu%.dmp logfile=%expLOG%_%BACKUPDATE%.log schemas=%TOUSER% exclude=%exppp% compression=all PARALLEL=%expPARALLEL%

::生产的sql 为
echo “生成的sql 为” impdp %USER%/%PASSWORD%@%DATABASE% directory=%local_tnsname% dumpfile=%IMPDATADIR% logfile=%LOGDIR%_%BACKUPDATE%.log schemas=%fromuser% PARALLEL=%expPARALLEL% remap_schema=%fromuser%:%TOUSER% transform=OID:N,SEGMENT_ATTRIBUTES:N

echo 开始执行
::数据库导入
::数据泵导入命令::
impdp %USER%/%PASSWORD%@%DATABASE% directory=DATA_PUMP_DIR dumpfile=%IMPDATADIR% logfile=%LOGDIR%_%BACKUPDATE%.log schemas=%fromuser% PARALLEL=%expPARALLEL% remap_schema=%fromuser%:%TOUSER% transform=OID:N,SEGMENT_ATTRIBUTES:N
::简约数据泵导入命令
::impdp %USER%/%PASSWORD%@%DATABASE% directory=%local_tnsname% dumpfile=%IMPDATADIR% logfile=%LOGDIR%_%BACKUPDATE%.log schemas=%TOUSER% transform=OID:N,SEGMENT_ATTRIBUTES:N exclude=%imppp%
::普通方法导入命令
::imp %USER%/%PASSWORD%@%DATABASE% file=%local_tnsname%%IMPDATADIR% log=%local_tnsname%%LOGDIR%_%BACKUPDATE%.log fromuser=%fromuser% touser=%TOUSER% feedback=1000
::数据库导出
::数据泵导出
::expdp %USER%/%PASSWORD%@%DATABASE% directory=%local_tnsname% dumpfile=%expdmp%_%BACKUPDATE%_%uu%.dmp logfile=%expLOG%_%BACKUPDATE%.log schemas=%TOUSER% exclude=%exppp% compression=all PARALLEL=%expPARALLEL%
::普通导出
::exp %USER%/%PASSWORD%@%DATABASE% file=%local_tnsname%%expdmp%_%BACKUPDATE%.dmp log=%local_tnsname%%expLOG%_%BACKUPDATE%.log feedback=1000 exclude=%exppp%
::删除30天前的备份。
echo 数据库备份目录
set files=%local_tnsname%
echo 删除7天前的备份。
::forfiles /p “%files%” /s /m *.* /d -30 /c “cmd /c del @path”
::forfiles /p “%files%” /s /m *.* /d -30 /c “cmd /c del @path”
echo ‘执行完成’
pause

© 版权声明

相关文章

暂无评论

暂无评论...